Як я можу побачити / зупинити поточні запущені завдання crontab?


20
  1. Як я бачу завдання, що виконуються на кроні?
  2. Як я можу зупинити завдання на кронтабі, які виконуються вручну?

Чи є [це] питання про перегляд поточних запущених процесів 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 ( askubuntu.com/q/272419/66980 )
Мохаммед Етемаддар,

Відредаговано; 1. так, дивлячись поточні запущені процеси cron? (Я хочу вивести процеси на перший план); 2. Тоді я хочу зупинити це вручну ?! (не з розкладу crontab)
міні

Найкращий спосіб додати додаткову інформацію до вашого питання - відредагувавши його, натиснувши кнопку редагування . Це краще видно таким чином, а коментарі в основному є вторинними, тимчасовими цілями. Коментарі видаляються за різних обставин. Все, що важливо для вашого питання, повинно бути в самому питанні.
guntbert

Відповіді:


42

По-перше, використовуйте лише одну команду на рядок у 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

По-друге, ви можете бачити виконання завдань на кронтабі, у корисному та читаному форматі, у вихідному тексті:

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, другий - ідентифікатор сесії, третій - команда, запущена cron. Ви можете знищити всі процеси, пов’язані з конкретною задачею cron, використовуючи ідентифікатор сесії, тому у наведеному вище прикладі слід вбити ідентифікатор сесії 4289:

pkill -s 4289

1
Я отримую це під час виконання команди "Запуск завдань crontab":sh ps: cmd: keyword not found ps: illegal argument: afx
AlecRust

тож крон не дає "зручного" способу показати свої процеси?
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 ???
міні

0

поміняйте свою кронштейн так

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.