我有一个系统服务,写到液晶屏幕如下;
[Unit]
Description=LCD Screen
[Service]
Type=simple
User=admin
WorkingDirectory=/lcd
ExecStart=sudo /run_lcd.py
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=lcd-service
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target我只希望当液晶显示屏连接到机器上时,服务才能运行。由于面板是通过串口连接的,唯一知道的方法就是向LCD屏幕发送一条特定的消息,如果连接到LCD屏幕上,就会返回一个值。如果我在脚本中运行它,是否有一种方法可以获得脚本的输出并根据输出运行服务?
我看过系统中的条件和断言%d,但它并没有显示出做我想做的事情的选择。任何帮助都将不胜感激。
发布于 2022-12-02 05:24:55
您必须将Restart=always更改为Restart=on-success,正如@Panki所说的那样,您应该使用ExecStartPre。
因此,我建议您使用另一个脚本(我在python中假设)来检查屏幕是否连接,例如,一个简单的python脚本是:
#you will have to add before this lines the code
#used for getting the status of screen
if screenIsConnected:
exit(0)
else:
exit(1)您的系统服务将变成:
[Unit]
Description=LCD Screen
[Service]
Type=simple
User=admin
WorkingDirectory=/lcd
ExecStartPre=/usr/bin/python3 /checkScreen.py
ExecStart=sudo /run_lcd.py
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=lcd-service
Restart=on-success
RestartSec=10
[Install]
WantedBy=multi-user.targethttps://unix.stackexchange.com/questions/726729
复制相似问题