и я новичок в linux, извините, если этот вопрос такой тупой. Я хотел бы знать, чтобы создать crontab правильно, я создал работу, как указано ниже:
* * * * * /usr/src/debug/http/cron_job.sh >/dev/null 2>&1
внутри cron_job.sh, как указано ниже
pidof html
if [ 0 = $? ]
then
echo running
else
cd /usr/src/debug/http/
./html
fi
но когда я проверяю запущенную программу, он показывает, что
2738 ? ... ./html
2748 ? ... ./html
2788 ? ... ./html
его кажется дубликат он запускает приложение, есть ли какие-либо неправильные с моей настройкой? любезно дайте мне знать, как решить эту проблему?
спасибо за вашу помощь.
Ваше задание cron запускается с его текущим рабочим каталогом, установленным на домашний каталог пользователя, которому принадлежит задание. Когда вы указываете сценарий для выполнения как /usr/src/debug/http/cron_job.sh
, это , а не не приводит к изменению рабочего каталога.
Итак, pidof html
фактически делает то же самое, что и pidof $ HOME / html
. Позже в сценарии выясняется, что исполняемый файл html
на самом деле находится в / usr / src / debug / http / html
, поэтому команде pidof html
требуется полный путь к исполняемому файлу, который вы тестируете, поэтому замените его на:
pidof /usr/src/debug/http/html
Если / usr / src / debug / http / html
на самом деле является сценарием, вам также необходимо добавить -x
option:
pidof -x /usr/src/debug/http/html
Другой способ исправить сценарий - просто переместить команду cd / usr / src / debug / http
в первую строку сценария задания cron, так что сценарий всегда будет переходить в правильный каталог, прежде чем даже пытаться проверить существование процесса html
.