广告
返回顶部
首页 > 资讯 > 操作系统 >Linux之进程管理(3)作业管理
  • 120
分享到

Linux之进程管理(3)作业管理

作业进程Linux 2023-01-31 01:01:18 120人浏览 泡泡鱼
摘要

Linux之进程管理(3)作业管理Linux的作业控制介绍:前台作业:通过终端启动,且启动后一直占据终端;后台作业:可通过终端启动,但启动后转入后台运行(释放终端);让进程作业运行在后台:1、对运行中的进程:使用Ctrl+z2、尚未启动的作


Linux之进程管理(3)作业管理

Linux的作业控制介绍:

前台作业:通过终端启动,且启动后一直占据终端;

后台作业:可通过终端启动,但启动后转入后台运行(释放终端);

让进程作业运行在后台:

1、对运行中的进程:使用Ctrl+z

2、尚未启动的作业:COMMAND &  (在命令行的最后面加一个&符号)

后台作业与终端关系的处理:

后台作业虽然被送往后台允许,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,同时剥离与终端的关系。可以使用下面两种方法:

1、# nohup  COMMADND &   

注:命令后台运行并忽略所在进程组接收的HUB信号,但是会生成一个临时文件

2、# screen;  COMMAND

注:使用打开一个临时会话,这样即断电,下次还恢复到screen的当前状态

 

查看所有后台作业命令:

jobs 命令

jobs命令例子:

#将/etc/下的所有shell脚步文件路径保存到临时文件中,并放入后台执行

[root@localhost ~]# find /etc/ -name '*.sh' -exec echo {} > /tmp/tempfile.log \; &
[1] 2859

#查看当前后台作业

[root@localhost ~]# jobs
[1]+  Done                    find /etc/ -name '*.sh' -exec echo {} \; > /tmp/tempfile.log

解析:其中1表示为作业号,及1号后天作业,而Done表示停止了状态,表示进程已经结束。

#将当前系统下的所有文件路径保存到临时文件中,并放入后台执行

[root@localhost ~]# find /  -exec echo {} > /tmp/tempfile.log \; &
[1] 5481

#查看当前后台作业

[root@localhost ~]# jobs
[1]+  Running                 find / -exec echo {} \; > /tmp/tempfile.log &

解析:这里显示 Runing表示正在执行中,因为文件太多所以执行速度不如上面快,执行结束后,如果不再查看jobs,进程会自动清除,并退出当前作业列表。

 

作业控制命令:fg  bg  kill

fg # :将指定后台作业编号的进程调回前台运行;

格式:fg #  或者 fg %#,如:fg 3   ,  fg  %3表示将后台3号作业放到前台

bg # :让送往后台的作业在后台继续运行;

    格式:bg #  或者 bg %#,如:bg 10  , bg  %3表示将3号作业继续在后台运行

kill %#  :终止指定的作业;

格式:kill %#,如:kill  %1  表示杀掉一号作业

 

jobs、fg、bg等信号命令配合例子:

#讲当前系统下的所有文件列表排序后输入到一个文件保存

[root@mageedu ~]# du -a / | sort -rn > /tmp/du.sorted

解析:因为有很多文件输出到一个文件,且当前控制台不会显示,所有,进程会一直等待输出重定向介绍,此时,按Ctrl+z键,将此命令放入后台:

[root@mageedu ~]# du -a / | sort -rn > /tmp/du.sorted
 
[1]+  Stopped                 du -a / | sort -rn > /tmp/du.sorted

解析:这里现在是暂停状态,因此,需要再次唤醒。

#查看当前的后台作业列表

[root@mageedu ~]# jobs
[1]+  Stopped                 du -a / | sort -rn > /tmp/du.sorted

解析:这里发现了只有一个后台作业,也就是刚才执行的重定向命令。但是这里显示是Stoped暂停等待状态,因此此时进程虽然在后台,但是并没有开始运行。

#调动1号作业在后台继续运行

[root@mageedu ~]# bg 1
[1]+ du -a / | sort -rn > /tmp/du.sorted &

#再次查看当前jobs作业状态

[root@mageedu ~]# jobs 
[1]+  Running                 du -a / | sort -rn > /tmp/du.sorted &

解析:这时已经表示在后台运行,此时可以执行其他操作,此作业执行完成后会自动退出进程并清除作业记录。

 

让一个作业开始就在后台进行运行:

#在要执行的命令最后面加入 &符号

[root@mageedu ~]# du -a / | sort -rn > /tmp/du.sorted &
[1] 28464

# 查看当前作业列表

[root@mageedu ~]# jobs
[1]+  Running                 du -a / | sort -rn > /tmp/du.sorted &

解析:这里因为把标准输出转向一个文件,所以不会印象当前进程中工作。但是如果执行的命令或者程序本身就会对当前终端有标准输出,那么即使在后台运行,也会把信息输入到当前控制台,因此就会影响当前终端会话。如:

#执行ping命令并放入后台

[root@mageedu ~]# ping 10.1.0.1 &

wKioL1fVJNbAu_H0AAAwsaZr7SQ909.png 

解析:这时会发现虽然能输入命令,但是ping的结果的标准输出还是会输出来,下面我通过画框标记来解释:

第一个红色框:这里按这平时命令jobs;

第一个绿色框:此时下面显示了在运行状态,作业号为2;

第二个红色框:于是把2行作业调回前台。然后按Ctrl+c键发送INT信号;

第一个紫色框:出现下面信息表示已经总结

 

通过以上发现在处理对当前终端有标准终端的进程作业,即使掉入到后台也不是很好的选择,因为会影响到当前终端界面的使用的查看。那么怎么处理这种问题?

使用nodup命令,忽略接收进程组的INT信号:

[root@mageedu ~]# nohup ping 10.1.0.1 &
[1] 30344
[root@mageedu ~]# nohup: appending output to `nohup.out'

解析:这里出现了一个提示,表示会把输出的结果放入到nohup.out文件中,这样就代替了终端来接收标准输出。

#查看当前作业,发现正在运行

[root@mageedu ~]# jobs
[1]+  Running                 nohup ping 10.1.0.1 &

#使用kill命令终结此作业

[root@mageedu ~]# kill -15 %1

提示:后面的作业号必须要加上%,表示为jobs列表中的作业号,否则就当作进程的PID了。

 

使用screen建立额外的会话窗口:

#打开一个screen

[root@mageedu ~]# screen

#备份etc目录文件

[root@mageedu ~]# find /etc -exec cp -a {} /tmp/etc-bak \;

#此时按Ctrl+a,d来暂时剥离当前screen会话会显示当前session已经隔离

[detached]

#于是我们就可以执行其他工作了,等待备份完层后,再回到screen会话

[root@mageedu ~]# screen

#然后完全退出screen会话

[root@mageedu ~]# exit



额外例子(模拟并行多个进程):

#创建3个文件

[root@localhost ~]# ls ./*.sh
./all.sh  ./f1.sh  ./f2.sh  ./f3.sh

#每个文件都只打印自己的文件基名

[root@localhost ~]# cat f1.sh 
#!/bin/bash
#
  echo `basename $0`;

#创建all.sh文件,内容如下

[root@localhost ~]# cat all.sh 
while :;do
./f1.sh&
./f2.sh&
./f3.sh&
sleep 2
done

#给所有刚刚创建的文件加执行权限

[root@localhost ~]# chmod +x ./*.sh

#运行all.sh

[root@localhost ~]# ./all.sh 
f2.sh
f3.sh
f1.sh
f2.sh
f1.sh
f3.sh
f1.sh

解析:我们发现当3个脚步同时在后台运行时,运行的队列是随机排放的,此时3个文件像是在同时运行,其实是在后台开启了3个子shell各种运行自己。

 

#修改f{1,2,3}个文件,内容如下:

[root@localhost ~]# cat f1.sh 
#!/bin/bash
#
let i=0;
while [ $i -lt 10 ];do
  echo `basename $0`;
  i=$[i+1];
  sleep 2
done


#在命令行中使用()阔住命令开启子shell进程后台运行

[root@localhost ~]# (./f1.sh&);(./f2.sh&);(./f3.sh&)f1.sh
f3.sh
f2.sh
f1.sh
f3.sh
f2.sh
f1.sh
f3.sh

解析:这里同样是打开了3个子shell,并且都在后台运行,各种互不干扰。

 

#下面杀死所有刚才执行脚步进程

[root@localhost ~]# pkill '^f[0-9]\.sh'

#使用{}阔起来

[root@localhost ~]# { ./f1.sh& ./f2.sh& ./f3.sh& }
f1.sh
f3.sh
f2.sh
f1.sh
f2.sh
f3.sh
f1.sh
f2.sh
f3.sh

解析:这里是使用了bash里面的代码块机制,将多个执行语句使用{},当作一个块语句执行。


--结束END--

本文标题: Linux之进程管理(3)作业管理

本文链接: https://www.lsjlt.com/news/183390.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux之进程管理(3)作业管理
    Linux之进程管理(3)作业管理Linux的作业控制介绍:前台作业:通过终端启动,且启动后一直占据终端;后台作业:可通过终端启动,但启动后转入后台运行(释放终端);让进程作业运行在后台:1、对运行中的进程:使用Ctrl+z2、尚未启动的作...
    99+
    2023-01-31
    作业 进程 Linux
  • Linux进程及作业管理的方法是什么
    这篇文章主要介绍了Linux进程及作业管理的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux进程及作业管理的方法是什么文章都会有所收获,下面我们一起来看看吧。一、进程查看及其管理工具ps命令:...
    99+
    2023-06-28
  • Linux系统--Linux进程与作业管
    Linux系统--Linux进程与作业管理(3)Linux进程管理和作业管理的另外几种管理命令:vmstat,dstat,pmap,glances,kill1.vmstat命令: vmstat - Report virtual memory...
    99+
    2023-01-31
    作业 进程 系统
  • linux系统之进程管理详解
    目录1、进程与线程的概念2、什么是进程管理3、进程管理的作用4、linux进程的几种状态5、进程与线程的关系(1)线程与进程的关系(2)总结1、进程与线程的概念 来源百度百科: 进程(Process) 是计算机中的程序关...
    99+
    2022-06-04
    Linux进程管理及作用 Linux进程管理总结
  • CMS之图片管理(3)
    现在要完成目录的编辑操作。因为目录的编辑只是改变目录名称,因而使用Cellediting插件就可完成工作。根据书11.3.2节的示例,要完成这个不难,首先在目录树的定义中加入以下语句隐藏列标题:hideHeaders:true, 接着添加p...
    99+
    2023-01-31
    图片 CMS
  • MySQL专题3之MySQL管理
    1、启动以及关闭MySQL服务器-  首先,我们需要通过以下命令来检查MySQL服务器是否已经启动:ps -ef | grep mysqld-  如果MySQL已经启动,以上命令将输出mysql进程列表,如果mysql未启动,你可以使用以下...
    99+
    2023-01-31
    专题 MySQL
  • Linux如何进行网络管理、软件安装、进程管理操作
    这篇文章给大家分享的是有关Linux如何进行网络管理、软件安装、进程管理操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、网络管理1.1 网络状态查看在Linux中经常使用ifconfig,rou...
    99+
    2023-06-15
  • 初学linux系统管理3
    在多台linux主机上执行相同的命令 By tianjing on 2011 年 06 月 05 日 有时候我们需要在若干台linux主机上执行相同的命令,或者安装相同的软件,可以使用如下两种方法: 实验环境,有9台RHEL5.5...
    99+
    2023-01-31
    系统 linux
  • 头歌(Linux之进程管理一):第2关:进程创建操作-fork
    任务描述 在上一关我们学习如何获取进程的pid信息,本关我们将介绍如何编程创建一个新的进程。 本关任务:学会使用C语言在Linux系统中使用fork系统调用创建一个新的进程。 相关知识 在Linux系统中创建进程有很多函数可以使用,其中包括...
    99+
    2023-10-21
    linux 服务器 运维
  • Linux 进程管理工具之Supervisor安装配置
    目录前言安装生成配置配置文件参数说明配置管理进程启动服务控制进程交互终端bash终端开机启动服务前言 Supervisor 是用 Python 开发的一个 client/server...
    99+
    2023-05-19
    Linux 进程管理Supervisor Linux 进程管理
  • Linux 进程管理工具之Supervisor安装配置
    目录前言安装生成配置配置文件参数说明配置管理进程启动服务控制进程交互终端bash终端开机启动服务前言 Supervisor 是用 python 开发的一个 client/server 服务,是linux/Unix系统下的...
    99+
    2023-05-12
    Linux 进程管理Supervisor Linux 进程管理
  • Linux Basic 3:用户和组管理
    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 # who | cut -d' ' -f1 | sort -u        root2、取出最后登录到当前系统的用户的相关信息。# id `who...
    99+
    2023-01-31
    用户 Linux Basic
  • Node.js进程管理之子进程详解
    一、理论 之前看多进程这一章节时发现这块东西挺多,写Process模块的时候也有提到,今天下午午休醒来静下心来好好的看了一遍,发现也不是太难理解。 Node.js是单线程的,对于现在...
    99+
    2022-11-13
  • Linux系统程序包管理之rpm
    Linux系统程序包管理之rpm==============================================================================概述: ...
    99+
    2022-10-18
  • Node.js进程管理之进程集群详解
    一、cluster模块 Node.js是单线程处理,对于高并发的请求怎么样能增加吞吐量呢?为了提高服务器的利用率,能不能多核的来处理呢?于是就有了cluster模块。 cluster...
    99+
    2022-11-13
  • Linux进程管理方法介绍
    目录一、简介二、创建进程1、前台进程2、后台进程三、查看正在运行的进程四、终止进程五、父进程和子进程六、僵尸进程和孤儿进程七、常驻进程八、top命令九、任务和进程十、前台任务和后台任务的切换一、简介 当我们运行程序时,l...
    99+
    2022-06-05
    Linux 进程管理
  • 业务流程管理三段论之规范化
    业务流程管理三段论之规范化规范化:第二代流程规范化可以讲是程序化的升级版,很多企业在尝试到程序化的甜头之后,便开始思考管理的重要性以及如何通过抓好管理让企业经营更加稳健。规范化盛行的时代规范化管理强调企业管理体系的构建必须围绕制度化、程序化...
    99+
    2023-06-05
  • 如何理解Linux进程的内存管理
    这篇文章给大家介绍如何理解Linux进程的内存管理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。几个关键的数据结构一个进程的虚拟地址空间主要由两个数据结来描述,一个是 mm_struct,一个是 vm_area_str...
    99+
    2023-06-15
  • Node.js进程管理之子进程实例分析
    这篇“Node.js进程管理之子进程实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js进程管理之子进程实例...
    99+
    2023-07-02
  • Linux进程管理命令有哪些
    这篇“Linux进程管理命令有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux进程管理命令有哪些”文章吧。执行中...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作