我在本地机器上设置了以下 cron。
* * * * * /bin/bash -c /home/JSX/Stuff/J/login-check/open-console.sh
内容open-console.sh
如下:-
#! /bin/sh
gnome-terminal --full-screen --hide-menubar -e /home/JSX/Stuff/J/login-check/handle-user.sh
它应该在终端中打开另一个 sh 脚本。但什么都没有发生。我还需要做什么吗?比如重新启动服务或让 cron 作业开始运行?
***/bin/bash -c /home/JSX/Stuff/J/login-check/open-console.sh
文件中给出的绝对路径是正确的。当我直接在终端中输入命令时,它起作用了。
答案1
Cron 不知道当前显示在哪里(从它的角度来看,可能有很多正在运行的显示),因此它无法轻松启动图形终端。如果您是机器上只有一个 X 会话的唯一用户,您可以尝试定义 DISPLAY 变量
export DISPLAY=:0.0
,open-console.sh
但我不确定它是否会起作用。
cron 的主要目的是在指定的时间点启动在后台运行的非交互式服务。其他任务应使用 dbus 和 ConsoleKit 处理,但这有点复杂,请参阅这个问题。