Làm thế nào tôi có thể lên lịch khởi động lại trong Linux?


38

Tôi là người mới trong Linux và tôi muốn lên lịch khởi động lại vào nửa đêm. Tôi nên làm thế nào?

Chỉnh sửa:

  • Tôi xin lỗi tôi đã không đưa các chi tiết đầy đủ. Tôi muốn khởi động lại vào mỗi thứ Bảy thứ 3 trong tháng vào lúc 23:30.

  • Tôi không biết điều gì sai nhưng tôi không thể tìm thấy crontab. Những gì tôi có là cron.d; cron.daily; cron.weekly; cron.monthly;

Tôi xin lỗi vì câu hỏi của Noob. Hãy giúp tôi. Cảm ơn.


2
Câu hỏi thực sự là tại sao bạn muốn thực hiện việc này thường xuyên, bạn có ứng dụng bị rò rỉ hay gì không? Nếu bạn đang lên lịch khởi động lại thường xuyên để giải quyết vấn đề thì có lẽ bạn đã gặp vấn đề lớn hơn ...
JamesHannah

1
Bạn có muốn nó khởi động lại mỗi đêm?
Matt Simmons

4
Tôi không bỏ phiếu, vì đó là một quyết định chính sách (và tôi nghĩ rằng việc khởi động lại hàng đêm là hơi quá), nhưng thường xuyên lên lịch khởi động lại trên cơ sở hạ tầng là một cách tốt để đảm bảo rằng máy có cập nhật hạt nhân và tất cả các dịch vụ đang chạy được vá. Tôi đã nghe giới hạn thời gian hoạt động 3 tháng là một trung gian tốt.
Matt Simmons

Nếu đây là một nhận xét về câu hỏi, thay vì một câu trả lời, tôi sẽ nêu lên. Thật ra tôi sẽ thay đổi suy nghĩ của mình, vì câu hỏi mơ hồ về việc đây là chuyện một lần hay thường xuyên. :)
trực giác

3
/etc/crontabmục như 30 23 15-21 * 6 /sbin/shutdown -r nowsẽ khởi động lại vào 23:30 ngày thứ bảy thứ 3 hàng tháng.
Chris S

Câu trả lời:


45

Nhập shutdown -r 0:00và nó sẽ khởi động lại vào nửa đêm.

Nếu bạn muốn khởi động lại mỗi đêm, hãy thêm một mục cron bằng crontab -e làm root để chạy tắt máy -r mỗi nửa đêm

@midnight shutdown -r now

3
Một đối số thời gian là bắt buộc, bạn có thể sử dụng now.
Tobu

Không ... nếu anh ta muốn một lệnh một lần và muốn gõ lệnh ngay bây giờ, anh ta nên thêm thời gian!
bán kính

3
@ Không, nó cần một đối số thời gian, chẳng hạn như nowtrong dòng crontab.
Tạm dừng cho đến khi có thông báo mới.

Rất tiếc, tôi đã đọc sai bình luận của Tobu và nghĩ rằng anh ấy nói 0:00 là vô ích trong lệnh đầu tiên ... Tôi đã chỉnh sửa để sửa (và cả câu trả lời của Massimo)
bán kính

Tôi muốn biết những @{command}biến khác có sẵn.
Greg

16

Sử dụng crontab.

http://en.wikipedia.org/wiki/Crontab

Thêm mục này vào / etc / crontab sẽ làm:

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

3
shutdowncần một đối số thời gian nhưnow
Tạm dừng cho đến khi có thông báo mới.

1
Điều này sẽ làm khởi động lại mỗi đêm. Tôi không chắc đây có phải là thứ anh ấy muốn không.
cstamas

1
Câu hỏi ban đầu làm cho nó có vẻ như anh ấy muốn nó khởi động lại mỗi đêm. Anh ấy thực sự muốn nó được khởi động lại vào mỗi thứ bảy thứ 3, điều vẫn sẽ dễ dàng nhất với một crontab
Chris S

tôi không biết điều gì sai nhưng tôi không thể tìm thấy crontab ..? những gì tôi có là cron.d; cron.d Daily; cron.weekly; cron.monthly; Tôi xin lỗi vì câu hỏi của Noob. Xin hãy giúp tôi. cảm ơn
klauriens

Nó phụ thuộc vào bản phân phối bạn đang sử dụng, nhưng thông thường bạn sẽ tìm thấy một tệp có tên "crontab" trong thư mục / etc của hệ thống. Bạn cũng có thể kiểm tra crontab hiện tại bằng cách sử dụng lệnh "crontab -l" và chỉnh sửa nó bằng cách sử dụng "crontab -e".
Massimo

12

Một tùy chọn khác là lệnh at , có sẵn trên nhiều bản phân phối Linux. Xem trang hướng dẫn để biết thêm thông tin, nhưng cú pháp chung cho mục đích của bạn sẽ là:

tiếng vang "khởi động lại" | lúc 0000 ngày 27 tháng 6

Để trích dẫn trang man OS X:

tại - thực thi các lệnh tại một thời điểm nhất định

Âm thanh như những gì chúng ta đang nói về. ;)


1

Theo tôi biết, bạn không thể sử dụng cron để lên lịch các nhiệm vụ cho "Thứ Sáu cuối cùng của mỗi tháng" hoặc "Thứ Năm thứ ba trong mỗi tháng". Những gì bạn có thể làm, tuy nhiên có vẻ xấu, là để một kịch bản chạy vào mỗi thứ Bảy lúc 23:30 và sau đó để kịch bản này xác định xem thứ Bảy đặc biệt này có phải là thứ Bảy thứ ba trong tuần không (có thể được thực hiện bằng cách sử dụng ngày và có thể là các lệnh cal) .

Tôi hi vọng cái này giúp được. Tôi đã không tìm thấy một giải pháp khó hiểu cho vấn đề này. Tôi tìm thấy chủ đề này, bởi vì tôi đang tìm kiếm một giải pháp cho cùng một vấn đề.


1
các ý kiến ​​trên của "30 23 15-21 * 6 / sbin / shutdown -r now" sẽ hoạt động. Về cơ bản, nó sẽ chỉ chạy vào tuần thứ ba của tháng, nhưng chỉ khi đó cũng là thứ bảy
Sirex

Tôi không nghĩ rằng dòng cron này hoạt động như bạn nghĩ.
ervingsb

Tôi đã tạo hai dòng sau: "30 23 1-7 * 4 ngày" và "30 23 1-7 * 3 ngày". Tôi đã nhận được hai thư tối qua cả hai nói: "Thứ tư 7 tháng 7 23:30:02 CET 2012"
ervingsb

trường cuối cùng khớp với ngày trong tuần, với số 0 là chủ nhật. 4 cronjob không nên phù hợp vào thứ tư.
Sirex

Đó là những gì tôi muốn nói. Quy tắc bạn viết không có nghĩa là những gì bạn nghĩ nó có nghĩa. Nó sẽ kích hoạt công việc mỗi ngày trong một tuần. Không có vấn đề ngày thường.
ervingsb

0

1) tại dòng lệnh loại 2) khi bạn biết vị trí khởi động lại (thường là / sbin / khởi động lại) cd vào một trong các thư mục trong /etc/cron.daily, /etc/cron.weekly, / etc / cron. hàng giờ vv ... tức làwhich reboot
cd /etc/cron.weekly

3) tạo một tệp (sử dụng nano hoặc vim) gọi nó là zzreboot và thêm các dòng sau:

#! / bin / sh
/ sbin / khởi động lại

Lý do bạn muốn gọi tệp zzwhthing là để đảm bảo đó là công việc cuối cùng được gọi sau tất cả các công việc khác. Để đảm bảo chỉ cần thực hiện một ls -ltrong thư mục và xác minh đó là tập tin cuối cùng.

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.