如何使Shell脚本在重新启动时正确执行

卡莱布·贝克(Caleb Baker)

我有一个Shell脚本,该脚本从github获取更新,然后运行它检索的代码。它位于/home/me/Desktop/refreshCode.sh

-- refreshCode.sh --

#!/bin/bash

cd /home/me/src/ProductionMonitor
sudo /usr/bin git -C /home/me/src/ProductionMonitor pull
sudo cp /home/me/src/ProductionMonitor/* /home/me/Desktop/Production
cd /home/me/Desktop/Production
sudo /usr/bin/python3 prodmain.py >> logfile.data

我知道该外壳程序可以手动启动并按预期运行。它打开了tkinter窗口,我可以与屏幕进行交互。

但是我似乎无法正确启动任何东西。

我尝试为@reboot设置crontab,但未成功。它从不显示用户界面

我这样设置了Systemd服务。

-- prodmon.service --

[Unit]
Description=Service to run production monitor
After=multi-user.target

[Service]
Type=forking
ExecStart=/home/me/Desktop/refreshCode.sh
User=caleb
Group=caleb
WorkingDirectory=/home/me/Desktop/Production/
PIDFile=/var/run/prodmon.pid

[Install]
WantedBy=multi-user.target

引导后检查服务的状态,表明服务正在运行。但是,tkinter用户界面从不显示。

吉姆·杜拉特(Ljm Dullaart)

您可能不应该把所有的东西都洗掉。一切都在您自己的目录下。

您的问题的重点是,脚本不知道该窗口的显示位置。尝试添加

echo "DISPLAY=$DISPLAY" >> logfile.data

您可能会看到

DISPLAY=

在`logfile.data中。此外,如果您使用:

/usr/bin/python3 prodmain.py >> logfile.data 2>/tmp/errorfile

您可能会看到/tmp/errorfile类似以下内容的:

prodmain: Xt error: Can't open display: 
prodmain: DISPLAY is not set

因此,这就是它在启动时不显示的原因。

现在如何解决:这在很大程度上取决于您要的内容。您可以从~/.xinitrc登录图形环境开始启动程序您可以将工作分为两部分:在启动时执行gitcp,以及prodmain从中执行.xinitrc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Debian上关闭/重新启动时是否可以首先执行脚本?

重新启动时我的脚本从哪里开始

重新启动时Nodemon不执行命令

如何使用 Bash 脚本在每次重新启动时挂载分区?

每次重新启动时,如何使Docker容器每次运行脚本?

如何设置php在重新启动时启动?

每次Django重新启动时如何调用函数?

如何在每次重新启动时更改initcwnd?

每次重新启动时,分区目录如何更改?

如何在重新启动时擦除 Ubuntu

如何在每次重新启动时重新启动服务?

重新启动时保留/ tmp

每当特定的systemd服务重新启动时,如何触发自定义脚本运行

如何使用 Shell 脚本重新启动 docker 服务

如何在每次重新启动时在Windows 8.1中保留Classic Shell开始菜单?

使用Shell脚本在重新启动时运行Android Studio

用信号重新启动 shell 脚本

Ubuntu 18.04.2 LTS | 重新启动并选择正确的启动设备或在尝试双启动时插入启动媒体

仅在关机时不重新启动时在systemd服务上运行脚本

终端重新启动时在特定的终端选项卡中执行命令

当我的服务器服务在 systemd 中重新启动时如何重新启动蓝牙服务

Mule Batch-如何在服务器重新启动时停止自动重新启动?

如何在启动时执行许多循环脚本?

如何在启动时让ConEmu执行Powershell脚本?

linux启动时如何执行python脚本

如何在启动时自动运行Shell脚本?

如何避免每次重新启动时重新安装ruby?

服务器重新启动时如何使SOLR“启动”到云模式

如何在Linux上重新启动时使PGBouncer自动启动?