我正在运行 Amazon Linux。我的 crontab 设置如下。
* * * * * mate-terminal -e run.sh >> output.log 2>&1
我在输出文件中收到以下错误。
Failed to parse arguments: Cannot open display:
我的目标是让 cron 打开一个新的终端窗口并在其中运行脚本。
我已经尝试过以下方法:
- 在当前用户和 sudo 上运行 cron
- 删除要运行的脚本
* * * * * mate-terminal >> output.log 2>&1
对于所有尝试,我在输出文件中都会遇到相同的错误。谢谢
答案1
配对终端需要知道在哪个显示器上打开终端。您很有可能想要使用显示 0,但您应该使用
echo $DISPLAY
在终端上您想要的显示器上。然后将你的 crontab 条目设置为类似的内容
* * * * * mate-terminal -display :0 -e run.sh >> output.log 2>&1
将 替换:0
为 echo 的输出。
答案2
你真的想让 cron 作业在你的 UI 上弹出一个屏幕吗?或者你只是想逃跑run.sh
?
--display
例如,如果您希望作业弹出终端,则必须使用选项指定应在何处显示它。但这可能还不够,因为cron
运行某个用户,该用户可能有权也可能无权访问您的显示器。
如果您只想运行命令,这可能会做(您可能需要更改 shell,具体取决于run.sh
)
* * * * * /bin/sh -e /full/path/to/run.sh >> /full/path/to/output.log 2>&1
请注意文件和脚本的完整路径。