linux -- 进程管理和作业控制
一. 作业控制
1. 直接将命令放到后台"执行": &
[root @test /root ]# command &
范例:
[root @test /root]# find / -name testing & <==将该执行程序丢到背景执行
[root @test /root]# fg <==将该程序叫回屏幕前执行
说明:
如果想要让屏幕中的工作( command )在背景底下执行的时后,就使用 & 吧!不过,由于是背景执行的,所以该程序的输出并不会显现在屏幕上,所以需要特别留意输出的信息的管线重导的问题呦!另外,如何将该程序叫回来屏幕上面执行呢?就使用 fg 即可!当然啰,也可以使用 [Ctrl]+z 来将目前正在进行当中的工作丢到背景底下!那么摆在背景底下执行有何好处呢?!最大的好处就是不怕被『 [Ctrl]+c 』这个中断指令来中断了!!
2. 将"当前"作业放到后台"暂停":[Ctrl]+z
语法:
[root @test /root ]# command
[root @test /root ]# ^Z <==按下[Ctrl]加上 z 键 参数说明:
范例:
[root @test /root]# vi .bashrc
^Z <==在 vi 当中的一般模式中键入[Ctrl]+z
[]+ Stopped vi .bashrc <==这里会显示将数据丢到背景当中了!
[root @test /root]#
如果你正在进行 vi ,而且是在编辑一个重要数据文件,但是偏偏你想起有的程序需要留意,因此需要退出 vi ,不过,你并不想这个时候储存退出 vi ,那么该如何是好呢?!就将资料丢到背景里面去吧!以上面的例子来说明,当你在执行编辑 /root/.bashrc 这个档案时,想要暂时离开,那么就直接在 vi 的『一般模式』当中输入[Ctrl] - z (小写)按键,那么系统就会告诉你『工作项目 [1] 在背景当中,而其状态为[Stopped]亦即是停止的状态!』,并且会离开 vi 进入到 command line 当中,等待使用者输入指令!那如果想要回到 vi 呢?!呵呵,就需要使用 jobs 配合 bg 或 fg 啰!
3. 观察当前后台作业状态:jobs
语法:
[root @test /root ]# jobs [-lrs]
-l : 除了列出作业号外,同进列出PID
-r : 仅列出正在后台运行(run)的作业
-s : 仅列出正在后台暂停(stop)的作业
范例:
[root @test /root]# vi .bashrc
^Z <==在 vi 当中的一般模式中键入[Ctrl]+z
[]+ Stopped vi .bashrc <==这里会显示将数据丢到背景当中了!
[root @test /root]# jobs
[]+ Stopped vi .bashrc <==显示有一个工作在背景下,状态为停止。
说明:
刚刚我们提到的 & 与 vi 在背景下执行,那么你怎么知道目前你所进行的背景底下的工作有哪些呢?!很简单,就是使用 jobs 就可以观察到啦!以上式为例,使用 jobs 就可以知道目前的背景中工作项目有 vi .bashrc 这一项!那个中括号([])里面的数字就是 jobs 的代号啰!
4. 将后台作业拿到前台处理:fg
语法:
[root @test /root ]# fg %number
[root @test /root ]# bg %number
参数说明:
% :表示 jobs 的作业号码,%是可有可无的
范例:
[root @test /root]# find / -name test
^Z
[]+ Stopped find / -name testing
[root @test /root]# vi .bashrc
^Z
[]+ Stopped vi .bashrc <==这里会显示将数据丢到背景当中了!
[root @test /root]# jobs
[]- Stopped find / -name testing
[]+ Stopped vi .bashrc
[root @test /root]# fg % <==取出[]作业运行
[root @test /root]# jobs
[]- Running find / -name testing &
[]+ Stopped vi .bashrc
[root @test /root]# fg % 进入 vi 画面啰!
说明:
OK!那么如何来了解 jobs 的后台(bg)与前台(fg)的管控呢?!这里请注意啰!这个bg 是将『背景当中的程序由 stopped 变成 Running 』的一个手段,至于fg『则是将背景中的指令移到屏幕上来动作』,那你怎么知道你的背景当中有多少的工作(jobs)在进行呢?!就是执行 jobs 来看看背景程序的代号啰!然后以 bg %number 来将资料在背景中执行,而 fg %number 则是将代号为 number 的程序移动到屏幕前面动作!
5. 让作业在后台运行:bg
语法:
[root @test /root ]# bg %number
参数说明:
% :表示 jobs 的作业号码,%是可有可无的
注意:[ctrl]-z是将当前作业放到后台去"暂停",而 bg 是让一个作业在后台运行。
6. 管理后台作业:kill
语法:
[root @test /root ]# kill -sigal %number
参数说明:
signal
- :重新读取一次参数设定档(类似 reload )
- :使用者中断该工作,类似 [Ctrl]+c 来中断一个工作
- :立刻杀掉一个工作,不论该工作是否为僵尸程序
- :以正常的程序方式停止一个工作(这是默认值)
范例:
[root @test /root]# jobs
[]+ Stopped vi .bashrc
[root @test /root]# kill - %
说明:
如果想要直接杀掉背景工作中的项目,可以直接输入 kill 来杀掉!但是由于默认是将该程序停止而已,不见得一定可以将该工作清除干净,因此需要送出一个讯号,告诉系统你就是要砍掉该程序!这个时候就使用 kill -9 吧另外, -15 称为 terminal ,是以一般的正常程序砍掉一个 jobs ,而 –9 有『强制终止』的意思。
二. 进程管理
1. 查看进程
1.1 ps
语法:
[root @test /root ]# ps -aux 参数说明: -a : 与终端无关的所有的进程 -u : 有效用户的相关进程 -x : 通常与a参数一起使用,可以列出较完整的信息 范例: [root @test /root]# ps -aux 列出当前所有正在内存中的进程 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 0.0 0.1 ? S Mar31 : init [] root 0.0 0.0 ? SW Mar31 : [keventd] ........ [root @test /root]# ps -l 将当前属于自己这次登录的PID与相关信息显示出来。
说明:
通常使用『 ps -aux 』这个参数来列出所有的信息以提供自己检查程序的问题!在上面的程序列出当中,说明如下:
USER:说明该程序是属于哪一个人的;
PID:该程序的代号;
%CPU:代表该程序使用了多少 CPU 资源;
%MEM:代表该程序使用了多少的 RAM ;
VSZ, RSS:占去的 ram 的大小( bytes );
TTY:是否为登入者执行的程序?若为 tty1-tty6 则为本机登入者,若为 pts/?? 则为远程登入者执行的程序
STAT:该程序的状态,( R )为可执行的,( S )为该程序正在睡眠中,( T )正在侦测或者是停止了,(Z)僵尸程序,就是 zombie 死掉的程序啦!需要以 kill 除去啰!
START:该程序开始的日期;
TIME:该程序跑了多久的时间?
COMMAND:该程序的内容啦!
这是一个很有用的指令,尤其是在侦测系统的状态时!
1.2 top
语法:
[root @test /root ]# top [-d] | top [-bnp]
参数说明:
-d : 后面接秒数,即整个进程画面更新的秒数,默认是5秒。 -b : 以批处理的方式执行top. -n : 与-b搭配,就是需要进行几次top的输入结果。 -p : 指定某些个PID来进行观察。 在执行 top 的程序中,可以输入下面的字符以进行排序 A :以 age 亦即是执行的先后程序进行排序 T :由启动的时间排序 M :以所占的 memory 的大小排序 P :以所耗用的 CPU 资源排序 范例: [root @test /root]# top :55pm up days, :, user, load average: 0.22, 0.14, 0.10 processes: sleeping, running, zombie, stopped
CPU states: 24.6% user, 3.7% system, 0.0% nice, 71.5% idle
Mem: 255892K av, 222300K used, 33592K free, 0K shrd, 48084K buff
Swap: 289128K av, 8184K used, 280944K free 110472K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
root S 5.5 2.3 : mrtg
apache S 2.1 1.9 : httpd
apache S 1.9 1.6 : httpd
apache S 1.7 1.6 : httpd
mysql S 0.7 1.8 : mysqld
root R 0.7 0.4 : top
mysql S 0.5 1.8 : mysqld
mysql S 0.5 1.8 : mysqld
说明:
使用 ps 是一个不错的管理工具,但是 ps 毕竟不是动态的,若使用 top 的话,可以用动态(每五秒钟更新一次)的方式来侦测程序的进行!而且在程序进行中,还可以使用 P 来以 CPU 耗用资源排序、使用 M 来以 memory 占用大小排序等等,非常好用的管理工作!有空的话多以 man top 来玩一玩吧!
1.3 pstree
[root@linux ~]#pstree [-Aup]
参数:
-A : 各进程树之间以ASCII字符来连接 (+,-,|)
-p : 同时列出每个进程的PID
-u : 同时列出每个进程的所属账号名称
2.删除进程 kill
语法:
[root @test /root ]# kill -signal PID
参数说明:
那个 -signal 跟上面的 kill 一样:
- :杀掉该程序
- :停止该程序!
范例:
[root @test /root]# kill -
说明:
要杀掉一个程序的时后,自然需要知道该程序的 PID 才行!另外,需要注意的是,由于很多的程序都有附属关系,例如 sendmail 可能会同时开启相当多的程序在工作(如果邮件量很大的时后!)所以,如果砍掉的是『子程序』是无法将整个程序杀掉的!而要知道该程序的代号(PID)自然就得善用 ps, top 等工具啰! 此外,您常常会发现在一些 scripts 里面,会写着kill –1 PID 的字样,那个 –l 是让该 PID 重新读取一次设定档的意思,最常发现在 syslogd 这个 daemon 呢!
注意:这个kill与上面删除作业的kill的区别,一个为 %jobNumber(作业号名) 一个为PID(进程ID)。
linux -- 进程管理和作业控制的更多相关文章
- Linux进程管理与作业控制
进程和作业的关系:一个作业可以包含多个进程. 进程分类: 1. 交互进程:由一个shell启动的进程.交互进程既可以在前台运行,也可以在后台运行. 2. 批处理进程:这种进程和终端没有联系,是一个进程 ...
- linux进程管理之作业控制
作业控制 jobs ==================================================================================== 作业控制是 ...
- Linux—进程管理
Linux 进程管理 1.进程管理介绍 1.1 什么是进程? 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 简而言之 ...
- Linux进程管理子系统分析【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...
- 12个Linux进程管理命令介绍(转)
12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...
- Linux进程管理知识整理
Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...
- Linux性能及调优指南(翻译)之Linux进程管理
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- Linux进程管理专题
Linux进程管理 (1)进程的诞生介绍了如何表示进程?进程的生命周期.进程的创建等等? Linux支持多种调度器(deadline/realtime/cfs/idle),其中CFS调度器最常见.Li ...
- [转帖]十二 个经典 Linux 进程管理命令介绍
https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看. 随笔- 109 ...
随机推荐
- django中数据库的相关操作
一.使用环境 python2.7,django>1.7 二.数据库进行配置 在setting文件中进行修改 1.找到DATABASES DATABASES = { 'default': { 'E ...
- 微服务架构的进程间通信(IPC)
先抛出几个问题: 微服务架构的交互模式有哪些? 微服务常用的进程间通信技术有哪些? 如何处理部分请求失败? API的定义需要注意的事项有哪些 微服务的通信机制与SOA的通信机制之间的关系与区别 微服务 ...
- ev3dev :利用ssh登录系统
ev3dev是在debian 8 的基础上修改的,主页上只介绍了利用usb连接系统后,ssh登录的方法. 可是我想用wifi连接到网络后,用ssh登录,非usb线连接. ev3dev的默认用户名为:r ...
- [k8s]prometheus+alertmanager二进制安装实现简单邮件告警
本次任务是用alertmanaer发一个报警邮件 本次环境采用二进制普罗组件 本次准备监控一个节点的内存,当使用率大于2%时候(测试),发邮件报警. k8s集群使用普罗官方文档 环境准备 下载二进制h ...
- ny540 奇怪的排序 简单题
奇怪的排序 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 最近,Dr. Kong 新设计一个机器人Bill.这台机器人很聪明,会做许多事情.惟独对自然数的理解与人类不一 ...
- 利用对象思想来绘制canvas帧动画
绘制思路: 1.封装一个对象出来: 2.属性: width . height imgSr speed dir3.行为: render changeDir html文件: <script> ...
- 第一个struts程序的配置过程
然后输入project-name,比如说“test",点finish,配置web.xml,这里的org.apache.struts.action.ActionServlet就在struts- ...
- js压缩图片并上传,不失真,保证图片清晰度
<!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- 快速排序——PowerShell版
继续读啊哈磊算法有感系列,继续升华.上一篇是冒泡排序,在结尾总结了一下冒泡排序的缺点——时间复杂度O(N*N)太大.这一篇来说一下快速排序,快速排序可以在多数情况下克服冒泡排序的缺点(最坏的情况下和冒 ...
- SharePoint自动化系列——Upload files to SharePoint library using PowerShell.
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 日常的SharePoint站点测试中,我们经常要做各种各样的数据,今天又写了几个脚本,发现自己写的 ...