我对 systemd 还很陌生,正在尝试编写一个运行 php 脚本的 .service 文件。脚本运行时需要等待其他人的输入才能执行任何操作,并且保持打开状态直到我按下 ctrl-C。
编辑:将其放在这里是为了澄清我的问题
除非将 RemainAfterExit 选项设置为 true,否则此服务在启动后会立即退出。退出代码为 203。使用 RemainAfterExit,它不会退出但永远不会运行。恐怕我很困惑。
以下是我所拥有的通用版本:
[Unit]
Description=foo
Wants=foo.service
[Service]
WorkingDirectory=/home/foo/bar
RemainAfterExit=true
ExecStart=/home/foo/bar/foo.php
Restart=on-failure
[Install]
WantedBy=multi-user-.target
我想做的事:
在另一个所需服务之后启动 php 脚本(想要/之后?)
保持 php 脚本运行,可以在终端窗口或后台(简单/分叉?)
不要退出。如果崩溃(失败时)则重新启动。如果我希望它始终运行,是否始终合适?
如果可能的话,我更愿意解释为什么这项服务写得不好/不正确以及我需要做什么,而不是修复代码。由于我正在学习,所以特别欢迎提供链接。
答案1
解决了。有两个问题。
问题 1:ExecStart=/home/foo/bar/foo.php
这需要是 ExecStart=/user/bin/(phpversion) -f /home/foo/bar/foo.php 愚蠢的错误!
问题 2:我不得不手动停止该进程,systemctl stop *.service、systemctl daemon-reload、systemctl start *.service。它运行了,我的脚本成功接收/回复了其他客户端。