Не могу печатать ^ и `

Почти все проблемы с корректным запуском скриптов из командной строки, но не из cron возникают из-за настройки переменной PATH. Согласно man 5 crontab для Vixie cron:

   On the Debian GNU/Linux system, cron supports the pam_env  module,  and
   loads  the  environment  specified  by  /etc/environment and /etc/secu‐
   rity/pam_env.conf.    It   also   reads   locale    information    from
   /etc/default/locale.   However,  the  PAM  settings do NOT override the
   settings described above nor any settings in the crontab  file  itself.
   Note  in particular that if you want a PATH other than "/usr/bin:/bin",
   you will need to set it in the crontab file.

Хотя детали могут быть другими на других системах и/или других cron реализациях PATH, который скрипт получает от cron, скорее всего, будет более ограниченным, чем тот, что в вашем shell.

Это означает, что все, что вызывает ваш скрипт (или вызываемые из него скрипты/программы), находящееся, например, в /usr/local/bin, не будет найдено при запуске, вызванном из cron.

Вы можете проверить это, вызвав ваш скрипт следующим образом:

 PATH=/usr/bin:/bin /home/username/test.sh

Вы можете решить эту проблему, расширив путь в файле crontab:

 PATH = /usr/local/bin:/usr/bin:/bin

перед фактической строкой вызова вашего скрипта. Переменные не будут подставляться (поэтому не делайте PATH = /usr/local/bin:$PATH).

Также хорошей практикой является включение оператора echo в какой-либо файл журнала в верхней части вашего скрипта:

 TSTLOG=/var/tmp/myscript.log
 echo "invoking script" > "$TSTLOG"
 date >> "$TSTLOG"
 echo "$PATH" >> "$TSTLOG"

(здесь специально перезаписывается echo). Так вы сможете проверить, что ваша программа была вызвана, и какое окружение вызвало это.

Также следует проверить почту. На самой системе, если система не настроена на пересылку почты на ваш обычный аккаунт. Многие письма cron остаются незамеченными, потому что нет MAILTO=your_email@your.provider, и система просто помещает сообщения туда, где их может прочитать локальная учетная запись, используемая для cron.

0
28.02.2018, 09:27
1 ответ

Pude solucionar este problema usando otra variación de diseño de teclado:German (Macintosh, elimitate dead key).

Sin embargo, esto elimina las teclas muertas por completo, por lo que no puedo escribir letras acentuadas usando teclas muertas.

0
28.01.2020, 04:30

Теги

Похожие вопросы