有没有办法使用 crontab 中的两个命令(例如关机和重启后运行脚本)?
我的整个命令都不起作用。只有第一个命令有效:
22 16 * * * sudo shutdown -r
25 16 * * * @reboot sleep 10 && sudo su && cd / && run my script
从这个命令。
第一次关机成功,第二次关机没有任何反应。
有没有什么办法可以解决这个问题?
FWIW,实际的 crontab 是这样的;上面简化了它以便于阅读:
3 17 * * * sudo shutdown -r
46 17 * * * @reboot sleep 10 && sudo su -c "cd /Old-LibDrive-Main" && nohup python3 main.py &
答案1
第一点在 中crontab
,您需要检查执行该命令的用户。您可以列出特定用户的所有 cron 作业,例如:
crontab -u "user" -l
sudo crontab -l # for root
第二点,第二条命令无法工作,因为您没有/
使用此命令在目录中移动:
sudo su && cd /
或者
sudo su; cd /
你登录root
但脚本等待你退出(exit
或Ctrl+ D)在运行下一个命令之前。你可以在终端中自行测试。
为了使命令有效,您有几种选择,要么/
在运行之前移动到sudo su
,要么使用sudo su -c "cd /; /bin/bash"
代替sudo su && cd /
。像这样:
cd / && sudo su
或者
sudo su -c "cd /; /bin/bash"
但如果您按 方式运行命令root
,则无需执行sudo su
。
第三点,您不需要指定运行该命令的时间,该命令将在系统重启后10秒启动。
结论
整个命令如下:
@reboot sleep 10 && cd / && sudo su && run my script
或者
@reboot sleep 10 && sudo su -c "cd /; /bin/bash" && run my script
如果为创建一个 cron 作业root
,则命令更短:
@reboot sleep 10 && cd / && run my script