0

0

Linux关机命令如何支持计划任务?通过at命令设置单次关机的实现方法

雪夜

雪夜

发布时间:2025-09-06 08:44:02

|

304人浏览过

|

来源于php中文网

原创

使用at命令可计划Linux系统的一次性关机任务,如echo "sudo shutdown -h now" | at 23:00 tomorrow,at支持灵活时间格式且任务执行后自动清除,避免重复关机风险,相比cron更安全高效。

linux关机命令如何支持计划任务?通过at命令设置单次关机的实现方法

在Linux系统中,如果你需要对一次性的关机操作进行计划,

at
命令无疑是你的首选工具。它允许你在未来的某个特定时间点执行一条命令,完美解决了“如何让关机命令支持计划任务”的问题,尤其适合那些不希望重复执行的临时性维护或操作。

要通过

at
命令实现计划关机,核心思路是利用
at
来调度一个
shutdown
命令。
at
命令的工作方式很简单,你告诉它一个时间,然后输入你想要执行的命令,它就会在那个时间点执行。

具体操作流程通常是这样的: 你首先需要以具有执行

shutdown
命令权限的用户身份(通常是root,或者通过
sudo
)来操作。

  1. 指定执行时间: 使用

    at
    命令后跟一个时间参数。
    at
    的时间格式非常灵活,可以接受
    HH:MM
    (例如
    23:00
    )、
    HH:MM MM/DD/YY
    (例如
    23:00 12/25/24
    )、
    now + MINUTES
    (例如
    now + 30 minutes
    )、
    tomorrow
    等多种形式。

  2. 输入关机命令:

    at
    命令提示符下(或者通过管道
    echo
    ),输入你想要执行的
    shutdown
    命令。最常见的关机命令是
    sudo shutdown -h now
    (立即关机并停止系统)或
    sudo shutdown -r now
    (立即重启系统)。当与
    at
    结合时,
    now
    通常会被替换成一个相对时间,但这里我们是让
    at
    在指定时间执行一个“立即关机”的命令。

一个典型的例子,如果你想让系统在明天晚上11点整关机:

echo "sudo shutdown -h now" | at 23:00 tomorrow

或者,如果你想在当前时间30分钟后关机:

echo "sudo shutdown -h now" | at now + 30 minutes

执行后,

at
会返回一个任务编号(job number),比如
job 1 at 2024-12-25 23:00
。这就表示你的关机任务已经成功被安排了。这里
sudo
是关键,因为普通用户通常没有直接执行
shutdown
的权限。

记得,

shutdown -h
是让系统完全停止并关闭电源,而
shutdown -r
则是重启。根据你的实际需求来选择合适的参数。我个人经验是,在不确定的时候,
-h
更稳妥,毕竟重启可能需要额外的检查。

为什么不推荐使用
cron
来执行单次关机任务?

我个人觉得,用

cron
来做这种单次性的关机任务,就像用大炮打蚊子,不仅效率不高,还容易把自己搞得手忙脚乱。
cron
是设计来处理周期性、重复性任务的,比如每天凌晨备份数据,每周清理日志。它的核心是“循环”。如果你只是想让系统在某个特定时间关机一次,然后就完事了,用
cron
意味着你必须:

  1. 编辑
    crontab
    文件,添加一条关机任务。
  2. 等待任务执行。
  3. 最重要的一步: 任务执行完毕后,你还得记得回去编辑
    crontab
    ,把那条关机任务删掉。

这中间就存在一个风险:万一你忘了删除呢?那你的系统就会在下一个周期再次执行关机,这在生产环境中简直是灾难。想象一下,你只是想在周末维护时关机一次,结果周一早上它又自己关机了,那场面可就太尴尬了。

相比之下,

at
命令就是为这种“一次性”任务而生。它执行完一次就自动从队列中移除,干脆利落,完全没有后顾之忧。这种“用完即走”的特性,让
at
在处理临时性、非重复的调度任务时,显得更为优雅和安全。所以,对于单次关机,我的建议是坚决拥抱
at
,让
cron
去忙它那些循环往复的活儿吧。

如何查看和取消已设置的
at
关机任务?

有时候,计划赶不上变化,或者手一抖输错了时间,能快速撤销或查看已设置的

at
任务就显得尤为重要。幸运的是,
at
命令家族提供了非常直观的工具来管理这些任务。

要查看当前用户所有待执行的

at
任务,你可以使用
atq
命令,或者它的别名
at -l

Civitai
Civitai

AI艺术分享平台!海量SD资源和开源模型。

下载
atq
# 或者
at -l

执行这些命令后,你会看到一个列表,每行代表一个待执行的任务,通常会显示任务的编号(job number)、执行日期和时间,以及队列字母(通常是

a
)。例如:

1   2024-12-25 23:00 a root

这里的

1
就是任务编号。这个编号在取消任务时非常关键。

如果你发现某个任务设置错了,或者不再需要它了,你可以使用

atrm
命令,或者它的别名
at -d
,后面跟上任务的编号来取消它:

atrm 1
# 或者
at -d 1

执行这条命令后,编号为

1
at
任务就会从队列中移除,不再会在预定时间执行。取消成功后,系统通常不会给出明确的成功提示,但你可以再次运行
atq
来确认该任务是否已不在列表中。

需要注意的是,你只能查看和取消你当前用户(或root用户)创建的

at
任务。如果你是以
sudo
方式创建的
at
任务,那么在查看或取消时,也需要确保你有相应的权限。这种管理能力,让
at
在实际操作中变得非常灵活和可控,避免了不必要的麻烦。

在使用
at
命令计划关机时,有哪些关键的
shutdown
参数需要了解?

虽然

at
负责“何时”执行,但真正决定系统行为的还是
shutdown
命令本身。了解
shutdown
的关键参数,能让你更精准地控制关机或重启的流程,避免不必要的意外。

  1. -h
    (halt): 这是最常用的参数之一,它告诉系统在关机后停止所有服务,然后完全关闭电源。如果你希望机器彻底断电,就用它。

    • 示例:
      sudo shutdown -h now
      (立即关机并断电)
  2. -r
    (reboot): 如果你的目的是重启系统而不是彻底关机,那么
    -r
    就是你的选择。它会先优雅地关闭所有进程,然后重新启动机器。

    • 示例:
      sudo shutdown -r now
      (立即重启)
  3. -P
    (poweroff): 在很多现代Linux发行版中,
    -P
    参数的功能与
    -h
    类似,也是让系统完全断电。有时你会看到这两个参数互换使用。

    • 示例:
      sudo shutdown -P now
  4. -c
    (cancel): 这是一个非常重要的参数,但它不是用来设置关机的,而是用来取消已经通过
    shutdown
    命令(不是
    at
    命令)发出的关机请求。如果有人直接执行了
    shutdown -h +10
    (10分钟后关机),你可以在这10分钟内用
    sudo shutdown -c
    来取消它。注意,这不能取消
    at
    命令计划的关机,
    at
    任务的取消需要用
    atrm

    • 示例:
      sudo shutdown -c
      (取消当前正在倒计时的关机)
  5. "message"
    你可以在关机命令后面添加一个消息,这个消息会广播给所有登录用户,提醒他们系统即将关机。这对于多用户环境非常有用。

    • 示例:
      sudo shutdown -h now "系统将在稍后关机,请保存您的工作!"

总的来说,当你通过

at
来调度关机时,最常见的做法是
echo "sudo shutdown -h now" | at <时间>
。这里的
now
是针对
shutdown
命令而言的“立即”,而
at
命令前的
<时间>
才是真正的调度时间。理解这些参数,能让你在管理Linux服务器的生命周期时,更加从容和精准。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

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

1349

2023.06.21

如何安装LINUX
如何安装LINUX

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

703

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

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

573

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

546

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

297

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

381

2023.07.25

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

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

精品课程

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

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

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

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