我需要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-edit
man 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
在脚本中添加一些延迟(例如:),直到互联网连接成功建立。
此方法解决了我的问题,但不确定是否也适合您。