Cronjob - 脚本在重启时不运行

Cronjob - 脚本在重启时不运行

我需要myscript.sh在每次重启时执行一个脚本。在crontab -e我写下之后:

@reboot /home/techy/Documents/myscript.sh

该文件在之后可执行chmod 777 myscript.sh,但我无法从 shell 脚本获取输出。

我的 shell 脚本应该改变桌面背景,并且如果从终端执行则可以正常工作。

答案1

您无法使用@reboot、 (甚至cron)执行此操作。当您的@reboot脚本运行时,您尚未登录(myscript.sh以 身份运行root),X 服务器尚未启动,并且您想要更改的背景甚至不存在。

我建议使用~/.config/autostart/。那里的文件是.desktop文件,请参阅,,,man desktop-file-validate...。由于我的文件将图标放在屏幕顶部,所以我认为这是“更改桌面背景”的正确上下文/时间。man desktop-file-editman desktop-file-install~/.config/autostart/

答案2

我会尝试这个。

@reboot sleep 45 && sh /home/techy/Documents/myscript.sh

这为您的启动提供了一些时间,并且 sh 实际上会调用 shell 脚本。您可能需要运行chmod -x /home/techy/Documents/myscript.sh此脚本来取消对脚本和路径的限制。

答案3

你想执行你的脚本登录时,而不是在启动时。
如上所述,一个好方法是将启动器(.desktop 文件)放在自动启动文件夹中
~/.config/autostart/

有关 Gnome Autostart 的更多信息:
桌面应用程序自动启动规范

-1- 创建启动器:
将这些行复制/粘贴到终端中

tee -a  ~/.config/autostart/myscript.desktop << END1
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec='/home/techy/Documents/myscript.sh'
Name=myscript
END1
chmod +x ~/.config/autostart/myscript.desktop

-2- 首次启动启动器,它会要求你验证
使用文件管理器浏览到~/.config/autostart/
双击新创建的myscript.desktop文件
验证安全消息弹出窗口

-3- 完成,测试一下
注销然后重新登录即可查看其是否正常运行

答案4

不确定你的脚本的具体内容myscript.sh

如果您的脚本需要连接远程主机,那么在执行该脚本之前您首先需要互联网连接。

为了解决这个问题,您需要sleep 5m在脚本中添加一些延迟(例如:),直到互联网连接成功建立。

此方法解决了我的问题,但不确定是否也适合您。

相关内容