Root crontab không chạy


10

Vì một số lý do, crontab gốc của tôi dường như không chạy.

Cố gắng khởi động lại thiết bị mỗi đêm vào lúc nửa đêm.

Nên sau đây là root:

crontab -e

Sau đó thêm:

0 0 * * * /sbin/shutdown -r now

Khi tôi kiểm tra bằng cách sử dụng một số giá trị đóng thời gian hiện tại, không có gì xảy ra. Tôi đã cài đặt NTP và đảm bảo múi giờ chính xác. Tôi cũng chỉ định sử dụng đồng hồ 24 giờ. Ví dụ: để kiểm tra dòng này ngay bây giờ (5:35 PM) tôi thử nhập thông tin sau:

36 17 * * * /sbin/shutdown -r now

Tôi đã kiểm tra thời gian với ngày -R. Thời gian để crontab chạy đến và đi và hệ thống không khởi động lại. Tôi đang thiếu gì ở đây?


Chỉ để chắc chắn, bạn đang đóng crontab sau khi chỉnh sửa nó, phải không? Ngoài ra, làm thế nào bạn "chạy như root"? Đầu ra của là sudo crontab -l | grep -v '#'gì?
terdon

Tại sao debian được gắn thẻ này ? Nếu đây là về Debian chứ không phải Ubuntu, vui lòng hỏi trên Unix & Linux .
muru

Bởi vì debian là cốt lõi của Ubuntu tôi tin.
Atomiklan

Câu trả lời:


11

Tôi có ba gợi ý giải pháp cho bạn.

  1. Gọi crontab với crontab -e -u root

  2. Đảm bảo rằng bạn có một dòng trống ở cuối tệp cronjob, nghĩa là mọi dòng kết thúc bằng một dòng mới.

  3. Bạn có thể cần phải chuyển hướng đầu ra thành devnull: shutdown -r now > /dev/null

Đây là hai trang web hữu ích cho cronjobs:

Máy kiểm tra CRON

Máy phát điện CRON

Bạn cũng có thể xử lý các cronjobs gọn gàng với webmin .

Ngoài ra, bạn có ít nhất hai cách nữa để khởi động lại máy tính vào nửa đêm.

Một là chạy lệnh tắt máy dưới dạng tập lệnh tự động khi đăng nhập nhưng với thời gian cụ thể là tham số thay vì "ngay bây giờ":

shutdown -r 00:00

Tuy nhiên, điều này sẽ mang lại một thông điệp quảng bá về việc tắt máy sắp tới vào mỗi lần đăng nhập (có thể không phải là một điều xấu). Vâng, bạn cũng có thể làm cho nó được chạy vào lúc khởi động bằng cách thêm tập lệnh trong init.d, tuy nhiên vẫn mang lại thông báo.

Một cách khác là sử dụng atlệnh:

at 0am

Nhập lệnh shutdown -r nowvà lưu nó với ctrl + d hoặc thực hiện một tập lệnh cho lệnh và thực hiện:

at -f restart_script.sh 0am

Hy vọng những điều này sẽ giúp bạn có được kết quả mà bạn muốn.


Giải pháp là xuất ra dev null. Tôi tự hỏi tại sao?
Atomiklan

Đó là bởi vì cron job có môi trường riêng không có hệ thống đầu vào / đầu ra tiêu chuẩn như bạn mong đợi và quá trình không thành công vì nó đang cố truyền các thông điệp vào một ống đầu ra bị thiếu. Cron job thực sự khác rất nhiều so với việc chạy một số lệnh trong terminal như bất kỳ người dùng nào. Vui mừng khi biết rằng bạn đã làm cho nó hoạt động sau khi tất cả.
Ahti Komu

0

Các công việc Cron hệ thống được liệt kê trong tệp / etc / crontab. Do đó, chỉnh sửa tệp này trực tiếp sẽ giúp bạn chạy lệnh khởi động lại với quyền root.

vì thế,

$ sudo vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  23 20 *  *  *  root  shutdown  -r  now

đảm bảo bạn kiểm tra tệp nhật ký Cron sau khi chỉnh sửa crontab vì nó sẽ cho bạn biết nếu cron được cài đặt thành công.

Tôi đã thử nó và nó làm việc cho tôi. Khởi động lại hệ thống của tôi lúc 8:23 PM

Chúc may mắn!


-3

36 17 * * * vv ..

36 17 không phải là một cách để xác định thời gian phù hợp trong cron của bạn.

kiểm tra thông qua lệnh date để xem hệ thống của bạn hoạt động theo giờ Mỹ hay giờ châu Âu

sử dụng 17 36 nếu thời gian europ và nếu hệ thống của bạn sử dụng thời gian 24 H hoặc 5 36 nếu hệ thống của bạn sử dụng US TIME và 12 H time


Không đúng! Cron không sử dụng định dạng thời gian 12 giờ và định dạng luôn là mm hh DD MM WD.
Ahti Komu

Xin vui lòng đọc toàn bộ bài viết lần sau.
Atomiklan
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.