用户 systemd 服务仅在 SSH-ing 进入机器时重启
User systemd service restarting only when SSH-ing into the machine
我有一个奇怪的情况,托管在 debian 实例上的 Web 服务有时会停止,并且不会自动重新启动。然而,当 SSH-ing 进入机器时,服务似乎自动重新启动。
我原本希望服务一直启动并重新启动,你能帮我找出问题所在吗?我可能误解了 systemctl --user
服务对 运行 的意义。
有问题的服务是 Rails 应用程序 运行 乘客独立,但我相信问题可能只是 systemd 文件中的错误配置。
我的系统文件
# .config/systemd/user/my_service.service
[Unit]
Description=passenger with rails server for my_service (production)
After=syslog.target network.target
[Service]
Type=forking
PrivateTmp=yes
WorkingDirectory=/websites/xxx/current
PIDFile=/websites/xxx/shared/tmp/pids/passenger.8080.pid
ExecStart=/home/outscale/.asdf/shims/bundle exec passenger start /websites/xxx/current
ExecStop=/home/outscale/.asdf/shims/bundle exec passenger stop /websites/xxx/current
MemoryAccounting=true
MemoryLimit=3584M
Restart=always
RestartSec=1
TimeoutStopSec=30
KillMode=mixed
StandardInput=null
SyslogIdentifier=%p
# Environment
Environment="RAILS_ENV=production"
Environment="NODE_ENV=production"
[Install]
WantedBy=default.target
我已经复制了这个安装服务使用
systemctl --user daemon-reload
systemctl --user enable my_service
我是不是想用别的东西,比如 systemctl --global enable unit
?我希望我的服务 运行 与安装服务的“outscale”用户(否则我的版本管理器 asdf 无法按预期工作)
我找到了问题的解决方案 there。我误解了 --user 标志的行为(VS 在服务文件中使用 User= 属性)
我是 运行 在 debian 11 下并且如提到的答案中所述,我的服务在退出 ssh 后不一定会关闭,但只会在某个时候关闭(不清楚它是否发生在我的服务时第一次崩溃或某种垃圾收集)
作为对用户登录和启动所有服务的反应,在实例中通过 SSH 连接时,服务会神奇地再次启动。
因此,解决方法是使用 User= 重新实现服务,但不使用 --user 标志,使其成为全球可用的服务。
我有一个奇怪的情况,托管在 debian 实例上的 Web 服务有时会停止,并且不会自动重新启动。然而,当 SSH-ing 进入机器时,服务似乎自动重新启动。
我原本希望服务一直启动并重新启动,你能帮我找出问题所在吗?我可能误解了 systemctl --user
服务对 运行 的意义。
有问题的服务是 Rails 应用程序 运行 乘客独立,但我相信问题可能只是 systemd 文件中的错误配置。
我的系统文件
# .config/systemd/user/my_service.service
[Unit]
Description=passenger with rails server for my_service (production)
After=syslog.target network.target
[Service]
Type=forking
PrivateTmp=yes
WorkingDirectory=/websites/xxx/current
PIDFile=/websites/xxx/shared/tmp/pids/passenger.8080.pid
ExecStart=/home/outscale/.asdf/shims/bundle exec passenger start /websites/xxx/current
ExecStop=/home/outscale/.asdf/shims/bundle exec passenger stop /websites/xxx/current
MemoryAccounting=true
MemoryLimit=3584M
Restart=always
RestartSec=1
TimeoutStopSec=30
KillMode=mixed
StandardInput=null
SyslogIdentifier=%p
# Environment
Environment="RAILS_ENV=production"
Environment="NODE_ENV=production"
[Install]
WantedBy=default.target
我已经复制了这个安装服务使用
systemctl --user daemon-reload
systemctl --user enable my_service
我是不是想用别的东西,比如 systemctl --global enable unit
?我希望我的服务 运行 与安装服务的“outscale”用户(否则我的版本管理器 asdf 无法按预期工作)
我找到了问题的解决方案 there。我误解了 --user 标志的行为(VS 在服务文件中使用 User= 属性)
我是 运行 在 debian 11 下并且如提到的答案中所述,我的服务在退出 ssh 后不一定会关闭,但只会在某个时候关闭(不清楚它是否发生在我的服务时第一次崩溃或某种垃圾收集)
作为对用户登录和启动所有服务的反应,在实例中通过 SSH 连接时,服务会神奇地再次启动。
因此,解决方法是使用 User= 重新实现服务,但不使用 --user 标志,使其成为全球可用的服务。