Я пытаюсь запустить скрипт удара как задание крона каждые 15 минут.
Простые вызовы сценария удара программа Java. Я сделал запись в crontab для петляния каждые 15 минут и сохранил его, но он ничего не сделает?
crontab-e
*/15 * * * * /home/marshell/graphite_cronjobs/Run_Cron_Read_Send_CapacityData_To_Graphite.sh
Run_Cron_Read_Send_CapacityData_To_Graphite.sh
java Cron_Read_Send_CapacityData_To_Graphite >> Cron_Read_Send_CapacityData_To_Graphite.log
Здесь существует две возможных проблемы. В первую очередь, крон выполняет задания в специальной оболочке, которая не читает Ваш персональный $PATH. Если java
не будет в /usr/bin
или /bin
, это не будет доступно крону. От man 5 crontab
:
Несколько переменных среды настраиваются автоматически кроном (8) демон. SHELL установлен на/bin/sh и LOGNAME и ДОМОЙ установлен от/etc/passwd строки владельца crontab.
ПУТЬ установлен к "/usr/bin:/bin". ДОМАШНИЙ, SHELL и ПУТЬ могут быть переопределены настройками в crontab; LOGNAME является пользователем, которого работа выполняет от и не может быть сменена.
Так, используйте полный путь для java
вместо этого. Следующий выпуск - то, что Ваш сценарий удара называет Java на файле с относительным путем. Это предполагает, что сценарий будет запущен из того же каталога как файл Java. Снова, дело обстоит не так. Так, всегда используйте полные пути для своих сценариев, если Вы хотите, чтобы они работали как ожидалось кроном:
/path/to/java /path/to/Cron_Read_Send_CapacityData_To_Graphite >> /path/to/Cron_Read_Send_CapacityData_To_Graphite.log
, С другой стороны, можно установить $PATH
в самом crontab:
PATH=$PATH:/opt/bin
*/15 * * * * /home/marshell/graphite_cronjobs/Run_Cron_Read_Send_CapacityData_To_Graphite.sh