插件窝 干货文章 在Linux中如何用nohup命令避免SSH会话中断影响进程

在Linux中如何用nohup命令避免SSH会话中断影响进程

进程 nohup 运行 会话 481    来源:    2025-05-07

在Linux中使用nohup命令避免SSH会话中断影响进程

nohup是Linux中一个非常有用的命令,它可以让进程在用户注销(logout)或SSH会话中断后继续运行。以下是详细使用方法:

基本用法

nohup command [arguments] &
  • nohup - 使进程忽略挂起信号(SIGHUP)
  • & - 将进程放入后台运行

实际示例

  1. 运行Python脚本并保持后台执行

    nohup python3 script.py > output.log 2>&1 &
    
  2. 运行Java程序

    nohup java -jar app.jar > app.log 2>&1 &
    

关键参数说明

  • > output.log - 将标准输出重定向到文件
  • 2>&1 - 将标准错误(2)重定向到标准输出(1),即也写入日志文件
  • & - 后台运行

查看nohup进程

jobs -l       # 查看当前会话的后台作业
ps aux | grep command_name  # 查看所有相关进程

终止nohup进程

  1. 首先找到进程ID:

    ps aux | grep command_name
    
  2. 然后终止进程:

    kill -9 PID
    

替代方案

除了nohup,还可以考虑使用: - screentmux - 终端多路复用器 - disown - 从当前shell中移除作业 - systemd - 对于长期运行的服务

注意事项

  1. nohup默认会将输出写入nohup.out文件,建议明确指定输出文件
  2. 确保有足够的权限写入日志文件
  3. 对于关键服务,建议使用专门的进程管理工具如supervisord

通过合理使用nohup,可以确保SSH会话断开后关键进程继续运行,非常适合远程服务器管理场景。