计划打开终端窗口的 Cron 作业会导致错误

计划打开终端窗口的 Cron 作业会导致错误

我正在运行 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

请注意文件和脚本的完整路径。

相关内容