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
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
Câu trả lời:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
nên làm thủ thuật. Khôi phục bằng chmod 600
và touch
(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/$username
cũ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 crontab
lệ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, và tạm thời thêm chúng vào /etc/cron.deny
.
chmod
.
touch $username
sau chmod
. Nhưng điều đó không giúp được gì. (btw có quan điểm của bạn cron.deny
)
chgrp root /var/spool/cron/crontabs
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).
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ự.
Nếu bạn chỉ muốn dừng tất cả các cron
cô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.
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
cron
dịch vụ. OP muốn có thể chọn crontabs của người dùng để vô hiệu hóa.
-u user
tắc củacrontab
lệ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?