Linux系列(14)之工作管理
1.工作管理
说明:工作管理(job control)是用在bash环境下的,也就是说:“当我们登录系统取得bash shell之后,在单一终端机接口下同时进行多个工作的行为管理”。举例说明,我们在登录bash之后,想要一边复制文件、一边进行数据搜索、一边进行编译、还可以一边进行vim程序撰写!当然我们可以重复登录那6个命令行的终端机环境中,但是这样比较复杂,那可以在一个bash环境中完成这些操作吗?当然可以,这就需要使用到工作管理(job control)了。
1.什么是工作管理
从上述说明当中,你应该着重了解并注意的是:“进行工作管理的行为中,其实每个工作都是目前bash的子程序”。我们无法以工作管理(job control)的方式由tty1的环境去管理tty2的bash。
2.进行工作管理的限制
《1》这些工作所触发的程序必须来自你的shell的子程序(只管理自己的bash)。
《2》前景:你可以控制与下达指令的这个环境称为前景。
《3》背景:可以自行运行的工作。无法使用Ctrl+C终止这个工作,可以使用bg/fg调用该工作。
《4》背景中执行的程序不能等待终端(terminal)/shell的输入。
注意:背景里的工作状态分为“暂停(stop)”与“运行中(running)”。放入背景中运行的工作不能与用户互动,因此需要互动的工作不能放到背景中执行。
2.工作控制(job control)的管理
1.将指令放到背景中执行
在我们只有一个bash的情况下,如果想要同时进行多个工作,那么可以将某些工作放到背景中执行,让我们可以继续操作前景的工作。那么如何将工作放到背景中执行呢?最简单的方法就是将与符号“&”放在整个指令的末尾。
格式:指令 [-option] param... & //将指令执行的操作放到背景中执行
注意事项:将工作放到背景执行时注意数据流的导向,当背景工作会进行标准输出与错误输出时会影响前景工作,因此尽量将背景工作的标准输出与错误输出重定向。
下面是一个实例,在背景中将压缩文件解压到指定目录

在背景中执行某个指令后会显示改指令的工作号【1】,14432指的是该指令所触发的PID
2.将目前的工作放到背景中暂停:[Ctrl]+[Z]
在vim的一般模式中按下Ctrl+Z会将编辑文件的工作放到背景中暂停,并且屏幕中会出现 [工作号]和工作状态。
3.观察目前的背景工作的状态:jobs
指令:jobs //查看目前的背景工作状态,即包含多少个背景工作

下面实验一下:

看到输出的内容包括工作号、+/-号、背景工作运行状态(运行中或暂停中)、指令
其中“+”号的意义是这样的,如果要从当前背景工作中取出一个工作放到前景中执行,那么就涉及到会将哪个背景工作选中放到前景中了,因此当使用指令fg(不带参数)时,系统会默认将“+”标记的工作放到前景中执行。
4.将背景工作拿到前景执行:fg
fg就是foreground的缩写,通常先使用jobs指令查看有哪些背景工作,再通过fg将背景工作拿到前景中执行。
格式: fg //将有+号标记的工作放到前景执行
fg %工作号 //直接将指定的工作号的指令放到前景中执行
5.让背景工作从暂停中转变到运行中:bg
格式: bg %工作号 //改变指定的工作号的工作状态
6.管理背景中的工作:kill
kill可以使背景中的工作强制退出(杀死)、正常退出、重新启动这个工作。
格式:kill -l //列出可以使用的讯号(就是数字)
kill -signal PID //管理指定PID的程序
kill -signal %工作号 //管理指定工作号的工作
signal代表讯号,signal的值常用的有1(重新读取参数的配置文件)、2(终止程序的执行,功能类似Ctrl+C)、9(强制删除一个工作)、15(以正常的程序方式终止一项工作)
注意:当强制终止一个工作有可能会产生一些垃圾文件。kill后面接的数字默认是PID,如何想管理工作号需要这样写“%工作号”。
kill可以强制杀死一个进程(当然也能杀死服务),但是不推荐使用kill杀死服务,这样做会有弊端;可以使用systemctl来管理服务;会在Linux系列(17)之系统服务那章节详细讲解。
Linux系列(14)之工作管理的更多相关文章
- 『学了就忘』Linux系统管理 — 85、工作管理相关命令
		
目录 1.工作管理简介 2.如何把命令放入后台 3.后台管理命令 (1)查看后台的工作 (2)将后台暂停的工作恢复到前台执行 (3)把后台暂停的工作恢复到后台执行 4.后台命令脱离登录终端运行 1.工 ...
 - Linux系统的Cache工作原理和管理机制
		
Linux系统Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分.本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够帮助到你. 操作系统和文件 Cache ...
 - linux 学习 14 日志管理
		
第十四讲 日志管理 14.1 日志管理-简介 .日志服务 在CentOS .x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服 ...
 - Linux中的工作管理(Job Control )
		
以前使用Linux老是会不小心按下Ctrl + z,然后就出现看不懂的情况,以为程序突然就没了,今天专门研究了下Linux下的几个快捷键和工作管理. 其中找到一篇很不错的文章,大部分是里面转载的. 原 ...
 - Linux学习笔记(6)-工作管理
		
什么是工作管理 工作来自job命令的翻译,job命令可以查看后台工作的进程.举例来说什么是工作管理,当你要打包一个比较大的目录时,很耗时间,但是你同时又需要使用别的命令.你会想我可以到开几个终端进行登 ...
 - ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
		
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
 - [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务
		
进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux # 查看系 ...
 - Linux工作管理
		
工作管理? 其实也就是把程序放到后台来管理,在windows中也就是最小化,在Linux中是通过命令把程序放到后台中.jobs命令查看后台程序. 对于第一点注意事项,mysql启动是例外的,要是叉掉了 ...
 - Linux学习-工作管理 (job control)
		
什么是工作管理? 进行工作管理的行为中, 其实每个工作都是目前 bash 的 子进程,亦即彼此之间是有相关性的. 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 b ...
 
随机推荐
- 在C语言中破坏函数调用堆栈
			
// 这段代码显示,在C语言修改函数的返回地址 int test1() { ; } int test2(int a) { *(&a-) = (int)test1; // 将返回地址修改为tes ...
 - 面向对象(OOP)笔记
			
1.本质:以类的方式组织代码,以对象的方式组织(封装)数据 2.对象:是具体的事物 3.类:是对对象的抽象(抽象 抽出象的部分) 先有具体的对象,然后抽象各个对象之间象的部分,归纳出类 通过类再认识其 ...
 - JIRA恢复备份后无法上传附件
			
1.在恢复JIRA 备份数据和附件后,上传附件失败,这一般是恢复附件时没有修改附件的拥有者和组 创建JIRA平台,会自动创建一个服务器的账户,如果是服务器第一次部署JIRA那么账户肯定是jira,如果 ...
 - [题解] [CF 1250J] The Parade
			
题面 题目大意: 给定一个 \(n\) , 所有军人的数量均在 \([1, n]\) 给定 \(a_i\) 代表高度为 \(i\) 的军人的个数 你要将这些军人分成 \(k\) 行, 满足下面两个条件 ...
 - Java并发指南1:并发基础与Java多线程
			
本文转载自互联网,侵删 什么是并发 在过去单CPU时代,单任务在一个时间点只能执行单一程序.之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程.虽然并不是真正意义上的“同一时间点”,而是 ...
 - 微信小程序之--(与唯品会来场粉红色的邂逅 ???)
			
Welcome to miaomiaoXiong's segmentfault 微信小程序之--(与唯品会来场粉红色的邂逅 ???) 买买买,虽然双十二刚过,可是唯品会的折扣却是依然火爆.一打开页面, ...
 - centos7的网络配置参考
			
<鸟哥的Linux私房菜>中的相关介绍和配置:http://linux.vbird.org/linux_basic/0610hardware.php 修改链接(connection)的名字 ...
 - Hearthstone AI
			
search keyword `machine learning hearthstone` with google I am a legend: Hacking Hearthstone with ma ...
 - 【Java/MySql】使用JDBC访问MySql数据库的Maven工程
			
下载链接:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-1.rar pom.xml里写: <p ...
 - C之枚举
			
#include<stdio.h>#include<stdlib.h>enum WeekDay{ Monday,Tuesday,Wednesday,Thursday,Frida ...