插件窝 干货文章 Linux中的nohup命令怎么使用

Linux中的nohup命令怎么使用

nohup 输出 定向 运行 313    来源:    2025-04-27

nohup 是 Linux 中一个常用的命令,用于在用户退出登录后仍保持进程运行。它的基本作用是忽略挂断信号(SIGHUP),使命令在后台持续执行,即使终端关闭也不会中断。以下是详细使用说明:


基本语法

nohup <command> [args] &
  • &:将命令放到后台运行。
  • 默认情况下,输出会重定向到当前目录的 nohup.out 文件。

常见用法示例

  1. 启动后台进程并忽略挂断信号

    nohup python script.py &
    
    • 输出会保存到 nohup.out
  2. 自定义输出文件

    nohup ./start_server.sh > server.log 2>&1 &
    
    • > 将标准输出重定向到 server.log
    • 2>&1 将标准错误也重定向到同一文件。
  3. 完全忽略所有输出

    nohup command > /dev/null 2>&1 &
    
    • 丢弃所有输出(包括错误)。

关键注意事项

  1. 进程管理

    • 启动后可以通过 jobs -l 查看后台任务。
    • 终止进程需手动 killbash kill -9 <PID> # 通过 ps aux | grep <command> 查找PID
  2. 日志轮转

    • 长期运行的进程可能导致 nohup.out 文件过大,建议使用 logrotate 或自定义日志路径。
  3. disowntmux/screen 的区别

    • nohup 仅忽略 SIGHUP 信号,而 disown 可将已运行的任务从 shell 的作业列表中移除。
    • 复杂任务推荐使用 tmuxscreen 会话管理。

实际场景示例

  • 运行一个 Python Web 服务bash nohup uvicorn app:app --host 0.0.0.0 --port 8000 > uvicorn.log 2>&1 &
  • 下载大文件时退出终端bash nohup wget https://example.com/large_file.zip &

总结

  • 简单后台任务nohup command & + 输出重定向。
  • 长期稳定运行:建议结合 tmux/screen 或系统服务(如 systemd)。
  • 日志管理:务必重定向输出到文件,避免占用终端或丢失日志。

如果有进一步的使用场景或问题,可以具体说明!