Làm thế nào để ngăn chặn một công việc cron hiện đang chạy?


45

Làm thế nào tôi có thể dừng một công việc định kỳ hiện đang chạy?


2
Ba câu trả lời dưới đây diễn giải câu hỏi này theo ba cách. @GURU, bạn có thể vui lòng làm rõ những gì bạn muốn làm không? Bạn có muốn giết một quá trình bắt đầu bằng cron hiện đang chạy hoặc bạn muốn ngăn công việc chạy trong tương lai?
jcrawfordor

Câu trả lời:


29

Bạn có thể làm điều này giống như cách bạn dừng bất kỳ quy trình nào.

Để dừng croncông việc hiện đang chạy , bạn có thể thực hiện một trong các cách sau:

pkill process-name

hoặc nếu bạn biết PID (bạn có thể xác định nó bằng cách chạy ps):

kill 1234

(thay thế PID thực tế)


1
Làm thế nào để liệt kê những công việc hiện đang chạy cron?
UWU_SANDUN

5
@UWU_SANDUN: Bạn có thể sử dụng pgrephoặc grepđầu ra của ps. Không có gì đặc biệt về một quá trình chạy từ cron. Bạn sẽ chỉ tìm kiếm quá trình dưới tên riêng của nó. Bạn cũng có thể làm ps fauxww | grep -A 1 '[C]RON'và các dòng bên dưới (các) dòng sẽ hiển thị các công việc đang được điều hành cron. Bạn có thể điều chỉnh số 1 cao hơn để xem các quy trình con nếu có.
Dennis Williamson

Lưu ý rằng bạn phải chạy cygwin với tư cách quản trị viên để tiêu diệt các tiến trình. Xem ở đây để biết thêm về điều đó.
takanuva15

Sử dụng Ubuntu tôi đã gõ những gì @ takanuva15 đề xuất , ps fauxww | grep -A 1 '[C]RON'. Điều này liệt kê các công việc cron hiện tại đang chạy, vì vậy sau đó bạn có thể lưu ý xuống và thực hiện PID # kill -9 PID. Cảm ơn!
russellhoff

@russellhoff: -9chỉ nên được sử dụng như là phương sách cuối cùng vì nó ngăn quá trình thực hiện bất kỳ việc dọn dẹp nào khi nó thoát.
Dennis Williamson

17

Để dừng chạy cron job. Trước tiên, hãy lấy id tiến trình của lệnh với

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

ví dụ:-

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

và chạy

kill PIDthay thế PIDbằng id quá trình


14

Lạ thật, không ai nhắc đến phương pháp này:

$ crontab -e

Trong trình chỉnh sửa đã mở, xóa dòng của tác vụ bạn muốn dừng hoặc chèn một #dấu hiệu, lưu và thoát

ví dụ

trước

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

sau

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

hoặc là

* * * * * some_script1

khởi động lại dịch vụ sau khi thay đổi

sudo service cron reload

16
Điều này không dừng công việc cron hiện đang chạy, nó dừng công việc cron trong tương lai sẽ được khởi chạy bởi cron.
Ivan

10

Nếu bạn đang sử dụng Redhat (RHEL) / Fedora Core / Cent OS Linux, hãy sử dụng lệnh sau:

/etc/init.d/crond stop

Nếu bạn đang sử dụng Debian hoặc Ubuntu Linux, lệnh sau:

/etc/init.d/cron stop

PS: Bạn nên root để làm những việc này


2
tôi nghĩ rằng nó dừng tất cả các crons. để dừng cron cụ thể tôi có thể biết lệnh

Bạn có thể đề nghị bất kỳ lệnh sen nào không

Tôi không nghĩ rằng nó có thể theo một cách thẳng thắn .. Có lẽ chúng ta nên đi hack.
Sen


3

Bạn có thể chỉnh sửa bảng cron và nhận xét nhiệm vụ được đề cập. Chuyển sang người dùng điều khiển tác vụ, xuất trình soạn thảo bạn chọn vào môi trường, sau đó sử dụng crontab -l:

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

1
Đó là danh sách các crontab. Sử dụng crontab -eđể chỉnh sửa nó. Đối với các hệ thống có nó, tốt hơn là sử dụng sudothay vì su. Ngoài ra, crontab -esẽ hoạt động cho người dùng (hoặc root) crontab, nhưng không phải crontab của hệ thống (ví dụ /etc/cron*).
Dennis Williamson

1

crontab -r

sẽ loại bỏ tất cả các crontab đang chạy hoặc bạn chỉ cần bình luận các lệnh trong crontab cần được dừng lại.


0

Trước hết hãy kiểm tra quá trình làm việc với lệnh này.

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

Đầu ra của lệnh này là

599  599 cron
4288  599 \_ CRON

và bây giờ giết tiến trình với lệnh này

pkill -s 4288

0

Làm việc cho tôi cho linux

pkill -9 crontab

Giết tất cả quá trình có tên quy trình crontab

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.