Как я могу увидеть / остановить текущие задачи crontab?


20
  1. Как я могу увидеть задачи crontab, которые выполняются?
  2. Как я могу остановить задачи 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 ???


Ваш вопрос о текущих запущенных процессах cron? или список cron-заданий? Пожалуйста, отредактируйте свой вопрос, чтобы быть более ясным по этому поводу. Чтобы остановить работу cron-задания, отправляйтесь ( askubuntu.com/q/272419/66980 )
Мухаммед Этемаддар

Под редакцией; 1. да, смотреть текущие запущенные процессы cron? (Хочу вывести процессы на первый план); 2. Тогда я хочу остановить это вручную ?! (не из графика crontab)
мини

Лучший способ добавить дополнительную информацию к вашему вопросу - отредактировать ее с помощью кнопки редактирования . Это лучше видно таким образом, и комментарии в основном для вторичных, временных целей. Комментарии удаляются при различных обстоятельствах. Все, что важно для вашего вопроса, должно быть в самом вопросе.
Гюнтберт

Ответы:


42

Во-первых, используйте только одну команду на строку в 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, второй - Session ID, а третий - команда, запущенная cron. Вы можете уничтожить все процессы, связанные с конкретной задачей cron, используя идентификатор сессии, поэтому в приведенном выше примере вы должны уничтожить идентификатор сессии 4289:

pkill -s 4289

1
Я получаю это при запуске команды «Выполнение задач crontab»:sh ps: cmd: keyword not found ps: illegal argument: afx
AlecRust

так что cron не дает "удобный" способ показать свои процессы?
Cirelli94

@alecrust: попробуйте этоps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush

0

Чтобы убить процесс вручную, используйте один из способов pkill. pkill остановит все процессы, которые имеют следующий шаблон в своем имени. например, чтобы остановить все процессы wget, используйте:

sudo pkill wget

Я думал о pkill / killall, но некоторые из моих команд в файле crontab, соответственно! это означает, что после завершения команды будет запущена следующая! например: sudo crontab -e=> 00 10 * * * /usr/bin/wget LINK ; shutdown -h now=> Итак, если я убью wget , компьютер будет выключен !!! -> Я хочу полностью убить задачу cron, а не ее часть! следующая проблема pkill: как насчет скриптов? (Я импортировал некоторые скрипты bash в crontab -e) ->sudo pkill ???
mini

0

смени свой cronjob вот так

00 10 * * * /usr/bin/wget LINK && shutdown -h now

Это должно работать, потому что &&означает, что вторая команда выполняется только тогда, когда первая команда была завершена правильно (возвращая статус 0 в консоль / систему), что не должно иметь место (потому что процесс был убит пользователем и он должен вернуть другое значение, а затем 0).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.