未找到 systemd 服务命令并超时
systemd service command not found and timeout
我试图在后台为 mozilla 同步存储设置一个 .service 到 运行 作为服务,但我遇到了 2 个问题。但在我描述我所做的之前:
我创建了一个名为 syncstorageStarter.sh
的入门脚本,它位于 /opt/syncstorage-rs/ 下,
它的内容是:
#!/bin/bash
source /opt/syncstorage-rs/venv/bin/activate
RUST_LOG=debug RUST_BACKTRACE=full /root/.cargo/bin/cargo run --features tokenserver_test_mode -- --config config/local.toml
然后我在 /etc/systemd/system/:
下创建了 syncstorage.service 文件
[Unit]
Description=Mozilla Syncstorage-RS Server
After=network.target nss-lookup.target httpd-init.service
[Install]
WantedBy=multi-user.target
Alias=syncstorage.service
[Service]
Type=forking
WorkingDirectory=/opt/syncstorage-rs/
ExecStart=/opt/syncstorage-rs/syncstorageStarter.sh
TimeoutSec=100
KillMode=process
KillSignal=SIGTERM
正如您在片段 1 中所见,我使用源代码调用激活脚本来设置环境,然后我调用货物 运行 等
- 奇怪的问题 1:我必须在
cargo
命令之前使用 /root/.cargo/bin,否则我会得到一个错误 cargo command not found。为什么?
- 问题 2:当我执行 systemctl startsync 时...它以某种方式启动,并且在定义的超时后它被杀死,即使我可以在状态/日志中看到该服务已启动。知道为什么会这样吗?
Mar 15 12:18:46 xx syncstorageStarter.sh[676981]: Mar 15 12:18:46.369 INFO Server running on http://127.0.0.1:5000 (mysql) No quota
Mar 15 12:20:32 xx systemd[1]: syncstorage.service: start operation timed out. Terminating.
问题是分叉类型。即使一个脚本调用另一个脚本,类型也必须是“简单的”。
要强化启动过程,应在“服务”部分下设置另一个值 TimeoutStartSec=180
。
我试图在后台为 mozilla 同步存储设置一个 .service 到 运行 作为服务,但我遇到了 2 个问题。但在我描述我所做的之前:
我创建了一个名为 syncstorageStarter.sh
的入门脚本,它位于 /opt/syncstorage-rs/ 下,
它的内容是:
#!/bin/bash
source /opt/syncstorage-rs/venv/bin/activate
RUST_LOG=debug RUST_BACKTRACE=full /root/.cargo/bin/cargo run --features tokenserver_test_mode -- --config config/local.toml
然后我在 /etc/systemd/system/:
下创建了 syncstorage.service 文件[Unit]
Description=Mozilla Syncstorage-RS Server
After=network.target nss-lookup.target httpd-init.service
[Install]
WantedBy=multi-user.target
Alias=syncstorage.service
[Service]
Type=forking
WorkingDirectory=/opt/syncstorage-rs/
ExecStart=/opt/syncstorage-rs/syncstorageStarter.sh
TimeoutSec=100
KillMode=process
KillSignal=SIGTERM
正如您在片段 1 中所见,我使用源代码调用激活脚本来设置环境,然后我调用货物 运行 等
- 奇怪的问题 1:我必须在
cargo
命令之前使用 /root/.cargo/bin,否则我会得到一个错误 cargo command not found。为什么? - 问题 2:当我执行 systemctl startsync 时...它以某种方式启动,并且在定义的超时后它被杀死,即使我可以在状态/日志中看到该服务已启动。知道为什么会这样吗?
Mar 15 12:18:46 xx syncstorageStarter.sh[676981]: Mar 15 12:18:46.369 INFO Server running on http://127.0.0.1:5000 (mysql) No quota
Mar 15 12:20:32 xx systemd[1]: syncstorage.service: start operation timed out. Terminating.
问题是分叉类型。即使一个脚本调用另一个脚本,类型也必须是“简单的”。
要强化启动过程,应在“服务”部分下设置另一个值 TimeoutStartSec=180
。