Linux如何让一个程序后台运行

Linux如何让一个程序后台运行

如何让一个程序在Linux上后台运行,提供一下几种思路。#

1. 使用 & 符号(临时后台运行)​

直接在命令末尾添加 &,程序会立即进入后台运行,但关闭终端时进程会被终止。

bash command &

示例:

python script.py &

​2. 使用nohup​

nohup 会忽略挂断信号(SIGHUP),即使终端关闭,程序也能继续运行。输出默认保存到 nohup.out。

bash

nohup command &

自定义输出文件:

nohup command > output.log 2>&1 &

# > output.log :将标准输出重定向到文件

# 2>&1 :将标准错误也合并到标准输出

​3. 使用 tmux 或 screen(终端复用工具)​

通过创建「持久会话」运行程序,即使断开 SSH 连接,进程仍会保留。

使用 tmux:

tmux new -s session_name # 新建会话

command # 在会话中运行程序

Ctrl+B → D # 退出会话(保持后台)

tmux attach -t session_name # 重新连接会话

使用 screen:

bash

screen -S session_name # 新建会话

command # 运行程序

Ctrl+A → D # 退出会话

screen -r session_name # 重新连接会话

​4. 使用 disown(让已启动的进程脱离终端)​

如果程序已在前台运行:

按 Ctrl+Z 暂停程序。

输入 bg 将暂停的进程放到后台。

使用 disown 脱离终端:

bash

jobs -l # 查看后台任务

disown %1 # 脱离第 1 个任务

​5. 使用 systemd(系统服务管理)​

将程序注册为系统服务(适合长期运行的后台进程)。

示例服务文件 /etc/systemd/system/my_service.service:

ini

[Unit]

Description=My Service

[Service]

ExecStart=/path/to/command

Restart=always

[Install]

WantedBy=multi-user.target

管理服务:

sudo systemctl start my_service # 启动

sudo systemctl enable my_service # 开机自启

​总结

​临时后台任务:用 & 或 Ctrl+Z → bg

​终端关闭后保持运行:用 nohup 或 tmux/screen

​长期服务:用 systemd

查看后台进程:jobs -l 或 ps aux | grep command

终止后台进程:kill PID(用 ps 查询进程 ID)

相关推荐