当我打开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
我假设这是
gnome-terminal
从你的 cronjob 开始的。绝对不需要在里面运行 cronjob 脚本
gnome-terminal
。这样做意味着如果gnome-terminal
无法打开作业将会失败(如果您当时没有使用桌面,这可能会发生)。只需使用
假设启用了本地电子邮件传递,脚本的任何输出都将通过电子邮件发送给您。要将输出保存到日志文件,请使用重定向:
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 发布的评论。