如何通过nohup命令在Ubuntu系统后台高效稳定地运行服务?

更新于
2026-08-13 16:26:19
7阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

Ubuntu后台运行服务的痛点

在服务器运维过程中,经常需要让程序在后台持续运行,但常规方法存在以下问题:

  • 终端关闭即停止普通方式运行的程序会因为终端关闭而中断
  • SSH断开即终止通过SSH连接运行的服务在断开连接后无法保持
  • 资源使用情况不当直接在前台运行可能导致程序资源被占用过多
  • 输出信息丢失关键的日志和调试信息可能因为终端关闭而丢失
  • 进程管理困难没有有效方式监控和管理后台进程状态

nohup命令方法概览

nohup command &

如何通过nohup命令在Ubuntu系统后台高效稳定地运行服务?

`nohup`命令是Ubuntu程序中实现后台稳定运行服务的利器。它能够:

  • 忽略SIGHUP信号- 即使终端关闭或SSH断开,进程仍然保持运行状态
  • 自动重定向输出- 默认将标准输出和错误输出保存到nohup.out文件中
  • 配合&符号使用 - 将进程放入后台执行,释放终端控制权
  • 支持日志分离 - 可通过重定向指定独立日志文件便于管理
  • 轻量级方法 - 不需要额外安装任何工具就可以稳定后台运行

bash

echo 'while True: print;time.sleep'> test.py

nohup python test.py> mylog.log 2>&1 &

tail -f mylog.log

nohup java -jar myapp.jar arg1 arg2> app.out 2> app.err &

echo $!> myapp.pid

ps aux | grep nohup | grep -v grep

kill $

rm -f myapp.pid || true

如何通过nohup命令在Ubuntu系统后台高效稳定地运行服务?
特性 nohup disown screen systemd
依赖安装包
内存使用低
原生支持
自动重启

'&'符号必须放在命令末尾才能正确放入后台! 按理说,否则会导致无法交互式输入等待!'

说到安全注意事项,

  1. 避免直接在根目录执行始终在专门目录下操作以防污染程序环境变量

bash mkdir ~/services && cd $_ # 常用方法示例方法选择技巧

  1. 限制CPU/内存资源

bash taskset -c 0-7 nohup nice -n 19 python script.py &

  1. 清理僵尸进程

bash ps auxw --sort=-pcpu。-pmem,-etime,-pid,+cmd \ awk '$8=="Z"{print $0}' \ xargs kill -9 || echo "No zombie processes found"

  1. 设置超时机制

bash timeout --signal=KILL 7d nohup /path/to/script.sh &

标签:Ubuntu

Ubuntu后台运行服务的痛点

在服务器运维过程中,经常需要让程序在后台持续运行,但常规方法存在以下问题:

  • 终端关闭即停止普通方式运行的程序会因为终端关闭而中断
  • SSH断开即终止通过SSH连接运行的服务在断开连接后无法保持
  • 资源使用情况不当直接在前台运行可能导致程序资源被占用过多
  • 输出信息丢失关键的日志和调试信息可能因为终端关闭而丢失
  • 进程管理困难没有有效方式监控和管理后台进程状态

nohup命令方法概览

nohup command &

如何通过nohup命令在Ubuntu系统后台高效稳定地运行服务?

`nohup`命令是Ubuntu程序中实现后台稳定运行服务的利器。它能够:

  • 忽略SIGHUP信号- 即使终端关闭或SSH断开,进程仍然保持运行状态
  • 自动重定向输出- 默认将标准输出和错误输出保存到nohup.out文件中
  • 配合&符号使用 - 将进程放入后台执行,释放终端控制权
  • 支持日志分离 - 可通过重定向指定独立日志文件便于管理
  • 轻量级方法 - 不需要额外安装任何工具就可以稳定后台运行

bash

echo 'while True: print;time.sleep'> test.py

nohup python test.py> mylog.log 2>&1 &

tail -f mylog.log

nohup java -jar myapp.jar arg1 arg2> app.out 2> app.err &

echo $!> myapp.pid

ps aux | grep nohup | grep -v grep

kill $

rm -f myapp.pid || true

如何通过nohup命令在Ubuntu系统后台高效稳定地运行服务?
特性 nohup disown screen systemd
依赖安装包
内存使用低
原生支持
自动重启

'&'符号必须放在命令末尾才能正确放入后台! 按理说,否则会导致无法交互式输入等待!'

说到安全注意事项,

  1. 避免直接在根目录执行始终在专门目录下操作以防污染程序环境变量

bash mkdir ~/services && cd $_ # 常用方法示例方法选择技巧

  1. 限制CPU/内存资源

bash taskset -c 0-7 nohup nice -n 19 python script.py &

  1. 清理僵尸进程

bash ps auxw --sort=-pcpu。-pmem,-etime,-pid,+cmd \ awk '$8=="Z"{print $0}' \ xargs kill -9 || echo "No zombie processes found"

  1. 设置超时机制

bash timeout --signal=KILL 7d nohup /path/to/script.sh &

标签:Ubuntu