Để chạy một công việc định kỳ lúc nửa đêm, bạn sẽ thêm tiền tố vào lệnh hoặc đường dẫn đến tập lệnh của mình bằng:
0 0 * * *
Ví dụ, để chạy /home/youssif/myscript
, bạn sẽ sử dụng:
0 0 * * /home/youssif/myscript
trong tệp crontab của bạn.
Để chỉnh sửa tệp crontab của bạn, sử dụng crontab -e
để chạy lệnh với tư cách là người dùng hiện tại của bạn. Ngoài ra, nếu bạn thực sự cần chạy lệnh với quyền root, bạn có thể chạy Sudo crontab -e
để chỉnh sửa tập tin crontab của bạn.
Để chạy lệnh trong một thiết bị đầu cuối (không phải là ý tưởng hay nếu bạn chạy lệnh với quyền root), bạn sẽ cần chỉ định màn hình sẽ sử dụng trong lệnh hoặc trong tập lệnh của mình. Để làm điều này, giả sử bạn $HIỂN THỊ
Là :0
(mặc định) bạn có thể đặt trước lệnh của mình bằng biến sau:
HIỂN THỊ=:0
Ngoài ra, một thiết bị đầu cuối thường sẽ đóng sau khi lệnh được thực thi nhưng bạn có thể sử dụng tùy chọn giữ với xterm để giữ cho thiết bị đầu cuối mở.
Vì vậy, để chạy lặp lại "xin chào thế giới"
trong một nhà ga lúc nửa đêm, lệnh của bạn sẽ trông như thế này:
0 0 * * HIỂN THỊ=:0 xterm -hold -e 'echo "hello world"'
hoặc để chạy tập lệnh của bạn:
0 0 * * HIỂN THỊ=:0 xterm -hold -e '/home/youssif/myscript'
Tuy nhiên, cách tiêu chuẩn để kiểm tra đầu ra của một cronjob là chuyển hướng đầu ra của thiết bị đầu cuối sang một tệp mà bạn có thể xem sau.
Ví dụ: để chuyển hướng đầu ra của thiết bị đầu cuối sang tệp /home/youssif/helloworld.log
bạn sẽ sử dụng dòng sau trong tệp crontab của mình:
0 0 * * echo "hello world" > /home/youssif/helloworld.log
Ngoài ra, bạn cũng có thể sử dụng phát bóng
lệnh để chuyển hướng đầu ra như thế này:
0 0 * * tiếng vang "xin chào thế giới" | tee /home/youssif/helloworld.log
Cuối cùng, bạn có thể sử dụng con mèo
lệnh để xem nội dung của tập tin:
con mèo /home/youssif/helloworld.log
Bằng cách này, lệnh có thể chạy ở chế độ nền nhưng bạn vẫn có thể kiểm tra đầu ra.
Để tắt/bật các tác vụ dựa trên kết quả của một tác vụ đã chạy, tôi nghĩ rằng điều này thực sự sẽ phù hợp hơn cho một câu hỏi riêng biệt. Tôi tin rằng câu trả lời của bạn sẽ liên quan đến việc sử dụng câu lệnh "nếu thì khác" trong tập lệnh bash.
CHỈNH SỬA:
Như @Tcooper đã chỉ ra, chúng ta phải thêm 2>&1
để chuyển hướng tất cả đầu ra, bao gồm cả thông báo lỗi vì vậy bạn có thể muốn sử dụng một cái gì đó như thế này để thay thế:
0 0 * * echo "hello world" 2>&1 > /home/youssif/helloworld.log
hoặc
0 0 * * echo "hello world" 2>&1 | tee /home/youssif/helloworld.log