本小节介绍
1、进程的描述
2、用户怎么样管理进程
3、进程管理的命令
进程的概念
内核的功能:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。
Process:运行中的程序的一个副本,是被载入内存的一个指令集合;
进程ID(ProcessID ,PID)号码被用来标记各个进程;
UID,GID,和SELINUX语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承;
存在生命周期。
进程创建: init:第一个进程 父子关系
进程ID(PID):进程开始后指派给此进程的唯一标识符。
父进程ID(PPID):创建了当前进程的父进程的PID
进程状态:
Linux内核:抢占式多任务
进程类型:
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
系统管理工具
进程的分类:
CPU-Bound:CPU密集型,非交互
IO-Bound:IO密集型,交互
Linux系统状态的查看及管理工具:pstree,ps,pidof,pgrep,top, htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
为了管理这些进程,用户应该能够:
查看所有运行中的进程
查看进程消耗资源
定位个别进程并且对其执行制定操作
改变进程的优先级
杀死指定进程
限制进程可用的系统资源等
下面来详细说明执行上述进程管理的命令:
pstree命令:显示进程树的结构(pstree – display a tree of processes)。
linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。
如果指定了pid了,那么 树 的根是该pid,不然将会是init(pid: 1)如下图:
查看进程ps
ps:process stat 进程状态,
ps – report a snapshot of the current processes
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中。
ps [OPTION]
支持三种选项:
UNIX选项 如: -A -e
BSD选项 如: a
GNU选项 如–help
选项:默认显示当前终端中的进程
a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程的父进程
k | –sort 对属性排序
o 属性…选项显示定制的信息
pid ;cmd; %cpu ;%mem ;state ;tty ;euser; ruser(进程真正的发起者)
-e: 显示所有进程
-f: 显示完整格式程序信息
-E:显示更完整格式的进程信息
-H:以进程层级格式显示进程相关信息
常用选项组合:
#ps -a 列出所有运行中的进程
#ps -ef | grep 可以配合grep正则表达式列出需要的进程
#ps -C f1.sh 单独显示进程
#ps -aux 显示进程信息,包括无终端的(x) 和针对用户(u)的进程:如USER, PID, %CPU, %MEM等,如下图;
上图中: VSZ: Virtual memory SiZe,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集
STAT:进程状态
R:running S: interruptable sleeping
D: uninterruptable sleeping T: stopped
Z: zombie +: 前台进程
l: 多线程进程 L:内存分页并带锁
N:低优先级进程 <: 高优先级进程
s: session leader,会话(子进程)发起者
#ps axo pid ,cmd,%cpu 显示进程定制的信息;如下图;
进程优先级
进程优先级调整:
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120;
只有根用户才能降低nice值(提高优先性)
nice命令: nice [OPTION] [COMMAND [ARG]…]
#nice -n 3 top 指定进程的优先级,如下图:
renice命令类似nice命令。
使用这个命令可以改变正在运行的进程优先值。注意,用户只能改变属于他们自己的进程的优先 值。
- #renice –n –p –改变指定进程的优先值
上图中初始优先值为0的2121号进程优先值变成了4
搜索进程
最灵活:ps 选项 | grep
按预定义的模式:pgrep
pgrep [options] pattern
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
示例:
#pgrep -aU wang 查看真正发起运行命令者的进程
#pgrep -at tty2 查看终端上运行的进程
按确切的程序名称:/sbin/pidof
#pidof bash 显示运行进程的进程编号
系统工具
uptime
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)
系统平均负载: 指在特定时间间隔内运行队列中的平均进程数 ;
通常每个CPU内核的当前活动进程数不大于3,那么系统 的性能良好。
如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。
如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用。
top工具:
top:有许多内置命令:
排序: P:以占据的CPU百分比,%CPU
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
存文件:W
栏位信息简介
us:用户空间 sy:内核空间 ni:调整nice时间 id:空闲
wa:等待IO时间 hi:硬中断 si:软中断(模式切换)
st:虚拟机偷走的时间
选项: -d #: 指定刷新时间间隔,默认为3秒
-b: 全部显示所有进程
-n #: 刷新多少次后退出
#top -b -d 10 指定10秒刷新一次
#top -n 3指定刷新3次
htop命令:需从Fedora-EPEL源安装 http://172.16.0.1/fedora-epel/7/x86_64
选项: -d #: 指定延迟时间; -u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
子命令:
s: 跟踪选定进程的系统调用
l: 显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t: 显示进程树
杀进程:
kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,
信号名称以SIG开头,不区分大小写
显示当前系统可用信号:kill -l ,trap -l
常用信号:man 7 signal
1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
3) SIGQUIT:相当于ctrl+\
9) SIGKILL: 强制杀死正在运行的进程
15) SIGTERM:终止正在运行的进程
18) SIGCONT:继续运行
19) SIGSTOP:后台休眠
指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP
(3) 信号的简写名称:HUP
按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid;kill –s SIGNAL pid
按名称:killall [-SIGNAL] comm…
按模式:pkill [options] pattern
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程
#pkill -t pts/3 -9
作业管理
LINUX的作业控制
前台作业:通过终端启动,且启动后一直占据终端;
后台作业:可通过终端启动,但启动后即转入后台运行,释放终端让作业运行于后台
(1)运行中的作业:ctrl+z
(2) 尚未启动的作业:#COMMAND &
后台作业虽然被送往后台运行,但其依然与终端相关;
退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端关系
#nohup CMD & #screen;CMD
查看当前终端所有作业:#jobs
作业控制:
#fg :把指的后台作业调回前台
#bg :让送往后台的作业在后台继续运行
#kill : 终止指定的作业
并行运行
同时运行多个进程,体改效率
方法1: vi all.sh
f1.sh& f2.sh& f3.sh&
方法2:
(f1.sh&);(f2.sh&);(f3.sh&)
方法3;
{ fi.sh& f2.sh& f3.sh& }
原创文章,作者:shenjialong,如若转载,请注明出处:http://www.178linux.com/79278