我有 Debian Stretch 并运行 systemd(默认安装)。我想通过 cron 在启动时启动 2 行 bash 脚本。
echo something > file.txt
xfce4-terminal [...] --command="watch [....]" 2>&1 &
该脚本在手动启动时工作正常:打开一个窗口并启动“watch”命令。我使用第一行来检查它是否在启动时启动(就像一种邮票)。
我已经尝试过 root 用户和非 root 用户。我用 crontab -e 和 vi 编辑了 cron (export VISUAL="vi")
@reboot /path/to/script/script.sh
启动时,脚本启动(我检查了 file.txt),但 xfce4-terminal 打开的窗口不存在。而且……“Systemd”看起来就像大 Berta,因为它只是在启动时启动脚本……
任何想法?谢谢你们!
答案1
想一想。您重新启动计算机并去煮一杯咖啡。 cron 作业尝试运行,但它应该在哪里打开终端?你甚至还没有登录...
Cron 作业与交互式 GUI 环境不在同一环境中运行,因此您通常不会像在命令提示符下键入普通命令一样安排 cron 作业,而不注意设置 cron 所需的环境变量等。作业需要运行。
在这种情况下,这不仅仅是一些环境变量的问题,而且事实上,当 cron 作业运行时,用户甚至可能没有登录。图形终端需要桌面环境才能运行。
我的猜测是,您希望每次启动桌面环境时都启动命令(登录时,而不是重新启动时)。
要在 XFCE 中执行此操作,请转到“设置”->“会话和启动”->“应用程序自动启动”,然后单击,或创建一个扩展名为Add
的文件(此目录可能不存在,因此您可能必须创建它)。.desktop
~/.config/autostart/
该文件应该看起来像
[Desktop Entry]
Version=1.0
Name=Script
Type=Application
Exec=/home/user/bin/script.sh
Terminal=false
StartupNotify=false
哪里/home/user/bin/script.sh
有一个脚本可以做你想做的事情。
(以上摘自XFCE 论坛主题我不知道它是否有效,因为我什至没有运行 X11)
还相关:Xfce初始化脚本