У меня обычно есть несколько проблем с тем, как крон выполняет сценарии, поскольку у них обычно нет моей установки среды. Существует ли способ вызвать удар (?) таким же образом, крон делает так, я мог сценарии тестирования прежде, чем установить их?
Добавьте это в свой cron:
30 08 * * * env > ~/cronenv
После запуска сделайте следующее:
env - `cat ~/cronenv` /bin/sh
Это предполагает, что ваш cron запускает /bin/sh, который является стандартным независимо от стандартной оболочки пользователя.
Вы можете запустить:
env - your_command arguments
Это запускает your_command с пустой средой.
Создайте задание CRON, которая запускает ENV и перенаправляет STDOUT в файл. Используйте файл рядом с «env -», чтобы создать ту же среду, что и работа CRON.
Я не верю, что есть; Единственный способ, которым я знаю, чтобы проверить работу CRON, состоит в том, чтобы настроить его, чтобы запускать минуту или два в будущем, а затем подождать.
CRON обеспечивает только эту среду по умолчанию:
Главная
Домашний каталог пользователя Логин пользователя
Вход пользователя Путь = / usr / bin: / usr / SBIN
Shell = / usr / bin / sh
Если вам нужно больше, вы можете источник скрипта, в котором вы определяете свою среду перед таблицей планирования в Crontab.
Не забывайте, что поскольку родитель CRON - это init, он запускает программы без контролирующего терминала. Вы можете имитировать, что с таким инструментом:
По умолчанию cron
выполняет свои задания, используя любую идею вашей системы о sh
есть. Это может быть фактическая оболочка Bourne или dash
, ash
, ksh
или bash
(или другой) с символической ссылкой на sh
(и в результате работает в режиме POSIX).
Лучше всего убедиться, что в ваших сценариях есть все, что им нужно, и предположить, что для них ничего не предусмотрено. Следовательно, вам следует использовать полные спецификации каталогов и самостоятельно устанавливать переменные среды, такие как $ PATH
.