我有一个使用“java -jar app.jar”运行 Java GUI 应用程序的脚本。我已将该脚本添加到 crontab 中,每分钟运行一次,检查进程列表是否已启动。如果没有,则应启动该应用程序。
但是,它只启动了进程,而不是 GUI。我已将“export DISPLAY=:0”添加到脚本顶部,但这没有帮助。
我如何让 cron 运行该程序,就像我自己启动它一样?
谢谢
答案1
要在命令部分使用 cron 运行 GUI 应用程序,请按以下方式替换命令名称部分
env DISPLAY=:0 gui_appname
该
env DISPLAY=:0
部分将告诉 cron 使用当前显示(桌面)来运行程序“gui_appname”。例如,要运行 rtorrent 客户端(Linux 中基于终端的流行 torrent 客户端),crontab 如下所示
# m h dom mon dow command 47 09 18 11 * env DISPLAY=:0 gnome-terminal -e rtorrent
答案2
为了完整性和评论中@nanoman 的问题,您可以轻松地将 cron 链接到启动 java 应用程序的 .sh 文件,例如这样:
@reboot sleep 15; env DISPLAY=:0 /path/to/.sh
然后使用脚本启动我屏幕上的 JavaFX 应用程序。
#!/bin/sh
java --your-arguments -jar /path/to/jar/file