欢迎您访问新疆栾骏商贸有限公司,公司主营电子五金轴承产品批发业务!
全国咨询热线: 400-8878-609

新闻资讯

技术学院

LINUX如何后台运行程序_Linux nohup与&命令的使用方法【技巧】

作者:尼克2025-12-24 00:00:00
可在Linux中通过nohup、disown、screen、systemd用户服务等方法实现程序后台持久运行:nohup忽略SIGHUP并配合&启动;disown脱离shell控制;screen创建可分离会话;systemd用户服务支持开机自启与自动重启。

如果您希望在Linux系统中启动一个程序并使其在终端关闭后仍持续运行,则需要借助后台运行机制。以下是实现此目标的多种方法:

一、使用nohup命令配合&符号

nohup命令可使程序忽略SIGHUP信号,避免因终端断开而被终止;配合&符号可将进程置于后台执行。该组合适用于大多数长期运行的任务。

1、在终端中输入命令:nohup your_command &

2、按下回车键执行,系统将返回类似“[1] 12345”的进程编号提示

3、程序的标准输出和错误输出默认写入当前目录下的nohup.out文件

4、关闭终端后,进程仍持续运行

二、重定向nohup输出到指定文件

为便于日志管理,可将nohup产生的输出重定向至自定义文件,避免nohup.out堆积或覆盖。

1、执行命令:nohup your_command > output.log 2>&1 &

2、其中“> output.log”重定向标准输出,“2>&1”将标准错误合并至标准输出

3、该命令确保所有输出均写入output.log,且不影响后台运行特性

三、使用disown命令脱离shell控制

当程序已用&启动但未使用nohup时,可通过disown将其从当前shell作业表中移除,使其不受终端退出影响。

1、先以&方式启动程序:python3 server.py &

2、输入jobs命令查看作业列表,确认其作业号(如[1])

3、执行disown %1(假设作业号为1)

4、关闭终端后,该进程将继续运行,不再接收SIGHUP信号

四、结合screen工具创建持久会话

screen提供虚拟终端会话管理功能,允许用户分离(detach)和重新连接(attach)会话,适合交互式长期任务。

1、安装screen(如未安装):sudo apt install screen(Ubuntu/Debian)或sudo yum install screen(CentOS/RHEL)

2、新建命名会话:screen -S my_session

3、在会话中运行目标程序,如:./long_running_script.sh

4、按下Ctrl+A,再按D键分离会话

5、终端关闭后,会话仍在后台运行,可通过screen -r my_session恢复

五、使用systemd用户服务实现开机自启后台程序

对于需长期稳定运行且要求自动重启的程序,可注册为systemd用户服务,由系统服务管理器统一调度。

1、创建服务文件:~/.config/systemd/user/myapp.service

2、在文件中写入[Unit]、[Service]和[Install]段,其中ExecStart设为完整路径的可执行命令

3、启用服务:systemctl --user daemon-reload && systemctl --user enable myapp.service

4、启动服务:systemctl --user start myapp.service