告别终端依赖:nohup+systemd 实现 bash 任务的持久化运行

使用 nohup 实现后台运行

nohup 命令可以让脚本忽略 SIGHUP 信号,即使终端关闭也能继续执行。基本语法如下:

nohup your_script.sh &  

  • & 表示后台运行
  • 输出默认重定向到 nohup.out,可通过 nohup your_script.sh > custom.log 2>&1 & 自定义日志路径

结合 systemd 实现服务化管理

通过 systemd 可将脚本转化为守护进程,支持开机自启、日志管理和状态监控。

创建 service 单元文件

/etc/systemd/system/ 下新建服务文件(如 my_service.service):

[Unit]
Description=My Persistent Bash Script

[Service]
Type=simple
ExecStart=/path/to/your_script.sh
Restart=always
User=your_username

[Install]
WantedBy=multi-user.target

关键参数说明
  • Restart=always:进程异常退出时自动重启
  • User:指定运行用户,避免权限问题
  • Type=simple:适用于前台运行的脚本(若需后台脚本,改用 forking
启用并管理服务
systemctl daemon-reload                  # 重载配置  
systemctl start my_service               # 启动服务  
systemctl enable my_service              # 设置开机自启  
journalctl -u my_service -f              # 查看实时日志  

进阶优化建议

  • 日志分割:通过 logrotate 配置定期切割日志,防止 nohup.out 或 systemd 日志过大。
  • 资源限制:在 service 文件中添加 MemoryLimitCPUQuota 控制资源占用。
  • 依赖管理:利用 [Unit] 段的 AfterRequires 设置服务启动顺序。

方案对比

  • nohup:简单快捷,适合临时任务,但缺乏监控和自动恢复能力。
  • systemd:提供完整的生命周期管理,适合生产环境长期运行。

通过组合两者,既能快速验证脚本功能,又可无缝升级为稳定服务。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值