我正在尝试配置beaglebone黑色[无线版本-4.9.82-ti-r102#1 SMP PREEMPT]-运行debian 9.3 Stretch。
此命令在bash终端中可以正常工作:
sudo /usr/sbin/rtcwake -m mem -u -t $(date +%s -d "+2 minutes")
我已经通过
设置了cron作业sudo crontab -e
其中有以下一行:
10,40 * * * * /usr/sbin/rtcwake -m mem -u -t $(date +%s -d "20 minutes")
但是,设备没有挂起。
我在做什么错?我该如何调试?
感谢您的帮助
M
答案 0 :(得分:0)
好的, 如果还有其他人试图解决这个问题。我不知道为什么这行得通,但是行得通... 1.使用rtcwake comand编写脚本。...:
#!/bin/bash
# suspend then wake from a bash script
echo attempting to suspend!
/usr/sbin/rtcwake -m mem -u -t $(date +%s -d "1 minutes")
我将此唤醒睡眠称为“唤醒睡眠”,并将其放在/ usr / local / bin(在PATH中)上,使其可执行...
sudo chmod +x /usr/local/bin/sleepwake
然后在su版本的crontab中添加一行:
sudo crontab -e
在crontab根目录中添加的行具有以下格式:
10 * * * * /usr/local/bin/sleepwake
...,它可以工作。对于我来说,这是一个谜,为什么以前的方法不起作用,但是行得通。非常希望听到某人的两种方法之间的区别。
答案 1 :(得分:0)
%
字符是crontab方法中的问题。该字符在crontab中具有特殊含义(换行符...标准输入法的开始,请参见手册)。
您可以使用-t $(date +%s -d "1 minutes")
来睡眠60秒,而不必使用-s 60
,而不用%
。或者,您可以使用\%
进行转义,或者使用'+%s'
或"+%s"
。