目录前言
一、使用 Cron(方法一)
1.编辑 root 的 crontab 文件
2.添加定时任务
3.保存并退出
4.验证任务是否添加成功
二、使用 Systemd Timers(方法二)
1.创建 Service 单元文件2.创建 Timer 单元文件3.启用并启动 Timer 4.检查 Timer 状态重要提醒总结前言有时候linux服务器需要在每周定时关闭,让其清除一些运行缓存,避免高负荷长时间运转,降低服务器的寿命,这里推荐两种方法cron和Systemd Timers
一、使用 Cron(方法一)
cron是 Linux 系统自带的用于定时执行任务的守护进程,非常适合这种周期性的任务1.编辑 root 的 crontab 文件关机需要 root 权限,因此我们需要编辑 root 用户的 cron 任务表。使用sudo来获取权限sudo crontab -e如果是直接以 root 用户登录,则只需输入crontab -e。
如果是第一次运行,可能会让你选择编辑器。推荐选择nano(比较简单)或vim
2.添加定时任务
在打开的 crontab 文件末尾,添加新的一行。这里有几个常见方案:方案 A:在每周六晚上 11 点关机# m h dom mon dow command 0 23 * * 6 /sbin/shutdown -h +00 23 * * 6:表示在每个星期6(周六)的 23:00 执行任务/sbin/shutdown -h +0:-h代表 halt(停止),+0代表 0 分钟后执行,即立即执行方案 B:在每周六凌晨 2 点 15 分关机# m h dom mon dow command 15 2 * * 6 /sbin/shutdown -h now15 2 * * 6:表示每周六的 02:15 执行。
shutdown -h now:也是立即关机的常用写法。
cron 时间格式解释:* * * * * command_to_execute
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 6) (0 是周日)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)因此,0 23 * * 6的意思就是:每周六(6)的 23点(23)0分(0)
3.保存并退出
如果使用nano:按Ctrl + X,然后按Y确认,最后按Enter保存。
如果使用vim:按Esc键,然后输入:wq,再按Enter。
4.验证任务是否添加成功
显示这样就代表成功添加了
二、使用 Systemd Timers(方法二)
虽然cron是标准方法,但一些现代 Linux 发行版(如最新的 Ubuntu、CentOS 等)也支持使用systemd timers来实现类似功能。这种方法更集成于系统,可以更好地管理依赖关系和日志1.创建 Service 单元文件首先创建一个定义要执行什么操作(即关机)的 service 文件sudo nano /etc/systemd/system/saturday-shutdown.service
将以下内容写入文件:
[Unit]Description=Saturday Shutdown
[Service]Type=oneshot ExecStart=/usr/sbin/shutdown -h now2.创建 Timer 单元文件然后创建一个 timer 文件来定义何时触发上述 servicesudo nano /etc/systemd/system/saturday-shutdown.timer
将以下内容写入文件:
[Unit]Description=Shutdown every Saturday at 11 PM Requires=saturday-shutdown.service
[Timer]OnCalendar=Sat 23:00:00 Persistent=true
[Install]WantedBy=timers.targetOnCalendar=Sat 23:00:00:这是设置时间的关键,语法非常直观,表示“每周六 23:00”。
Persistent=true:如果上次定时器触发时服务器错过了(比如当时已经关了),下次启动时会立即触发任务。
3.启用并启动 Timer让 systemd 加载新的单元文件,并启用这个定时器sudo systemctl daemon-reload sudo systemctl enable saturday-shutdown.timer sudo systemctl start saturday-shutdown.timer4.检查 Timer 状态sudo systemctl status saturday-shutdown.timer重要提醒
1.权限
:确保使用sudo或 root 用户来设置,因为普通用户没有关机权限。
2.测试
:在设置好后,强烈建议你先将时间修改为几分钟后(例如,将 cron 表达式改为* * * * *来下一分钟测试),测试一下是否能正常工作,然后再改回周六的时间,避免配置错误导致意外。
3.取消
:如果你之后想取消这个自动关机任务:对于 Cron:再次运行sudo crontab -e,删除或注释掉(在行首加#)那行配置即可。
对于 Systemd Timer:运行 sudo systemctl stop saturday-shutdown.timer 和 sudo systemctl disable saturday-shutdown.timer。
4.警告用户
:如果服务器上有其他用户,最好使用shutdown命令的-k选项先发送一个警告信息,或者提前通知他们。例如,你可以先广播一条消息:# 在关机前5分钟向所有登录用户发送警告shutdown -h +5 "系统将在5分钟后进行每周例行关机维护,请保存您的工作。"总结本文介绍了两种在Linux服务器上设置每周定时关机的方法Cron方法:通过编辑root用户的crontab文件,添加定时任务(如每周六23:00执行/sbin/shutdown -h +0),利用cron守护进程实现周期性关机。
Systemd Timers方法:创建service和timer单元文件(如OnCalendar=Sat 23:00:00),通过systemd管理任务触发,支持日志和依赖关系。两种方法均需root权限,建议测试后应用,并可通过对应命令取消任务。文中还提醒注意用户通知及权限问以上就是Linux服务器设置定时关机的两种方法详解的详细内容,更多关于Linux服务器定时关机的资料请关注脚本之家其它相关文章!
您可能感兴趣的文章:Linux系统如何正确的关机、重启问题Linux系统下的重启,关机命令以及reboot挂死问题解决方案Linux系统关机命令之间的区别及用法详解Linux低电量自动关机的实现方法Linux关机时执行指定脚本功能实现轻松掌握Linux关机重启命令linux中shell脚本实现下载完关机
