Làm cách nào tôi có thể thấy / dừng các tác vụ crontab đang chạy hiện tại?


20
  1. Làm thế nào tôi có thể thấy các nhiệm vụ crontab đang được tiến hành?
  2. Làm cách nào tôi có thể dừng các tác vụ crontab đang diễn ra bằng tay?

Là [câu hỏi] này về việc xem các quá trình cron đang chạy hiện tại?

Vâng

Để giết một quá trình theo cách thủ công, một cách là sử dụng pkill

Tôi đã nghĩ về pkill / killall, nhưng một số lệnh của tôi trong tệp crontab tương ứng! điều đó có nghĩa là sau khi hoàn thành một lệnh, lệnh tiếp theo sẽ được bắt đầu! ví dụ:

sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now

Vì vậy, nếu tôi giết wget, máy tính sẽ bị tắt nguồn !!! -> Tôi muốn giết một nhiệm vụ cron đầy đủ, không phải là một phần của nó!

pkillVấn đề tiếp theo : Thế còn kịch bản? (Tôi đã nhập một số tập lệnh bash vào crontab -e) ->sudo pkill ???


Là câu hỏi của bạn về việc xem các quá trình cron đang chạy hiện tại? hoặc danh sách các công việc định kỳ? Vui lòng chỉnh sửa câu hỏi của bạn để rõ ràng hơn về điều này. Để dừng công việc định kỳ đang chạy ( askubfox.com/q/272419/66980 )
Mohammad Etemaddar

Đã chỉnh sửa; 1. có, xem các quá trình cron đang chạy hiện tại? (Tôi muốn đưa các quy trình lên tiền cảnh); 2. Sau đó, tôi muốn dừng nó bằng tay?! (không phải từ lịch trình crontab)
mini

Cách tốt nhất để thêm thông tin bổ sung vào câu hỏi của bạn là chỉnh sửa nó, bằng nút chỉnh sửa . Có thể thấy rõ hơn theo cách đó, và ý kiến ​​chủ yếu cho mục đích thứ yếu, tạm thời. Bình luận được loại bỏ trong một loạt các trường hợp. Bất cứ điều gì quan trọng đối với câu hỏi của bạn nên có trong chính câu hỏi.
guntbert

Câu trả lời:


42

Đầu tiên, chỉ sử dụng một lệnh trên mỗi dòng trong crontab. Thay đổi dòng crontab này:

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

vì vậy nó trông giống như:

00 10 * * * /path/to/my/crontab/script1.sh

và tạo /path/to/my/crontab/script1.shvới nội dung này:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

Tất nhiên, đừng quên cấp cho nó quyền thực thi:

chmod +x /path/to/my/crontab/script1.sh

Thứ hai, bạn có thể thấy các tác vụ crontab đang chạy, ở định dạng hữu ích và dễ đọc, ở đầu ra của:

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

Chúng sẽ xuất hiện trong những dòng đầu tiên, đại loại như thế này:

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

Cột đầu tiên là PID, thứ hai là ID phiên và thứ ba là lệnh bắt đầu bằng cron. Bạn có thể hủy tất cả các quy trình liên quan đến một tác vụ cron cụ thể bằng ID phiên, vì vậy trong ví dụ trên, bạn nên hủy ID phiên 4289:

pkill -s 4289

1
Tôi nhận được điều này khi chạy lệnh "chạy crontab nhiệm vụ":sh ps: cmd: keyword not found ps: illegal argument: afx
AlecRust

Vì vậy, cron không đưa ra một cách "tiện dụng" để hiển thị các quy trình của mình?
Cirelli94

@alecrust: Hãy thử điều nàyps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush

0

Để giết một quá trình thủ công một cách là sử dụng pkill. pkill sẽ dừng tất cả các quy trình có mẫu sau trong tên của nó. ví dụ để dừng tất cả các quá trình wget sử dụng:

sudo pkill wget

Tôi đã nghĩ về pkill / killall, nhưng một số lệnh của tôi trong tệp crontab tương ứng! điều đó có nghĩa là sau khi hoàn thành một lệnh, lệnh tiếp theo sẽ được bắt đầu! ví dụ: sudo crontab -e=> 00 10 * * * /usr/bin/wget LINK ; shutdown -h now=> Vì vậy, nếu tôi giết wget , máy tính sẽ bị tắt nguồn !!! -> Tôi muốn giết một nhiệm vụ cron đầy đủ, không phải là một phần của nó! vấn đề pkill tiếp theo: Thế còn kịch bản? (Tôi đã nhập một số tập lệnh bash vào crontab -e) ->sudo pkill ???
mini

0

thay đổi cronjob của bạn như thế này

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

Điều này sẽ hoạt động, bởi vì &&điều đó có nghĩa là lệnh thứ hai chỉ được thực thi, khi lệnh thứ nhất kết thúc chính xác (trả lại trạng thái 0 cho bàn điều khiển / hệ thống), không nên xảy ra (vì quá trình này đã bị người dùng giết và nó sẽ trả về giá trị khác sau đó 0).

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.