Как остановить текущую работу cron?


45

Как я могу остановить работу cron, которая в данный момент выполняется?


2
Три ответа ниже интерпретируют этот вопрос тремя способами. @GURU, не могли бы вы уточнить, что вы хотели бы сделать? Хотели бы вы убить процесс, запущенный cron, который сейчас запущен, или вы хотите предотвратить запуск задания в будущем?
— Джроуфордор

Ответы:


29

Вы можете сделать это так же, как вы остановите любой процесс.

Чтобы остановить текущее cronзадание, вы можете выполнить одно из следующих действий:

pkill process-name

или если вы знаете PID (вы можете определить его, запустив ps):

kill 1234

(подставляя фактический PID)


1
как перечислить какие в настоящее время запущенные задания cron?
— UWU_SANDUN

5
@UWU_SANDUN: Вы можете использовать pgrepили grepвывод ps. Там нет ничего особенного в процессе запуска cron. Вы бы просто искали процесс под своим именем. Вы также можете сделать это, ps fauxww | grep -A 1 '[C]RON'и строки под строкой (-ами) будут показывать выполняемые задания cron. Вы можете настроить число 1 выше, чтобы увидеть подпроцессы, если таковые имеются.
— Приостановлено до дальнейшего уведомления.

Обратите внимание, что вы должны запускать Cygwin в качестве администратора, чтобы убить процессы. Смотрите здесь для получения дополнительной информации об этом.
— takanuva15

Используя Ubuntu, я набрал то, что предложил @ takanuva15 ps fauxww | grep -A 1 '[C]RON'. В этом списке перечислены текущие запущенные задания cron, поэтому после этого вы можете записать PID и выполнить его # kill -9 PID. Благодарность!
— Расселхофф

@russellhoff: -9следует использовать только в качестве крайней меры, поскольку он не позволяет процессу выполнять очистку при выходе.
— Приостановлено до дальнейшего уведомления.

17

Чтобы прекратить запуск задания cron. Сначала получите идентификатор процесса вашей команды с помощью

top -p $(pgrep -d',' your_command)

например:-

top -p $(pgrep -d',' httpd)

и беги

kill PIDзаменить PIDна идентификатор процесса


15

Странно, никто не упомянул этот метод:

$ crontab -e

В открывшемся редакторе удалите строку задачи, которую вы хотите остановить, или вставьте #знак, сохраните и выйдите

например

до

* * * * * some_script1
* * * * * some_script2

после

* * * * * some_script1
#* * * * * some_script2

или

* * * * * some_script1

перезапустите сервис после внесения изменений

sudo service cron reload

17
Это не останавливает текущее задание cron, оно останавливает будущие задания cron, которые будут запущены cron.
— Иван

10

Если вы используете Redhat (RHEL) / Fedora Core / Cent OS Linux, используйте следующую команду:

/etc/init.d/crond stop

Если вы используете Debian или Ubuntu Linux, введите следующую команду:

/etc/init.d/cron stop

PS: Вы должны быть пользователем root, чтобы делать эти вещи


2
Я думаю, что он останавливает все кроны. Чтобы остановить определенный крон, могу ли я знать команду

Можете ли вы предложить любую команду сен

Я не думаю, что это возможно прямым способом. Может быть, мы должны пойти на взлом.
— Сен

6

Первый тип, ps auxчтобы увидеть, что все процессы работают.

Затем запишите PIDкаждый процесс, который вы хотите остановить

Затем введите

kill {PID} для каждого процесса.

Также посмотрите на эти ссылки (ссылки суперпользователя):

Убедитесь в том, что-а-хрон-работа-уже завершенной

пс-AUX-выход-значение


3

Вы можете отредактировать таблицу cron и закомментировать задание. Переключитесь на пользователя, который управляет задачей, экспортируйте свой редактор в среду, а затем используйте crontab -l:

$ su - root
...
# EDITOR=vi; export EDITOR
# crontab -l

1
Это перечисляет crontab. Используйте crontab -eдля редактирования. Для систем, которые имеют это, предпочтительно использовать sudoвместо su. Также, crontab -eбудет работать для пользовательского (или корневого) crontab, но не для системного crontab (например /etc/cron*).
— Приостановлено до дальнейшего уведомления.

1

crontab -r

удалит все запущенные crontabs, или вы можете просто прокомментировать команды в crontab, которые необходимо остановить.


0

Прежде всего, проверьте рабочий процесс с помощью этой команды.

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

Вывод этой команды

599  599 cron
4288  599 \_ CRON

а теперь убить процесс с помощью этой команды

pkill -s 4288

0

Работая на меня для Linux

pkill -9 crontab

Убивает весь процесс с именем процесса crontab

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