RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1001185
Accepted
user244413
user244413
Asked:2020-07-10 03:15:12 +0000 UTC2020-07-10 03:15:12 +0000 UTC 2020-07-10 03:15:12 +0000 UTC

在指定时间关闭计算机

  • 772

我希望我的 Ubuntu 每天在特定时间自动关闭。如何做到这一点?

linux
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. user244413
    2020-07-10T03:15:12Z2020-07-10T03:15:12Z

    一个名为cron.
    为了安排任务,我们将把它添加到/etc/crontab.
    打开终端 - Ctrl Alt T。
    可以使用以下命令编辑该文件:

    sudo nano /etc/crontab 
    

    要在每天 23:03 关闭计算机,请在文件中添加以下行:

    03 23 * * * root shutdown -h now
    

    文件的最后一行必须为空。

    这部分是基于 askubuntu编写的。

    解释更详细。

    (更新)

    该文件本身/etc/crontab解释了任务表的格式:

    # m h dom mon dow user  command
    

    前两个字段是任务启动的分钟和小时,
    第三个字段(dom)是月份中的哪一天(Day of Month),
    然后是月份,
    第五个字段(dow)是星期几,
    然后将代表其运行命令的用户
    ,实际上是团队。

    开始时间
    所有条件(开始时间)都用“逻辑与”来检查,除了条件“星期几”和“月几日”——一起指定,它们都用“逻辑或”处理,即“on任何一天”,这反映在文档(Ubuntu、Debian、FreeBSD)中。(参见维基百科,man 5 crontab)。如果您想通过“逻辑与”来检查它们,请在命令本身中进行。

    例如,在 13 号星期五重新加载:

    0 0 13 * * root [ "$(date '+\%u')" -eq 5 ] && shutdown -r now
    

    Crontab用户.
    除了常见的 crontab 表,每个用户都有自己的。您可以使用命令编辑您的个人表

    crontab -e
    

    可以使用命令编辑另一个用户的表,例如“root”

    sudo crontab -u root -e
    

    在最初的问题中,我认为使用此选项会更正确。
    如果系统中只有一个用户,那么您可以通过它和通过'root'关闭计算机,没有区别。

    感谢0andriy和Sergey先生,他们提请我注意这种可能性。

    请注意,在特定用户的表格中,任务格式略有不同,无需指定用户。代替

    03 23 * * * root shutdown -h now
    

    需要写

    03 23 * * *  shutdown -h now
    

    环境变量
    性能问题的一个常见原因crontab是运行守护程序时环境变量的不同定义cron,尤其是变量$PATH。您可以通过插入该行
    来找出环境变量-acroncrontab

    * * * * * env > /tmp/env.output
    

    创建文件后/tmp/env.output,可以删除此行。
    事实证明,Ubuntucron以PATH=/usr/bin:/bin. 要正常工作,您需要$PATH在crontab.
    请注意,变量的值没有被替换,即

    PATH = $HOME/bin:$PATH
    

    不会工作。
    解决此问题的另一种方法是使用完整路径来运行命令。但是,如果您想在终端中测试您的命令或将其转移到另一个系统,那就更糟了。

    如果您正在运行 GUI 程序,您还需要定义 $DISPLAY:

    DISPLAY=:0
    

    哦,别忘了在crontab-a的末尾放一个空行。

    答案的第二部分是根据 关于 askubuntu 上 -th问题的问题编写的。 感谢所有评论者的富有成果的讨论。crontab

    • 5
  2. Best Answer
    andreymal
    2020-07-16T16:52:24Z2020-07-16T16:52:24Z

    为什么要在神圣的 systemd 系统上触摸 cron?:)

    在 systemd 中,关闭计算机的一种方法是打开一个服务,该服务systemd-poweroff运行一个命令/bin/systemctl --force poweroff来明确它的作用。

    让我们通过创建一个文件/etc/systemd/system/systemd-poweroff.timer(当然是在根目录下)来创建一个计时器以按计划启动此服务:

    [Timer]
    OnCalendar=*-*-* 23:03:00
    
    [Install]
    WantedBy=timers.target
    

    (日期格式ДеньНедели Год-Месяц-День Часы:Минуты:Секунды,星期可选,星号表示任何值。)

    运行它(定时器,而不是关机):

    sudo systemctl start systemd-poweroff.timer
    

    并添加到 autoload 以便每次不用手动启动:

    sudo systemctl enable systemd-poweroff.timer
    

    现在这个计时器将在每天 23:03 开始​​写入文件名中的服务 -  systemd-poweroff- 从而关闭计算机。

    使用命令sudo systemctl status systemd-poweroff.timer可以查看定时器的信息:下一次运行的准确时间、剩余时间等:

    $ sudo systemctl status systemd-poweroff.timer
    * systemd-poweroff.timer
       Loaded: loaded (/etc/systemd/system/systemd-poweroff.timer; enabled; vendor preset: enabled)
       Active: active (waiting) since Tue 2019-07-16 11:34:01 MSK; 10min ago
      Trigger: Tue 2019-07-16 23:03:00 MSK; 11h left
    
    Jul 16 11:34:01 home systemd[1]: Started systemd-poweroff.timer.
    

    如果您编辑了文件(例如,更改了时间),则需要执行sudo systemctl daemon-reload以应用更改。

    您可以在 archeviki 上阅读有关计时器的更多信息。

    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5