0

0

如何在Linux中设置每天定时关机?使用cron与shutdown命令的配置步骤

星夢妙者

星夢妙者

发布时间:2025-08-26 13:08:01

|

534人浏览过

|

来源于php中文网

原创

答案:通过cron服务和shutdown命令可实现Linux每天定时关机。使用crontab -e添加如30 23 * /sbin/shutdown -h now的任务,设置每日23:30关机;用crontab -l确认任务存在,systemctl status cron检查服务状态;临时取消需注释crontab条目,修改则直接编辑时间;shutdown -c无法取消cron触发的即时关机,必须通过修改crontab文件操作。

如何在linux中设置每天定时关机?使用cron与shutdown命令的配置步骤

在Linux系统里,要实现每天的定时关机,最直接且可靠的方法就是结合使用

cron
服务来调度任务,并利用
shutdown
命令来执行关机操作。这基本上是Linux系统管理中的一个基础技能,学会了它,你的服务器或个人工作站就能在不需要人工干预的情况下,按时完成“休息”或“重启”的指令,省心不少。

解决方案

要设置Linux每天定时关机,我们主要通过编辑当前用户的

crontab
文件来添加一个定时任务。

  1. 打开

    crontab
    编辑器: 在终端中输入
    crontab -e
    。如果你是第一次使用,系统可能会让你选择一个文本编辑器,比如
    nano
    vim
    。我个人习惯用
    vim
    ,但对于新手来说,
    nano
    可能更友好一些。

  2. 添加定时关机任务: 在打开的文件末尾,添加一行来定义你的定时关机计划。

    cron
    任务的格式是:
    分钟 小时 日期 月份 星期 命令

    假设你想让系统每天晚上11点30分关机,你可以这样写:

    30 23 * * * /sbin/shutdown -h now

    • 30
      : 代表分钟,这里是30分。
    • 23
      : 代表小时,这里是23点(即晚上11点)。
    • *
      : 代表日期的每一天。
    • *
      : 代表月份的每一个月。
    • *
      : 代表星期的每一天(周日到周六)。
    • /sbin/shutdown -h now
      : 这是要执行的命令。
      /sbin/shutdown
      是关机命令的完整路径,确保
      cron
      能找到它。
      -h
      参数表示“halt”(关机),
      now
      表示立即执行关机。

    如果你希望关机前给一个短暂的警告,比如提前5分钟,但让系统在特定时间点关机,也可以这样写:

    25 23 * * * /sbin/shutdown -h 5 "系统将在5分钟后关机,请保存工作!"
    这样,在晚上11点25分,系统会发出警告,并在11点30分执行关机。不过,对于每日定时关机,我通常更倾向于直接在指定时间点执行
    shutdown -h now
    ,因为它更简洁明了。

  3. 保存并退出: 如果你用

    nano
    ,按
    Ctrl+O
    保存,然后按
    Ctrl+X
    退出。 如果你用
    vim
    ,按
    Esc
    键,然后输入
    :wq
    并回车保存退出。

    cron
    服务会自动检测到
    crontab
    文件的变化并加载新的任务。至此,你的定时关机任务就设置好了。

如何确认定时关机任务已成功设置并正在运行?

设置完定时任务,我们总会有点不确定,它到底有没有生效?这就像你给一个机器人下达指令,总得找个方式确认它是不是真的“听懂了”。

最直接的验证方法就是再次查看你的

crontab
文件。在终端输入
crontab -l
(注意是小写L),它会列出当前用户的所有
cron
任务。如果你能看到之前添加的那一行定时关机命令,那么至少从配置层面来看,它是存在的。

但仅仅存在还不够,我们还需要确认

cron
服务本身是否正常运行。大多数Linux发行版中,
cron
服务是默认启动的,并且会随着系统启动而自启动。你可以用
systemctl status cron
(或者
systemctl status cronie
,具体取决于你的发行版)来检查
cron
服务的状态。如果它显示为
active (running)
,那就说明服务没问题。

再深入一点,如果你想知道

cron
是否真的尝试执行了你的任务,可以查看系统的日志文件。
cron
的执行记录通常会写入
/var/log/syslog
/var/log/messages
或通过
journalctl
命令查询。例如,你可以使用
journalctl -u cron -f
来实时查看
cron
服务的日志输出,或者
grep CRON /var/log/syslog
来查找历史记录。如果你的定时任务时间到了,而系统没有关机,这里通常会有一些错误信息,比如命令路径不对、权限不足等等。

我个人在配置这类任务时,通常会先设置一个几分钟后就会触发的测试任务,比如

* * * * * echo "Test cron job executed at $(date)" >> ~/cron_test.log
,然后观察
~/cron_test.log
文件是否被创建并写入内容。这样可以快速验证
cron
服务本身是否能正常执行任务,然后再把关机任务加进去。

LALALAND
LALALAND

AI驱动的时尚服装设计平台

下载

定时关机与休眠、待机有何不同,我该如何选择?

这三者虽然都能让你的电脑“休息”,但它们的工作原理和适用场景却大相径庭,就像是三种不同的“休息”姿势。

定时关机 (Shutdown): 这是最彻底的休息。系统会关闭所有程序,卸载文件系统,然后切断电源。关机后,电脑不消耗任何电力(除了主板上的微弱电流),再次启动时需要重新加载操作系统,耗时最长。它的优点是能清除内存中的所有状态,给系统一个“干净”的开始,有助于解决一些临时的软件问题,也最节能。对于服务器,或者你每天结束工作后不再需要电脑,关机是最佳选择。

休眠 (Hibernate): 休眠是一种“深度睡眠”。系统会将内存中的所有数据(包括你打开的程序、文档等)保存到硬盘上的一个特殊文件(通常是

swap
分区或一个独立文件)中,然后彻底断电。再次开机时,系统会从硬盘中恢复这些数据,让你回到离开时的状态。它比关机启动快,但比待机慢。优点是节能,且能保留工作状态,适合笔记本电脑在电量耗尽或长时间不使用时使用。

待机/睡眠 (Suspend/Sleep): 待机是“浅度睡眠”。系统会进入低功耗状态,大部分硬件(如显示器、硬盘)会停止工作,但内存(RAM)仍然保持通电,以保存你的工作状态。唤醒时几乎是瞬间完成的。它的优点是唤醒速度极快,能让你迅速回到工作状态。缺点是仍然会消耗少量电力,如果长时间待机,电量消耗会比较明显。适合短暂离开电脑,或者晚上不需要关机,第二天早上想立即开始工作的情况。

如何选择?

  • 需要每天彻底关闭系统,节省能源,或者解决潜在的系统小问题? 选择定时关机。这通常是服务器、工作站夜间维护或个人电脑的日常操作。
  • 需要长时间离开电脑,但又不想丢失当前工作状态,同时要节能? 选择休眠。这在笔记本电脑上尤为常见。
  • 只是短暂离开,希望回来能立即继续工作,不介意少量电量消耗? 选择待机/睡眠

对于本篇文章讨论的“每天定时关机”,显然,我们的目标就是彻底的

shutdown

如果我需要临时取消或修改已设置的定时关机任务怎么办?

生活总是充满变数,你可能今天突然需要加班,或者明天要出差,那原定的定时关机任务就得调整一下了。处理这些变动,比你想象的要简单。

临时取消任务: 如果你只是想让某个特定日期的定时关机失效,最简单的方法是编辑你的

crontab
文件。

  1. 再次打开
    crontab -e
  2. 找到你设置的定时关机那一行。
  3. 在行首添加一个
    #
    号,这会将该行注释掉。例如:
    # 30 23 * * * /sbin/shutdown -h now
  4. 保存并退出。 这样,该任务就不会在第二天触发了。等你不需要取消的时候,再把
    #
    号删除即可。

永久删除任务: 如果你觉得这个定时关机任务以后都不需要了,可以直接在

crontab -e
中删除那一行。保存退出后,任务就彻底移除了。

修改任务时间: 如果只是想调整关机时间,比如从晚上11点半改为12点,同样是打开

crontab -e
,然后直接修改那一行的时间参数: 将
30 23 * * * /sbin/shutdown -h now
修改为
00 00 * * * /sbin/shutdown -h now
(代表午夜12点)。 保存并退出即可。

这里需要特别强调一点:

shutdown
命令本身有一个
-c
参数,用于取消正在等待执行的关机任务。例如,如果你手动执行了
shutdown -h +60 "系统将在60分钟后关机"
,那么在60分钟内,你可以用
shutdown -c
来取消它。但对于
cron
定时触发的
shutdown -h now
,由于它是在指定时间点“立即”执行关机,并没有一个“等待期”,所以
shutdown -c
在这里是无效的。你只能通过修改或删除
crontab
条目来控制
cron
任务本身。

所以,核心思路就是:

cron
任务的控制权在于
crontab
文件。任何关于
cron
定时任务的增、删、改,都应该直接操作
crontab -e
这个文件。这就像你给闹钟设定时间,想改就直接去改闹钟的设置,而不是在闹钟响的前一秒去按“取消”。

相关专题

更多
hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

140

2024.02.23

Hibernate框架介绍
Hibernate框架介绍

本专题整合了hibernate框架相关内容,阅读专题下面的文章了解更多详细内容。

81

2025.08.06

Java Hibernate框架
Java Hibernate框架

本专题聚焦 Java 主流 ORM 框架 Hibernate 的学习与应用,系统讲解对象关系映射、实体类与表映射、HQL 查询、事务管理、缓存机制与性能优化。通过电商平台、企业管理系统和博客项目等实战案例,帮助学员掌握 Hibernate 在持久层开发中的核心技能。

35

2025.09.02

Hibernate框架搭建
Hibernate框架搭建

本专题整合了Hibernate框架用法,阅读专题下面的文章了解更多详细内容。

64

2025.10.14

vim保存退出命令
vim保存退出命令

vim是一个非常强大的文本编辑器,常用于Unix和Linux系统。它是从vi发展而来的,相比vi有许多改进和扩展。在vim中,保存并退出的命令是:wq"wq"这个命令是由两个部分组成的。其中,"w"表示写入文件,将所做的更改保存到磁盘;而"q"表示退出vim编辑器。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

266

2023.08.01

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

702

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.3万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号