Cron job throwing error "service: not found ", но при выполнении вручную в терминальном скрипте работает нормально

service jbossas status -> команда будет проверять статус jbossas

jbossas (PID) запущен (если jbossas запущен)

jbossas остановлен (если jbossas остановлен)

 #!/bin/ksh #set -x OUT_LOG="$1" stus=$(service jbossas status) var=$(ps -ef | grep -i '[/]jboss') hname=$(hostname) if [ -z "$var" ]; then echo "service jbossas status" >>$OUT_LOG echo "$stus" >>$OUT_LOG mail -s "Please check for possbile impact $(stus)" aaa@aaa.com << $OUT_LOG else echo "'$stus'" fi 

ПРИМЕЧАНИЕ. Процесс JBOSS не запускается на сервере, так что o / p будет отключен jboss.

Если я запускаю скрипт вручную в оболочке (подсказка cmd экрана balck)

 ./jboss_status.ksh 

Я получаю почту с ниже темы и скрипта работает нормально

«Пожалуйста, проверьте, возможно ли влияние jbossas остановлено»

но когда я планирую его в cron

 * * * * * /aaa/jboss_status.ksh > /aaa/jboss_status.ksh.error 2>&1 

Я получаю почту с нижестоящим предметом «Пожалуйста, проверьте, чтобы нанести ущерб» ПРИМЕЧАНИЕ: «jbossas is stop» не печатается в конце темы

При получении ниже ошибки в файле ошибки, созданной cron

 /aaa/jboss_status.ksh[20]: service: not found [No such file or directory] 

Сценарий выполняется отлично в cron, но результат, возвращаемый

 command : service jbossas status op: jboss stopped 

не печатается в теме

Возможно, вам понадобится источник bash_profile или bash_rc в верхней части вашего скрипта

на ubuntu

 source /home/<user>/.bash_profile 

некоторые другие linuxes

 source /home/<user>/.bash_rc 

Вы проверяли переменную PATH для пользователя, выполняющего cron, он должен иметь путь к используемому сценарию или его зависимостям. Сравните пути с:

 echo $PATH 

под пользователем, который вы запускаете скрипт вручную, и с пользователем, который запускает скрипт в cron.