You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下daemon service崩溃自动重启:Restart=on-failure是否足够?

解答:Restart=on-failure是否足以实现应用崩溃自动重启?

没错,Restart=on-failure这一行完全能让systemd在你的应用崩溃时自动重启服务,不过咱们得把几个关键细节捋清楚,确保你的配置能稳定运行:

为什么Restart=on-failure有效?

systemd的Restart参数中,on-failure的触发场景正好覆盖了大多数应用崩溃的情况:

  • 当应用进程以非零退出码终止时(比如未处理的异常导致的崩溃退出)
  • 当进程被信号杀死时(比如段错误SIGSEGV、总线错误SIGBUS这类典型的崩溃信号)
  • 当进程出现超时退出时

这些场景正好对应你担心的“应用崩溃”情况,所以这个配置是有效的。

你的配置需要修正一个小问题

注意到你ExecStart里的路径/home/my username包含空格,systemd会把空格后的部分当成额外参数解析,导致服务启动失败。你需要用双引号把带空格的路径括起来:

ExecStart = /usr/bin/dotnet "/home/my username/Desktop/publish/SimpleApp.dll"

可选的优化配置

如果想让服务重启逻辑更稳健,还可以添加两个实用参数:

  • RestartSec=5:指定崩溃后延迟5秒再重启,避免短时间内频繁重启给系统带来不必要的压力(默认是100毫秒,稍微调长一点更合理)
  • WatchdogSec=30:如果你的应用可能出现“挂起无响应”(不是直接崩溃退出)的情况,可以配合应用内部的watchdog心跳机制,让systemd检测到无响应进程并重启它(需要你的.NET应用支持watchdog功能)

修正并优化后的完整配置如下:

[Unit]
Description = Hello World Daemon
[Service]
ExecStart = /usr/bin/dotnet "/home/my username/Desktop/publish/SimpleApp.dll"
Restart = on-failure
RestartSec=5  # 可选:添加延迟重启时间
[Install]
WantedBy = multi-user.target

内容的提问来源于stack exchange,提问作者Charanoglu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:14:17