源码技术
php
java
python
Linux
当前位置:
首页
>
Linux
>Linux脚本控制(二)——后台运行
Linux脚本控制(二)——后台运行
2026-08-22 23:29:09
Linux脚本控制(二)——后台运行
通常在实际应用中,很多运行时间较长的脚本并不会直接在命令行运行,如果直接在终端运行将一直占用终端会话,并与终端会话的STDIN、STDOUT、STDERR关联,导致无法执行其它任何操作,因此常采用后台模式运行脚本。
01
后台运行脚本
以后台模式运行脚本方式为脚本名称后加&:
scriptname
&
当后台进程运行时,会与当前shell分离开,并分配给后台进程一个作业号和PID(唯一的进程号),但它仍使用当前终端显示STDOUT和STDERR内容,为避免当前shell会话中命令的输出和后台进程的输出混在一起,最好是将后台脚本的STDOUT和STDERR进行重定向。
运行多个后台进程时,Linux系统都会为其分配新的作业号和PID。
在终端会话中使用后台进程时,如果终端会话退出,则后台进程也会随之退出,如果要实现退出终端会话的同时后台进程继续运行,则需采用nohup方式。
02
非控制台下运行脚本
通过nohup命令能阻断发给特定进程的SIGHUP信号,当退出终端会话时,可避免进程退出,使用方法如下:
nohup
command
若需要该进程继续在后台保持运行,则使用如下方法:
nohup
command
&
此时,关闭终端会话,脚本会忽略其发送的SIGHUP信号并在后台保持运行。 由于nohup命令会解除终端与进程之间的关联,因此进程不再同STDOUT和STDERR绑定在一起,产生的STDOUT和STDERR内容会被自动重定向至nohup.out文件中(该文件一般在当前工作目录中创建,否则会在$HOME目录中创建)。
注:如果使用nohup运行了另一个命令,则该命令的输出会被追加到已有的nohup.out文件中(除非重定向脚本输出)
03
作业控制
作业控制包含启动、停止、杀死及恢复作业,通过不同的控制方式来控制进程的运行方式。
小拓展:脚本用$变量来显示Linux系统分配给该脚本的PID。
(1)查看作业
jobs命令——用于查看shell当前正在处理的作业
jobs -l ——可显示作业的PID及作业号
jobs -n ——只列出上次shell发出通知后状态发生改变的作业
jobs -p ——只列出作业的PID
jobs -r ——只列出运行中的作业
jobs -s ——只列出已停止的作业
显示结果中,带有+的作业为默认作业,如果作业控制命令没有指定作业号,则引用的就是该作业;带有-号的作业会在默认作业结束后成为下一个默认作业,任何时候,带有+和-的作业分别只能有一个。
(2)删除停止的作业
通过jobs -s查看作业的PID,后通过kill命令删除已停止的作业:
kill
-
9
PID
(3)重启已停止的作业
a. 以后台模式重启作业,采用bg
$1nbsp
;
bg
若存在多个作业,则在bg后加作业号
b. 以前台模式重启作业,采用fg
$1nbsp
;
fg
2
以上示例中,2为作业号
注意:前台进程将会接管当前使用的终端,使用时需小心。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:596563534@qq.com 。
Singularity安装(Linux系统)
Linux命令大全-ifconfig命令
最新文章
Singularity安装(Linux系统)
linux玩文明6
Linux Wireless之iw工具
Linux 最新资讯 20260204——经过改进的NTFS Linux驱动程序发布,带来更多优化与修复
以计算思维为翼,解锁Python程序设计的无限可能
如何无代码创建应用和微信小程序?——秒哒来帮忙
「筠城拓美艺术」8.8元抢美术/编程体验课程1节!优质教师专业团队,多种趣味课程,舒适就学环境!启发孩子的创造性思维!
在代码和心跳之间:童心护航第三天的人文觉醒之旅
前端项目代码格式化:架构师与技术负责人应该如何设计?
Atoms:不止是代码生成,打造全栈 AI 创业团队
热门文章
机器人编程技术
不用会写代码,你也能参与这场硬科技革命
6 位代码搞定一切!这款 Next.js 工具,让你精准盯紧基金每一笔持仓
基本功:运动的底层代码
揪出藏在内存里的银狐!Dump恶意内存代码,破解无文件攻击
3大财富杠杆: 写作 * 代码 * AI
告别卡顿!小米新系统“动刀”老代码,流畅度要起飞了
从兴趣到专业:青少年编程考级与竞赛的进阶策略
老鹰讲AI-0代码纯自然语言开发课优惠最后3天!
你生命的底层代码都藏在这里
随机文章
10个月宝宝每天需要喝多少奶粉?
重启剧本:清理潜意识编程
Gensim,一个专业的python项目!
定兴县成功举办2026机器人编程能力挑战赛
代码没有截止日期,生命却有倒计时,32岁程序员猝死之后
Python之人工智能!没你想得那么难!快来学
TextBlob,一个磅礴的python项目!
Tornado:让Python在万级并发中“飞”起来的高性能异步框架
一天一个Python知识点——Day 149:特征工程
Python开源网格工具 | 功能测试1 | 文件操作
Python 3 入门与进阶(十):面向对象编程(下)——继承、多态与高级特性