我尝试以rtcwake
root 身份运行它,它正在工作:
root@ywt01-15Z90N-V-AR53C2:~# rtcwake -m mem -s 90
↑ 该命令正在运行。
但是当我尝试运行rtcwake
inside时crontab
,它不起作用:
- 打开
crontab
:root@ywt01-15Z90N-V-AR53C2:~# crontab -e
- 编辑
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
到命令中:cron
root
30 14 * * * sudo /usr/sbin/rtcwake -m mem -l -t $(date +\%s -d 'today 17:55:00') >> /home/user/crond.log 2>&1
修改systemd
似乎有点矫枉过正。