Как удалить или удалить одно задание cron с помощью команды linux?

40

Я создал рабочие места cron для своего сайта, который указан ниже, и они работают нормально. Я печатаю все задания cron с помощью этого PHP-скрипта:

$cronfiles=exec('crontab -l',$output);
echo "<pre>";
print_r($output);

Какие выводы:

[0] => 0 0 * * * wget php -q http://www.example.com/report_send.php
[1] => 0 0 * * * wget php -q http://www.example.com/event_reminder.php
[2] => 0 0 * * * wget php -q http://www.example.com/user_reminder.php
[3] => * * * * * wget php -q http://www.example.com/cleardata.php

Теперь я хочу удалить или удалить одно задание cron с моего сервера с помощью команды. Например, я хочу удалить задание cron " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" с сервера.

Я попробовал crontab -rкоманду, которая удаляет все задания cron с моего сервера, но я хочу удалить определенное задание cron.

Можете ли вы помочь мне для решения?

anumavu
источник

Ответы:

61
  1. Чтобы добавить работу в crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Чтобы удалить работу из crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Удалить все из crontab:

    crontab -r
    

Ничего хитрого: -STDOUT в Linux!

Грег Ханис
источник
1
Грег: Добро пожаловать, чтобы спросить Ubuntu! ;-) Не могли бы вы просмотреть мои правки, а также просмотреть справку по редактированию, чтобы улучшить читаемость ваших ответов в будущем ... ;-)
Fabby
4
Пожалуйста, замените 1. Чтобы добавить работу в crontab с помощью (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | crontab -u mobman - (ссылка: stackoverflow.com/questions/4880290/… )
Yasiru G
1
@YasiruG Я думаю, что crontab -l 2 > /dev/nullэто необходимо только в том случае, если вы не хотите видеть сообщение, no crontab for <user>если не существует задание cron. Кстати, эта опция нам не нужна, -u mobmanесли мы хотим добавить задание cron для текущего пользователя.
baptx
23

Из корневого типа подсказки

crontab -e

Теперь вы можете отредактировать файл и удалить строку, которую хотите удалить. Вы также можете использовать это для редактирования crontab для пользователей, если у вас есть приглашение для этого пользователя.

Кстати: я предпочитаю добавлять cronjobs в /etc/crontab. Кажется, немного более гибким для меня.

Rinzwind
источник
Это кажется проще и имеет больше смысла, чем сценарий, но мне бы хотелось, чтобы он был больше похож на мастера.
Джейсон Себринг
Отлично
подходит
7

Просмотр пользователей Cronjob

Используйте следующий синтаксис для просмотра cronjob пользователя waqleh :

crontab -u waqleh -l

Просмотреть пользователя Root Cronjob

Просто введите следующую команду:

crontab -l

Это должно перечислить содержимое скрипта crontab.

Посмотреть / etc / crontab

Cronjob также можно запустить из файла / etc / crontab. Для просмотра введите:

less /etc/crontab

Удалить все задания cron

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

crontab -r

Это удалит весь файл crontab, поэтому будьте осторожны, если у вас есть другие задания cron, перечисленные там!

Удалить определенные задания cron

Откройте файл cron и удалите cron, который вы хотите удалить

crontab -e

каждая строка представляет работу cron. Вы можете удалить любой cron с помощью ctrl + k, затем сохранить и выйти

Waqleh
источник
1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l перечисляет текущие задания crontab

grep -v отфильтровать строку

crontab - добавляет все печатные материалы в файл crontab.

Диего Д
источник
0

Вы можете запустить crontabбез аргументов и передать новый crontab через stdin.

geirha
источник
@qeirha .. Я хочу удалить конкретное задание cron со своего сервера
anumavu
@anumavu, правильно, так что вы читаете это с помощью crontab -l, как у вас уже есть, удалите работу из списка, а затем запишите ее обратно crontab.
гейра