linux shell脚本后台运行

1、使用 & 符号

bash 复制代码
# ./XXX.sh &

缺点:关闭当前终端会话窗口,脚本将结束运行

2、使用 nohup 命令

允许注销后继续运行命令,通常与 & 符号结合使用,将输出重定向到一个文件(默认是 nohup.out)。

bash 复制代码
# nohup ./XXX.sh &

可以指定输出文件:

bash 复制代码
# nohup ./XXX.sh > output.log 2>&1 &

2>&1 表示将标准错误(stderr)重定向到标准输出(stdout),这样所有输出都会写入 output.log 文件。

3、使用 disown 命令

如果已在前台运行了一个命令,并希望将其移到后台,可以使用 Ctrl-z 暂停该命令,然后使用 bg 将其放到后台,最后用 disown 从 shell 的作业控制中移除它。

运行脚本(假设忘记了添加 &):

bash 复制代码
# ./XXX.sh

按下 Ctrl-z 暂停脚本:

bash 复制代码
# ./XXX.sh 
......
^Z
[1]+  已停止               ./XXX.sh
#  

将脚本放到后台:

bash 复制代码
# jobs
[1]+  已停止               ./start.sh
# bg
[1]+ ./start.sh &
# jobs
[1]+  运行中               ./start.sh &

从作业控制中移除脚本:

bash 复制代码
# disown
# jobs
#

使用 jobs 命令查看当前 shell 中的作业列表,确认脚本成功移到后台。

4、使用工具 screen 或 tmux

screen 和 tmux 是两个终端复用工具,允许在一个会话中运行多个窗口或面板,并且可以分离(detach)和重新连接(attach)到这些会话。

4.1 使用 screen

启动一个新的 screen 会话:

screen -S my_session

在 screen 会话中运行脚本:

./XXX.sh

按下 Ctrl-a 然后按 d 来分离(detach)会话。

可以通过以下命令重新连接到会话:

screen -r my_session

4.2 使用 tmux

启动一个新的 tmux 会话:

tmux new -s my_session

在 tmux 会话中运行脚本:

./XXX.sh

按下 Ctrl-b 然后按 d 来分离(detach)会话。

可以通过以下命令重新连接到会话:

tmux attach -t my_session

相关推荐
科力锐品牌君7 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
KaiwuDB7 小时前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
zhangrelay7 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
福建佰胜张工8 小时前
A5E00839230西门子工业核心配件详解:参数、安装调试与故障运维全攻略
运维·网络·安全·自动化
流浪0018 小时前
Linux系统篇39——线程(四) pthread库的由来和线程的创建与等待
linux·操作系统·线程·pthread库
Lancker8 小时前
chnroute-linux — 中国大陆 IP 段每日自动更新 + 「仅允许国内访问」落地
linux·运维·tcp/ip
天远Date Lab9 小时前
零信任架构实战:基于天远全能消金报告(标准版)构建自动化骑手资信评估网关
运维·人工智能·架构·自动化
赛博守夜人9 小时前
反舞弊系列之二十一:数据驱动型反舞弊体系搭建,如何利用ERP与财务数据构建“异常交易自动化风控看板”?
运维·自动化
高山有多高9 小时前
【Linux笔记】Linux进程与守护进程
linux
天衍四九-9 小时前
Docker容器实战系列(八):Docker生产最佳实践与避坑指南,系列终章
运维·docker·容器