Làm thế nào để loại bỏ hoặc xóa công việc cron đơn bằng lệnh linux?


39

Tôi đã tạo các công việc định kỳ cho trang web của mình được liệt kê dưới đây và chúng đang hoạt động tốt. Tôi in tất cả các công việc định kỳ bằng cách sử dụng tập lệnh PHP này:

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

Đầu ra nào:

[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

Bây giờ tôi muốn xóa hoặc xóa một công việc định kỳ khỏi máy chủ của mình thông qua lệnh. Ví dụ tôi muốn xóa cron job " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" khỏi máy chủ.

Tôi đã thử crontab -rlệnh loại bỏ tất cả công việc cron khỏi máy chủ của tôi nhưng tôi muốn xóa công việc cron cụ thể.

Bạn có thể vui lòng giúp tôi giải pháp?

Câu trả lời:


61
  1. Để thêm một công việc vào crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Để xóa một công việc khỏi crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Xóa mọi thứ khỏi crontab:

    crontab -r
    

Không có gì là khó khăn: -là STDOUT trong Linux!


1
Greg: Chào mừng bạn đến hỏi Ubuntu! ;-) Bạn có thể vui lòng xem lại các chỉnh sửa của tôi và cũng xem lại trợ giúp chỉnh sửa để cải thiện khả năng đọc câu trả lời của bạn trong tương lai ... ;-)
Fabby

4
Vui lòng thay thế 1. Để thêm một công việc vào crontab bằng (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | crontab -u mobman - (ref: stackoverflow.com/questions/4880290/NH )
Yasiru G

1
@YasiruG Tôi nghĩ crontab -l 2 > /dev/nullchỉ cần thiết nếu bạn không muốn xem tin nhắn no crontab for <user>nếu không có công việc định kỳ hiện có. Nhân tiện, chúng tôi không cần tùy chọn -u mobmannếu chúng tôi muốn thêm công việc định kỳ cho người dùng hiện tại.
baptx

21

Từ một loại dấu nhắc gốc

crontab -e

Bây giờ bạn có thể chỉnh sửa tệp và xóa dòng bạn muốn xóa. Bạn cũng có thể sử dụng điều này để chỉnh sửa crontab cho người dùng nếu bạn có lời nhắc cho người dùng đó.

Nhân tiện: tôi thích thêm cronjobs vào /etc/crontab. Có vẻ linh hoạt hơn một chút với tôi.


Điều này có vẻ dễ dàng và có ý nghĩa hơn so với thuật sĩ kịch bản, nhưng tôi ước mình được nhiều phù thủy hơn.
Jason Sebring

Tuyệt vời cho các thay đổi thủ công, nhưng để tự động hóa, hãy kiểm tra tập lệnh ở trên -
AFP_555

7

Xem người dùng Cronjob

Sử dụng cú pháp sau để xem cronjob của người dùng waqleh :

crontab -u waqleh -l

Xem Cronjob người dùng gốc

Chỉ cần gõ lệnh sau:

crontab -l

Điều này sẽ liệt kê nội dung của tập lệnh crontab.

Xem / etc / crontab

Một cronjob cũng có thể được chạy từ tập tin / etc / crontab. Để xem nó, nhập:

less /etc/crontab

Xóa tất cả các công việc định kỳ

Nếu và chỉ khi bạn muốn dừng tất cả các công việc định kỳ, bạn có thể xóa chúng hoàn toàn bằng:

crontab -r

Thao tác này sẽ xóa toàn bộ tệp crontab, vì vậy hãy cẩn thận nếu bạn có các công việc định kỳ khác được liệt kê trong đó!

Xóa (các) công việc cụ thể

Mở tệp cron và xóa (các) cron mà bạn muốn xóa

crontab -e

mỗi dòng đại diện cho một công việc định kỳ. Bạn có thể xóa bất kỳ cron nào bằng cách sử dụng ctrl + k sau đó lưu và thoát


1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l liệt kê các công việc crontab hiện tại

grep -v lọc một số dòng

crontab - thêm tất cả những thứ được in vào tập tin crontab.


0

Bạn có thể chạy crontabmà không cần đối số và cung cấp cho nó crontab mới thông qua stdin.


@qeirha .. Tôi muốn xóa công việc định kỳ cụ thể khỏi máy chủ của mình
anumavu

@anumavu, phải, vì vậy bạn đọc nó với crontab -l, giống như bạn đã có, xóa công việc khỏi danh sách, sau đó viết lại crontab.
geirha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.