- Как я могу увидеть задачи crontab, которые выполняются?
- Как я могу остановить задачи crontab, которые выполняются, вручную?
Является ли [этот] вопрос о текущих запущенных процессах cron?
да
Чтобы убить процесс вручную, одним из способов является использование pkill
Я думал о pkill / killall, но некоторые из моих команд в файле crontab, соответственно! это означает, что после завершения команды будет запущена следующая! например:
sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now
Итак, если я убью wget
, компьютер будет выключен !!! -> Я хочу полностью убить задачу cron, а не ее часть!
Следующая pkill
проблема: как насчет скриптов? (Я импортировал некоторые скрипты bash в crontab -e
) ->sudo pkill ???
Ответы:
Во-первых, используйте только одну команду на строку в crontab. Измените эту строку crontab:
так это выглядит так:
и создать
/path/to/my/crontab/script1.sh
с этим содержанием:Конечно, не забудьте дать ему разрешение на выполнение:
Во-вторых, вы можете увидеть запущенные задачи crontab в удобном и читаемом формате в выводе:
Они появятся в первых строках, примерно так:
Первый столбец - PID, второй - Session ID, а третий - команда, запущенная cron. Вы можете уничтожить все процессы, связанные с конкретной задачей cron, используя идентификатор сессии, поэтому в приведенном выше примере вы должны уничтожить идентификатор сессии 4289:
источник
sh ps: cmd: keyword not found ps: illegal argument: afx
ps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Чтобы убить процесс вручную, используйте один из способов
pkill
. pkill остановит все процессы, которые имеют следующий шаблон в своем имени. например, чтобы остановить все процессы wget, используйте:источник
sudo crontab -e
=>00 10 * * * /usr/bin/wget LINK ; shutdown -h now
=> Итак, если я убью wget , компьютер будет выключен !!! -> Я хочу полностью убить задачу cron, а не ее часть! следующая проблема pkill: как насчет скриптов? (Я импортировал некоторые скрипты bash вcrontab -e
) ->sudo pkill ???
смени свой cronjob вот так
Это должно работать, потому что
&&
означает, что вторая команда выполняется только тогда, когда первая команда была завершена правильно (возвращая статус 0 в консоль / систему), что не должно иметь место (потому что процесс был убит пользователем и он должен вернуть другое значение, а затем 0).источник