在Centos操作系统中,定时关机是一个常见的需求,尤其在服务器管理中,通过设置定时关机任务,可以确保系统在非工作时间自动关闭,节省能源并提高安全性,以下是实现这一目标的详细步骤和相关信息:
一、使用`crontab`进行定时关机
1. 编辑crontab
文件

打开终端并输入以下命令来编辑当前用户的crontab文件:
- crontab e
2. 添加定时关机任务
在打开的编辑器中,添加一行来定义定时关机任务,每天下午7点关机:
- 0 19 * * * /sbin/shutdown h now
这行代码的含义是:
0
表示分钟(0分钟)
19
表示小时(19点)

表示日(每天)
表示月(每月)
表示星期几(每周的每一天)
/sbin/shutdown h now
是要执行的命令,立即关机
3. 保存并退出
保存文件并退出编辑器,对于vi或vim,可以按Esc
键,然后输入:wq
并回车。

4. 查看定时任务列表
要查看已设置的定时任务,可以使用以下命令:
- crontab l
5. 紧急取消定时关机
如果需要紧急取消定时关机任务,可以使用以下命令:
- sudo shutdown c
二、使用systemd
定时器进行定时关机
1. 编写关机脚本
在/etc/systemd/system/
目录下创建一个名为poweroff.sh
的脚本文件:
- vi /etc/systemd/system/poweroff.sh
为:
- #!/bin/bash
- poweroff
2. 创建服务文件
在同一目录下创建一个名为shutdown.service
的服务文件:
- vi /etc/systemd/system/shutdown.service
如下:
- [Unit]
- Description = poweroff the local machine
- [Service]
- ExecStart = /bin/bash /etc/systemd/system/poweroff.sh
- Restart = no
- Type = simple
- [Install]
- WantedBy = multiuser.target
3. 为脚本和服务文件添加可执行权限
- chmod +x /etc/systemd/system/poweroff.sh
- chmod +x /etc/systemd/system/shutdown.service
4. 创建定时器文件
编辑两个定时器文件:everyday.timer
和holiday.timer
。
工作日定时关机(每天21:00)
- vi /etc/systemd/system/everyday.timer
如下:
- [Unit]
- Description=Poweroff every work day
- [Timer]
- OnCalendar=Mon,Tue,Wed,Thu,Fri *** 21:00:00
- Unit=shutdown.service
- [Install]
- WantedBy=timers.target
周末定时关机(每周六、周日8:40)
- vi /etc/systemd/system/holiday.timer
如下:
- [Unit]
- Description=Poweroff at holiday
- [Timer]
- OnCalendar=Sat,Sun *** 08:40:00
- Unit=shutdown.service
- [Install]
- WantedBy=timers.target
5. 设定定时器开机自启动
- systemctl enable now {everyday.timer,holiday.timer}
6. 查看系统中正在运行的定时器
- systemctl listtimers
三、常见问题解答(FAQs)
Q1: 如何更改定时关机的时间?
A1: 可以通过编辑相应的crontab条目或systemd定时器文件来更改时间,对于crontab,找到相关的条目并修改时间部分;对于systemd定时器,修改OnCalendar
字段中的时间。
Q2: 如果定时关机任务没有执行,该怎么办?
A2: 首先检查crontab或systemd定时器是否正确配置并且已启用,然后查看系统日志(如/var/log/cron
或journalctl xe
)以获取错误信息,确保系统时间和时区设置正确,因为错误的时间和时区可能导致定时任务无法按预期执行,确认系统没有其他冲突的定时任务或服务影响关机操作。