У меня есть этот пользовательский кронтаб (доступ через команду кронтаб -e):Linux кронтаб оленья кожа запустить скрипт
# m h dom mon dow command
*/3 * * * * sh /home/FRAPS/Desktop/cronCheck.sh
Сценарий cronCheck.sh выглядит следующим образом:
#!/bin/sh
SERVICE='Script'
if ps ax | grep -v grep | grep -i "$SERVICE" > /dev/null
then
echo "######## $SERVICE service running, everything is fine ##################\n" >> CronReport.txt
else
echo "$SERVICE is not running. Launching it now\n" >> CronReport.txt
perl Script.pl
fi
Когда я запускаю сценарий (cronCheck.sh) из своего собственного каталога, он работает как шарм, но когда cron запускает его, он всегда работает «# $ SERVICE service, все нормально ###» , несмотря на то, что «Script» не работает.
Спасибо,
Это, также, удивительно хрупкое (хотя и не необычно). Например, если какой-либо другой пользователь запускает команду с «Сервис» в любом месте своего имени, ваш сценарий будет думать, что все в порядке. Подумайте, вместо этого, фактически тестирование услуги вверх, например. пытаясь подключиться к нему. – telent