Làm thế nào để tạm thời vô hiệu hóa cronjobs của người dùng?


14

Làm cách nào để tạm thời vô hiệu hóa một hoặc nhiều công việc định kỳ của người dùng? Cụ thể, tôi không muốn đình chỉ quyền lợi của người dùng - đơn thuần là không sa thải bất kỳ công việc nào của họ.

Tôi đang sử dụng hệ thống SLES 11 SP2 và SP3


Bạn có thể chỉ sử dụng công -u usertắc của crontablệnh và đặt một #ký tự nhận xét trước các công việc để vô hiệu hóa cho người dùng đã cho không?
Janis

@Janis sau đó tôi cần theo dõi những gì người dùng (có rất nhiều) đã nhận xét, cộng với người dùng có thể tiếp tục và thêm một điều nữa vào (Tôi không thêm chúng vào /etc/cron.deny). Quá nhiều công việc thủ công :(
Dinesh

Dinesh, tôi (mis-) hiểu rằng bạn muốn kiểm soát chi tiết về những gì bạn vô hiệu hóa.
Janis

Câu trả lời:


10

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernamenên làm thủ thuật. Khôi phục bằng chmod 600touch(bạn cần thay đổi thời gian của tệp để tạo cron (cố gắng) tải lại).

Trên ít nhất Debian và có lẽ với cron Vixie nói chung, chmod 400 /var/spool/cron/crontabs/$usernamecũng thực hiện thủ thuật này, bởi vì việc triển khai đó khẳng định quyền là chính xác 600. Tuy nhiên, điều này chỉ tồn tại cho đến khi người dùng chạy crontablệnh.

Nếu bạn muốn một cách mạnh mẽ, tôi không nghĩ có gì tốt hơn là tạm thời di chuyển crontab của họ ra khỏi đường đi hoặc thay đổi quyền, tạm thời thêm chúng vào /etc/cron.deny.


Cảm ơn. Trên hệ thống của tôi, đó là / var / spool / cron / tab / $ tên người dùng. Nhưng nó vẫn thực thi, ngay cả sau khi chmod.
Dinesh

Sau khi thay đổi perms tập tin, tôi cũng cần phải dừng / khởi động lại cron. Tôi nghĩ có lẽ bởi vì cron có thể đang giữ những thứ trong bộ nhớ. Vì vậy, tôi đã thêm touch $usernamesau chmod. Nhưng điều đó không giúp được gì. (btw có quan điểm của bạn cron.deny)
Dinesh

@Dinesh Thật vậy, bạn cần cập nhật mtime của tập tin hoặc người khác nghĩ rằng nó không thay đổi và giữ thông tin được lưu trong bộ nhớ cache. Tôi nhận thấy điều này trong khi thử nghiệm ngày hôm qua nhưng quên đề cập đến nó trong câu trả lời của tôi, xin lỗi về điều đó.
Gilles 'SO- đừng trở nên xấu xa'

Nếu bạn muốn vô hiệu hóa cho tất cả người dùng tiêu chuẩn chỉ:chgrp root /var/spool/cron/crontabs
Tômwagon

9

Làm thế nào về một cái gì đó như thế này để vô hiệu hóa một crontab người dùng:

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

và để kích hoạt lại:

crontab -u [username] /tmp/[username].cron.tmp

Điều này có thêm lợi thế là bạn có thể chạy nó với tư cách là người dùng đó mà không cần root (chỉ cần lấy tham số -u đi).


0

Nếu bạn đang sử dụng Debian, điều này chỉ áp dụng cho Debian AFAIK :

Bạn có thể làm như vậy bằng cách thêm một dấu chấm vào tên của cronjob.

Hành vi được đề cập đến trên các tài liệu chính thức của Debian:

https://www.debian.org/doc/debian-policy/#cron-job-file-names

Tên tệp công việc cron không được bao gồm bất kỳ ký tự dấu chấm hoặc dấu cộng (. Hoặc +) vì điều này sẽ khiến cron bỏ qua tệp. Dấu gạch dưới (_) nên được sử dụng thay vì. và + ký tự.


0

Nếu bạn chỉ muốn dừng tất cả các croncông việc hoàn toàn trong một thời gian - ví dụ, trong khi thực hiện bảo trì hệ thống mà chúng có thể tương tác xấu với - các lệnh thường là

systemctl stop crond.service

và, để tiếp tục

systemctl start crond.service

Tôi đoán bạn cần quyền root hoặc bánh xe để thực thi chúng; nếu cần thiết, hãy chạy chúng thông qua sudo hoặc (phương sách cuối cùng) đăng nhập bằng root.

Quá mức cho câu hỏi cụ thể được đặt ra, nhưng cung cấp "mua sắm một cửa" và không yêu cầu chơi với hệ thống tệp hoặc tệp tạm thời.


3
Vì điều này vô hiệu hóa cron cho tất cả người dùng, nên nó không thực sự trả lời câu hỏi.
Scott

-1

Tôi đồng ý, con đường thông qua systemctl là con đường phải đi. Trên quả mâm xôi, ngón chân cái sẽ là

sudo systemctl stop cron.service
sudo systemctl start cron.service

1
Điều này sẽ dừng toàn bộ crondịch vụ. OP muốn có thể chọn crontabs của người dùng để vô hiệu hóa.
roaima

1
Nó cũng giống hệt với một câu trả lời khác.
roaima
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.