跟我们一起
玩转路由器

Linux Shell脚本后台运行方法

答案:在Linux中可通过多种方式让脚本后台运行。使用&符号可将脚本放入后台并获取PID;结合nohup能防止终端关闭影响执行,输出默认保存至nohup.out;利用screen创建可分离会话,实现会话恢复;配置systemd用户服务适合长期稳定运行的任务;已用&启动的作业可通过disown命令解除与终端关联,避免被终止。

如果您希望在Linux系统中执行一个耗时较长的任务,但又不想阻塞当前终端会话,可以让Shell脚本在后台运行。这样可以在不中断其他操作的情况下持续执行脚本任务。

本文运行环境:Dell XPS 13,Ubuntu 24.04

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

在命令末尾添加 & 符号,可以将脚本直接放到后台运行。这种方式适用于不需要与终端交互的脚本。

1、打开终端并导航到脚本所在目录。

2、输入命令 ./script.sh & 来启动脚本。

3、终端会返回一个进程ID(PID),可用于后续管理该任务。

二、结合 nohup 防止终端关闭影响运行

使用 nohup 命令可以忽略挂起信号(SIGHUP),即使关闭终端或退出登录,脚本仍将继续运行。

1、在终端中执行 nohup ./script.sh &

2、输出默认会被重定向到 nohup.out 文件中,除非另行指定。

3、可通过 ps -ef | grep script.sh 查看进程状态。

三、使用 screen 创建可分离会话

screen 提供了一个虚拟终端环境,允许用户创建多个会话,并可在需要时重新连接。

1、安装 screen(如未安装):sudo apt install screen

2、启动新会话:screen -S mysession

3、在会话中运行脚本:./script.sh

4、按 Ctrl+A 后再按 D 键即可分离会话。

5、重新连接使用:screen -r mysession

四、使用 systemd 用户服务长期托管脚本

对于需要长时间稳定运行的脚本,配置为 systemd 服务是一种可靠方式。

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

2、编辑内容包含 [Unit]、[Service] 和 [Install] 段落,设置 ExecStart 指向脚本路径。

3、启用服务:systemctl –user enable myscript.service

4、启动服务:systemctl –user start myscript.service

五、通过 disown 移除作业与终端关联

当脚本已在后台运行(使用 & 启动),可通过 disown 命令将其从当前 shell 的作业表中移除,避免终端关闭时被终止。

1、先运行脚本:./script.sh &

2、查看当前后台作业:jobs

3、执行 disown %1(%1 为作业编号)解除关联。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Linux Shell脚本后台运行方法》
文章链接:https://www.lu-you.com/wangluo/wenti/50622.html
本站资源来源于互联网整理,若有图片影像侵权,联系邮箱429682998@qq.com删除,谢谢。

评论 抢沙发

登录

找回密码

注册