在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
)以获取错误信息,确保系统时间和时区设置正确,因为错误的时间和时区可能导致定时任务无法按预期执行,确认系统没有其他冲突的定时任务或服务影响关机操作。