Linux nohup 命令详解

Linux nohup 命令详解

nohup 是 Linux/Unix 系统中一个非常有用的命令,用于在用户注销(logout)或终端关闭后仍然运行指定的命令或程序。

基本语法

nohup COMMAND [ARG]...

或者结合 & 在后台运行:

nohup COMMAND [ARG]... &

功能说明

  1. 忽略挂断信号(SIGHUP):当终端关闭时,系统会向所有关联的进程发送 SIGHUP 信号,默认情况下这会终止进程。nohup 使命令忽略这个信号。

  2. 输出重定向:默认情况下,nohup 会将命令的输出重定向到当前目录下的 nohup.out 文件。

常用选项

  • &:将命令放入后台执行(虽然不是 nohup 本身的选项,但常一起使用)
  • 重定向输出:可以自定义输出文件而非默认的 nohup.out

使用示例

  1. 基本用法

    nohup python script.py &
    

    这会在后台运行 Python 脚本,即使关闭终端也不会中断。

  2. 自定义输出文件

    nohup ./server > server.log 2>&1 &
    

    将标准输出和错误输出都重定向到 server.log 文件。

  3. 查看 nohup 进程

    jobs -l
    

    或者

    ps aux | grep "COMMAND"
    
  4. 终止 nohup 进程
    首先找到进程ID:

    ps aux | grep "COMMAND"
    

    然后使用:

    kill -9 PID
    

注意事项

  1. nohup 不会自动将命令放入后台运行,需要显式使用 &

  2. 如果命令本身已经处理了 SIGHUP 信号,nohup 可能不是必需的。

  3. 某些程序(如交互式程序)可能不适合用 nohup 运行。

  4. 对于长时间运行的服务,建议使用专门的进程管理工具如 systemdsupervisord 等。

替代方案

对于现代 Linux 系统,nohup 的一些功能可以被更强大的工具替代:

  1. tmux/screen:终端复用器,可以保持会话持续运行
  2. disown:bash 内置命令,从 shell 的作业表中移除作业
  3. systemd:系统服务管理,更适合持久化服务

nohup 仍然是简单场景下快速保持进程运行的便捷工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值