我在本地机器上设置了以下 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
Run Code Online (Sandbox Code Playgroud)
它应该在终端中打开另一个 sh 脚本。但什么也没有发生。还有什么我需要做的吗?像重新启动服务或什么让 cron 作业开始运行?
***文件中给出的绝对路径是正确的。当我/bin/bash -c /home/JSX/Stuff/J/login-check/open-console.sh直接在终端中输入命令时,它起作用了。
Jan*_*ary 10
Cron 不知道当前显示在哪里(从它的角度来看,可能有许多正在运行),因此它不能——轻松——启动图形终端。如果你是机器上唯一一个只有一个 X 会话的用户,你可以尝试定义你的 DISPLAY 变量
export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)
in open-console.sh,但我不确定它是否会起作用。
cron 的主要目的是启动在指定时间点在后台运行的非交互式服务。其他任务应该使用 dbus 和 ConsoleKit 来处理,但这有点复杂,请参阅此问题。