Raspberry pi systemd服务的自动启动和手动启动有什么区别?

Raspberry pi systemd服务的自动启动和手动启动有什么区别?,raspberry-pi,systemd,Raspberry Pi,Systemd,我在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=mu

我在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系统控制停止控制器。服务

sudo systemctl启动控制器。服务


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

不知道你的二进制代码很难判断,但因为我遇到了类似的问题,所以这是我的两分钱:


当systemd服务启动时,二进制文件可能依赖于其他尚未准备好的服务。您可以在服务文件中的之后使用关键字
,以便等待其他服务。如果手动启动,一切都能正常工作,这一事实让我认为这纯粹是时间问题,您的服务很可能启动得太早,而其他服务可能依赖于此。在5月份的案例中,网络服务就是一个例子。

是的!事实上,这就是解决办法。虽然我不确定我需要的是哪种服务,但现在我只是把每一项服务都放在
After=
上。我需要多一点时间来试验我真正需要的东西。无论如何,非常感谢!经过进一步调查,这就是我需要的:
After=hciuart.service