跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Linux服务器设置定时关机的两种方法详解

目录前言

一、使用 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脚本实现下载完关机

相关文章