【问题标题】:What could be the difference between automatic and manua startup of systemd service?systemd服务的自动启动和手动启动有什么区别?
【发布时间】:2021-06-21 15:36:47
【问题描述】:

我在 Raspberry PI(Raspbian GNU/Linux 10)上创建了一个简单的 systemd 服务,它启动了一个二进制文件

[Unit]
Description=Bestest description ever

[Service]
User=root
WorkingDirectory=/tmp
ExecStart=/home/pi/Documents/Repos/rpi3b-app/bin/rpi3b_app
Restart=always

[Install]
WantedBy=multi-user.target

当我启动 PI 时,它启动得很好,但是应用程序的行为很奇怪。这是我编写的 LED 灯条控制器应用程序,有问题的部分是 GPIO 引脚。真的不想写更多细节,因为我认为问题与 systemd 服务有关。

如果我手动停止服务,然后再次启动它,一切正常。停止并重新开始是指以下命令:

sudo systemctl stop controller.service

sudo systemctl start controller.service

我真的不明白这和我启动系统时自动启动有什么区别。希望有人有一个很好的提示,从哪里开始调查。

【问题讨论】:

    标签: raspberry-pi systemd


    【解决方案1】:

    不知道你的二进制文件很难说,但由于我遇到了类似的问题,所以这些是我的两分钱:

    您的二进制文件可能依赖于在您的 systemd 服务启动时尚未准备好的其他服务。您可以在服务文件中使用after 之类的关键字来解决,等待其他服务。如果手动启动一切正常,我认为这纯粹是时间问题,您的服务可能在其他可能依赖的服务之前启动得太早了。例如,在可能的情况下是网络服务。

    【讨论】:

    • 是的!确实,这就是解决方案。虽然我不确定我需要哪种服务,但现在我只是将每一项服务都发送到After=。我需要更多时间来试验我真正需要的那些。无论如何,非常感谢!
    • 经过进一步调查,这是我需要的:After=hciuart.service
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2021-01-08
    • 2020-05-11
    • 1970-01-01
    • 2015-01-01
    • 2015-11-17
    • 2015-06-13
    相关资源
    最近更新 更多