[Этот] вопрос о, посмотрите, что ток выполняет процессы крона?
Да
Для уничтожения процесса вручную, один путь состоит в том, чтобы использовать pkill
Я думал о pkill/killall, но некоторые мои команды в crontab файле соответственно! это означает, что после окончания команды, следующая будет запущена! например:
sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
Так, Если я уничтожаю wget
, компьютер будет выключен!!!-> я хочу уничтожить задачу крона полностью, не часть ее!
Следующее pkill
проблема: Что относительно сценариев? (Я импортировал некоторые сценарии удара к crontab -e
) --> sudo pkill ???
Во-первых, используйте только одну команду на строку в crontab. Измените эту crontab строку:
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
таким образом, это похоже:
00 10 * * * /path/to/my/crontab/script1.sh
и создайте /path/to/my/crontab/script1.sh
с этим содержанием:
#!/bin/bash
/usr/bin/wget LINK
shutdown -h now
Конечно, не забывайте давать ему разрешение выполнения:
chmod +x /path/to/my/crontab/script1.sh
Во-вторых, Вы видите выполнение crontab задачи, в полезном и читаемом формате, в выводе:
ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"
Они появятся в первых строках, чем-то вроде этого:
1108 1108 cron
4288 1108 \_ CRON
4289 4289 \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290 4289 \_ /bin/bash /path/to/my/crontab/script1.sh
4295 4289 \_ /usr/bin/wget LINK
Первым столбцом является PID, второй идентификатор Сессии, и треть является командой, запущенной кроном. Можно уничтожить все процессы, связанные с определенной задачей крона с помощью идентификатора Сессии, таким образом, в примере выше Вас должен уничтожить идентификатор 4289 Сессии:
pkill -s 4289
Чтобы убить процесс вручную, можно использовать pkill
. pkill остановит все процессы, которые имеют следующий шаблон в своем имени. например, чтобы остановить все процессы wget, используйте:
sudo pkill wget
измените свой cronjob следующим образом
00 10 * * * /usr/bin/wget LINK && shutdown -h now
Это должно работать, потому что &&
означает, что вторая команда выполняется только тогда, когда первая была завершена правильно (возвращая статус 0 на консоль / system), чего не должно быть (потому что процесс был убит пользователем и он должен вернуть другое значение, кроме 0).