如何在“crontab”中运行“rtcwake”?

如何在“crontab”中运行“rtcwake”?

我尝试以rtcwakeroot 身份运行它,它正在工作:

root@ywt01-15Z90N-V-AR53C2:~# rtcwake -m mem -s 90

↑ 该命令正在运行。

但是当我尝试运行rtcwakeinside时crontab,它​​不起作用:

  1. 打开crontab
     root@ywt01-15Z90N-V-AR53C2:~# crontab -e
    
  2. 编辑crontab
     01 22 * * * /usr/sbin/rtcwake -m mem -s 90 > /root/rtc.log 2>$1
    

上述步骤中我应该改变什么?或者我错过了其他一些步骤?

附言。我的操作系统信息:

Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:    20.04
Codename:   focal

答案1

不知道如何修复你的rtcwake脚本——有很多事情让人感觉有点不合时宜:)

相反,systemd(您的 Ubuntu 20.04 就是基于它的!)使系统自动唤醒的计时器任务变得简单。就像是https://joeyh.name/blog/entry/a_programmable_alarm_clock_using_systemd/:

/etc/systedm/system/whatever_I_need_to_do_at_22_01.service

[Unit]
Description=Important thing that needs to happen 1 past 10
RefuseManualStop=true
RefuseManualStart=true
# Requires=multi-user.target or whatever you want to sure runs!
[Service]
Type=oneshot
ExecStart=/usr/bin/true

/etc/systedm/system/whatever_I_need_to_do_at_22_01.timer

[Unit]
Description=Important timer

[Timer]
Unit=whatever_I_need_to_do_at_22_01.service
OnCalendar=*-*-* 22:01
WakeSystem=true
Persistent=false 

[Install]
WantedBy=multi-user.target

然后您只需sudo systemctl enable --now whatever_I_need_to_do_at_22_01.timer启用在指定时间唤醒即可。

要进入睡眠状态,请使用systemctl suspend.systemd-suspend.service如果您想在任何给定时间暂停,您还可以有一个调用 的计时器!

答案2

请参阅此线程(rtcwake 未作为 root cron 作业执行)使用 来获取答案rtcwake。就我而言,即使我使用的是 s cron,我也必须添加sudo到命令中:cronroot

30 14 * * * sudo /usr/sbin/rtcwake -m mem -l -t $(date +\%s -d 'today 17:55:00') >> /home/user/crond.log 2>&1

修改systemd似乎有点矫枉过正。

相关内容