Câu trả lời:
Bạn có thể làm điều này trực tiếp từ shutdown command
, xem man shutdown
:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
time When to shutdown.
Ví dụ:
shutdown -h 21:45
Điều đó sẽ chạy shutdown -h
lúc 21 giờ 45 phút.
Đối với các lệnh không cung cấp chức năng này, bạn có thể thử một trong:
Các at
daemon được thiết kế cho chính xác này. Tùy thuộc vào hệ điều hành của bạn, bạn có thể cần phải cài đặt nó. Trên các hệ thống dựa trên Debian, điều này có thể được thực hiện với:
sudo apt-get install at
Có ba cách đưa ra lệnh cho at
:
Ống nó:
$ echo "ls > a.txt" | at now + 1 min
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Lưu lệnh bạn muốn chạy trong tệp văn bản, rồi chuyển tệp đó sang at
:
$ echo "ls > a.txt" > cmd.txt
$ at now + 1 min < cmd.txt
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Bạn cũng có thể truyền at
lệnh từ STDIN:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Sau đó, nhấn CtrlDđể thoát khỏi at
vỏ. Các ls
lệnh sẽ được chạy trong một phút.
Bạn có thể đưa ra thời gian rất chính xác theo định dạng [[CC]YY]MMDDhhmm[.ss]
, như trong
$ at -t 201403142134.12 < script.sh
Điều này sẽ chạy tập lệnh script.sh
vào lúc 21 giờ 34 phút và 12 giây vào ngày 14 tháng 3 năm 2014.
Cách tiếp cận khác là sử dụng bộ lập cron
lịch được thiết kế để thực hiện các tác vụ vào những thời điểm cụ thể. Nó thường được sử dụng cho các nhiệm vụ sẽ được lặp đi lặp lại nhưng bạn cũng có thể đưa ra thời gian cụ thể. Mỗi người dùng có "crontabs" riêng để kiểm soát những công việc được thực hiện và khi nào. Định dạng chung của crontab là:
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
Vì vậy, ví dụ, cái này sẽ chạy ls
mỗi ngày vào lúc 14:04:
04 14 * * * ls
Để thiết lập một cronjob cho một ngày cụ thể:
Tạo một crontab mới bằng cách chạy crontab -e
. Điều này sẽ đưa ra một cửa sổ của trình soạn thảo văn bản yêu thích của bạn.
Thêm dòng này vào tập tin vừa mở. Ví dụ cụ thể này sẽ chạy vào lúc 14:34 ngày 15 tháng 3 năm 2014 nếu ngày đó là thứ Sáu (vì vậy, OK, nó có thể chạy nhiều hơn một lần):
34 14 15 5 /path/to/command
Lưu tệp và thoát khỏi trình chỉnh sửa.
Câu trả lời SO này gợi ý một cách để nó chỉ chạy một lần nhưng tôi chưa bao giờ sử dụng nó vì vậy tôi không thể bảo đảm cho nó.
shutdown
. Tôi cảm thấy cho trải nghiệm tồi tệ đó, mặc dù điều đó không thể dễ chịu.
shutdown
lịch trình và cron
trong cùng một câu trả lời ... Cho dù đó là máy trạm hay máy chủ thư 1000 người dùng (trải nghiệm buồn của tôi) là nhiều hơn về hậu quả của một thói quen xấu.
shutdown
, người ta không nên bao gồm cron
. (đặc biệt với một người không biết tại sao đó là một ý tưởng khủng khiếp.)
Không, bạn không thể chỉ định ngày tại lệnh tắt máy nhưng có hai lựa chọn thay thế tồn tại:
1) Đơn giản nhất là sử dụng lệnh at . Ví dụ sau sẽ thực thi shutdown +5
tại một thời điểm và ngày cụ thể:
echo "shutdown +5" | at 10:05am 2019-01-19
2) nếu bạn không phiền khi sử dụng máy tính của mình và muốn tắt máy trong 24 giờ (24 * 60 = 1440 phút) và bạn chắc chắn hệ thống sẽ không khởi động lại ở giữa:
shutdown -r +1440
at
lệnh.
at
xứng đáng không có lời giải thích. Tôi có thể thấy bạn tin tưởng khác. Tâm trí khác nhau, quan điểm khác nhau.
shutdown
không cho phép đặc tả ngày. Nhưng bộ công cụ nosh shutdown
thì có, hỗ trợ cú pháp BSD lâu đời.
Nó sẽ tắt hệ thống của bạn lúc 12:00:
$ sudo shutdown -h 12:00
Tùy chọn:
-h, -P, --poweroff
Tắt nguồn máy.
-r, --reboot
Khởi động lại máy.
-c
Hủy bỏ tắt máy đang chờ xử lý.