首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在脚本条件为True时才运行systemd服务

只有在脚本条件为True时才运行systemd服务
EN

Unix & Linux用户
提问于 2022-11-29 15:44:10
回答 1查看 362关注 0票数 2

我有一个系统服务,写到液晶屏幕如下;

代码语言:javascript
复制
[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,但它并没有显示出做我想做的事情的选择。任何帮助都将不胜感激。

EN

回答 1

Unix & Linux用户

发布于 2022-12-02 05:24:55

您必须将Restart=always更改为Restart=on-success,正如@Panki所说的那样,您应该使用ExecStartPre

因此,我建议您使用另一个脚本(我在python中假设)来检查屏幕是否连接,例如,一个简单的python脚本是:

/checkScreen.py

代码语言:javascript
复制
#you will have to add before this lines the code
#used for getting the status of screen

if screenIsConnected:
    exit(0)
else:
    exit(1)

您的系统服务将变成:

代码语言:javascript
复制
[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.target
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/726729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档