Linux后台任务运行方法_nohup与&使用技巧【技巧】

7次阅读

在 Linux 终端中启动程序并使其在关闭终端后继续运行,需使用 nohup 命令(忽略 SIGHUP 信号,默认输出至 nohup.out)、& 符号(仅后台执行但不抗终端关闭)、重定向控制日志、或 disown 命令(脱离 shell 作业控制)。

Linux 后台任务运行方法_nohup 与 & 使用技巧【技巧】

如果您希望在 Linux 终端中启动一个程序并使其在关闭终端后继续运行,则需要借助后台任务管理机制。以下是实现此目标的常用方法:

一、使用 nohup 命令运行后台任务

nohup 命令可使程序忽略 SIGHUP 信号,从而避免因终端关闭而导致进程被终止。该命令会将标准输出和标准错误默认重定向至当前目录下的 nohup.out 文件,确保日志可追溯。

1、在终端中输入 nohup 命令 & 启动程序,例如:nohup python3 script.py &

2、执行后终端会显示类似 [1] 12345 的进程编号提示,表示作业已提交至后台。

3、按回车键返回提示符,此时可安全关闭终端,进程仍持续运行。

4、如需自定义输出文件路径,可添加重定向:nohup python3 script.py > output.log 2>&1 &

二、仅使用 & 符号启动后台任务

& 符号用于将命令立即放入后台执行,但该方式不处理 SIGHUP 信号,一旦终端关闭,进程将收到挂起信号并终止。适用于短期运行且终端保持开启的场景。

1、直接在命令末尾添加 &,例如:sleep 300 &

2、系统返回作业号与进程 ID,如 [1] 6789

3、使用 jobs 命令可查看当前 shell 中所有后台作业状态。

4、使用 fg %1 可将编号为 1 的作业调至前台继续运行。

三、组合 nohup 与重定向避免输出干扰

默认情况下 nohup 将输出写入 nohup.out,若不希望生成该文件或需分离标准输出与错误输出,可通过显式重定向控制日志行为。

1、丢弃全部输出(静默运行):nohup python3 app.py > /dev/null 2>&1 &

2、分别保存标准输出与错误:nohup python3 app.py > stdout.log 2> stderr.log &

3、确保目标目录存在且当前用户具有写权限,否则 nohup 将无法创建日志文件并可能失败。

4、启动后可用 ps aux | grep python3 验证进程是否仍在运行。

四、使用 disown 脱离 shell 作业控制

当已用 & 启动进程但未使用 nohup 时,可通过 disown 命令将其从当前 shell 的作业表中移除,从而避免终端退出时发送 SIGHUP 信号。

1、先以 command & 方式启动任务,例如:tail -f /var/log/syslog &

2、运行 jobs 查看作业编号,如显示 [1]+ Running tail -f /var/log/syslog &

3、执行 disown %1 移除编号为 1 的作业控制权。

4、此时关闭终端不会影响该进程运行,但其不再受当前 shell 管理,也无法用 jobs 或 fg 命令操作。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-31发表,共计1171字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources