Як видалити або видалити єдине завдання cron за допомогою команди Linux?


39

Я створив 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.

Чи можете ви мені допомогти у вирішенні?

Відповіді:


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 - (ref: stackoverflow.com/questions/4880290/… )
Yasiru G

1
@YasiruG Я думаю, що crontab -l 2 > /dev/nullце потрібно лише в тому випадку, якщо ви не хочете бачити повідомлення, no crontab for <user>якщо немає жодної роботи в системі. До речі, ця опція нам не потрібна, -u mobmanякщо ми хочемо додати завдання cron для поточного користувача.
baptx

21

Введіть кореневий рядок

crontab -e

Тепер ви можете відредагувати файл та видалити рядок, який потрібно видалити. Ви також можете використовувати це для редагування crontab для користувачів, якщо у вас є запит для цього користувача.

До речі: я вважаю за краще додавати кронштейни /etc/crontab. Мені здається трохи гнучкішим.


Це здається простішим і має більше сенсу, ніж майстер сценаріїв, але я б хотів, щоб я був більше схожим на майстра.
Джейсон Себрінг


7

Переглянути користувачів Cronjob

Використовуйте такий синтаксис, щоб переглянути cronjob користувача waqleh :

crontab -u waqleh -l

Переглянути Root User Cronjob

Просто введіть таку команду:

crontab -l

Тут слід перерахувати вміст сценарію crontab.

Перегляд / etc / crontab

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

less /etc/crontab

Видаліть усі завдання cron

Якщо і лише якщо ви хочете припинити всі завдання cron, ви можете повністю їх видалити за допомогою:

crontab -r

Це видаляє весь файл crontab, тому будьте обережні, якщо у вас є інші завдання cron, перелічені там!

Видаліть конкретні завдання з cron

Відкрийте файл cron і видаліть cron (s), які ви хочете видалити

crontab -e

кожен рядок представляє завдання cron. Ви можете видалити будь-який крон, скориставшись ctrl + k, а потім зберегти та вийти


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.


@qeirha .. Я хочу видалити конкретну роботу cron зі свого сервера
anumavu

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