有没有办法使用 crontab 中的两个命令(例如关机和重启后运行脚本)?

有没有办法使用 crontab 中的两个命令(例如关机和重启后运行脚本)?

有没有办法使用 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但脚本等待你退出exitCtrl+ 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

相关内容