用于将脚本作为服务运行的系统配置

时间:2018-04-27 16:26:27

标签: sh systemd systemctl

如果我跑def dialogOpen(self): sub = subDialog() if sub.exec_(): check = str(sub.checkbox.isChecked()) spin = str(sub.spinbox.value()) self.label1.setText('spinbox value is ' + spin) self.label2.setText('Checkbox is ' + check) 一切正常; 如果我通过systemd服务运行它,脚本将不会被执行。

脚本内容:

/home/pi/update.sh

这里是Systemd config:下面的代码中是否有任何错误?

/home/pi/update.sh

#!/bin/sh
script='/opt/server/htdocs/due.py'
/usr/bin/python $script &

此状态:

/lib/systemd/system/httpdevice.service
/etc/systemd/system/multi-user.target.wants/httpdevice.service

    [Unit]
    Description=httpdevice-service

    [Service]
    Type=simple
    User=pi
    ExecStart=/home/pi/update.sh

    [Install]
    WantedBy=multi-user.target

1 个答案:

答案 0 :(得分:0)

这里的问题是Type=simple。你的服务肯定开始了,然后退出。但是,您可能会被子Python进程误导。子进程不是“简单”服务的一部分。

只有ExecStart=/opt/bin/python opt/server/htdocs/due.py并跳过整个脚本可能更简单。