当我打开 时gnome-terminal
,它没有向我显示默认的 Bash shell,而是显示:
sh-4.4$
自从我添加DISPLAY=:0
到我的crontab -e
文件后,这种情况就开始发生,现在看起来如下:
DISPLAY=:0
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/updates.sh
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/rclone.sh
还有有趣的:
sh-4.4$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 18. Jun 10:30 /bin/sh -> bash
答案1
我假设这是gnome-terminal
从你的 cronjob 开始的。
绝对不需要运行里面的 cronjob 脚本gnome-terminal
。这样做意味着如果gnome-terminal
无法打开作业就会失败(如果您当时没有使用桌面,则可能会发生这种情况)。
只需使用
0 0,6,12,18 * * * "$HOME"/bin/updates.sh
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh
假设启用了本地电子邮件传送,脚本的任何输出都将通过电子邮件发送给您。要将输出保存到日志文件,请使用重定向:
0 0,6,12,18 * * * "$HOME"/bin/updates.sh >>"$HOME"/updates.log"
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh >>"$HOME"/rclone.log"
cronjobs 运行的环境与您通常通过图形桌面环境登录时的环境不同。一方面,您的默认 shell 可能未在SHELL
环境变量中设置,这就是为什么gnome-terminal
启动/bin/sh
而不是bash
(sh
是 bash
在您的系统上,但在作为 ) 调用时以 POSIX 兼容模式运行sh
。
登录图形桌面环境时,gnome-terminal
照常打开将为您提供默认 shell。如果没有,那是因为有一个gnome-terminal-server
由 cron 作业启动的进程正在运行。通过重新启动或使用 来终止此过程pkill -f gnome-terminal-server
。
也可以看看下面是 JdeBP 发表的评论。