进程之间可以通信的;IPC,inter-process communication
1.signal(信号)
2.semaphore(旗语)
3.shared memory(SHM)
4.socket
有效的信号表示方法:
1.使用信号的数字编码进行表示;
2.使用信号的完整名称进行表示;
3.使用信号的简写名称进行表示,简写名称就是完整名称中不包含“SIG”的其余部分;
常用的信号:
1.SIGHUP:无需关闭对应进程而让其重新读取其自身的配置文件;
2.SIGINT:终止正在运行的前台进程;
9.SIGKILL:没有任何预兆的终止正在运行的进程,残暴;
15.SIGTERM:默认信号,终止正在运行的进程;
18.SIGCONT:让转入后台的进程继续运行;
19.SIGSTOP:让进程转入后台并停止运行;
进程作业:
前台作业:
foreground job,通过终端启动并且启动后会一直占据终端的进程;
后台作业:
background job,可以通过终端启动,但启动后立即转入后台运行,释放终端;
如何让作业工作于后台:
1.正在运行的前台作业
Ctrl+z
注意:实际上是向此进程发送SIGSTOP信号,使得该进程转入后台以后即停止运行;
2.尚未启动的作业,使其启动并转入后台;
# COMMAND &
注意:此类作业是从前台启动,启动后立即转入后台,但即便如此,此进程也是与终端相关的进程;如果终端关闭,则此类进程也会终止;
3.尚未启动的作业,使其启动并转入后台,同时剥离其与终端的关联;
# nohup COMMAND &
查看后台作业的信息:
jobs
将后台作业转入前台运行:
fg [JOB_ID]
使后台作业在后台运行
bg [JOB_ID]
终止后台作业:
kill %JOB_ID
kill %1
调整进程优先级:
0-139
100-139
使用nice值调整进程的静态优先级:
nice值的取值范围是:-20~19
默认情况下,所有用户进程的初始nice值都是0;默认优先级为120;
注意:只有超级用户root才能使用负nice值提升进程的优先级;普通用户只能使用正nice值来降低进程的优先级;
vmstat:显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
其执行显示结果:
FIELD DESCRIPTION FOR VM MODE
Procs(进程)
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量。
Memory(内存)
swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
inact: 不活动内存。
active: 活动内存。
Swap(虚拟内存)
si:每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
IO(读写)
bi: 每秒读取的块数
bo: 每秒写入的块数
System(系统)
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
CPU(以百分比表示)
These are percentages of total CPU time.
us: 用户进程执行时间百分比(user time)
sy: 内核系统进程执行时间百分比(system time)
id: 空闲时间百分比
wa: IO等待时间百分比
st: 虚拟机偷走时间百分比
选项:
-s:从/proc/meminfo文件中抽取的信息并加工后输出;
delay:按照deley所指示的时间重复执行vmstat命令,默认单位为秒;
count:重复执行v模式TAT命令的次数;
例子:
vmstat
pmap:报告进程的内存映射关系,是Linux调试及运维一个很好的工具。
选项:
-x, --extended:显示扩展的信息
例子:
pidof vim
3690
pmap -x 3690
htop:一款监控软件,可以看成top命令的升级版。
常用选项:
-d #:htop刷新的间隔时间;
-u USERNAME:显示指定用户的进程;
-s COLUME_NAME:根据指定字段进行排序;
交互式命令:
l:显示指定进程打开的文件列表;
t F5:显示进程树结构,以显示进程之间的父子关系;
a:将选定的进程绑定到某指定的CPU核心运行;
例子:
htop
glances:系统实时监控工具
常用选项:
-b:以KByte为单位显示网卡的数据速率;
-d:关闭磁盘I/O模块;
-m:关闭Mount模块;
-n:关闭Network模块;
-1:单独显示每颗CPU核心的数据统计信息;
-t #:设定刷新时间间隔;
-o {HTML|CSV}:为输出数据指定输出的格式;
-f /PATH/TO/OUTPUT_DIR:指定输出文件的路径,glances.html
glances可以工作于C/S模型下;
S:服务器模式
glances -s -B ipaddr
ipaddr:服务器本地的某个IP地址;
进程之间可以通信的;IPC,inter-process communication
1.signal
2.semaphore 旗语
3.shared memory(SHM)
4.socket
例子:
glances
dstat:全能系统信息统计工具。
常用选项:
-c,--cup:显示CPU相关的信息
-d,--disk:显示磁盘相关信息;
-g,--page:显示page相关信息;
-n,--net:显示与interface相关信息;
-y,--sys:现实与系统相关的信息;
--tpc:显示与TCP连接状态有关的信息;
--udp:显示与udp连接有关的信息;
--ipc:
--raw:
--socket:
--top-cpu:显示最占CPU资源的进程;
--top-io:显示最占用IO的进程;
例子:
dstat
kill:用来删除执行中的程序或工作。
常用选项:
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
例子:
kill -l(查看信号的信息)
有效的信号表示方法:
1.使用信号的数字编码进行表示;
2.使用信号的完整名称进行表示;
3.使用信号的简写名称进行表示,简写名称就是完整名称中不包含“SIG”的其余部分;
常用的信号:
1.SIGHUP:无需关闭对应进程而让其重新读取其自身的配置文件;
2.SIGINT:终止正在运行的前台进程;
9.SIGKILL:没有任何预兆的终止正在运行的进程,残暴;
15.SIGTERM:默认信号,终止正在运行的进程;
18.SIGCONT:让转入后台的进程继续运行;
19.SIGSTOP:让进程转入后台并停止运行;
killall:使用进程的名称来杀死进程
选项:
-e:对长名称进行精确匹配;
-l:忽略大小写的不同;
-p:杀死进程所属的进程组;
-i:交互式杀死进程,杀死进程前需要进行确认;
-l:打印所有已知信号列表;
-q:如果没有进程被杀死。则不输出任何信息;
-r:使用正规表达式匹配要杀死的进程名称;
-s:用指定的进程号代替默认信号“SIGTERM”;
-u:杀死指定用户的进程。
例子:
killall vi
pkill:根据pattern进行进程终止;有可能误伤其他程序;
选项:
-o:仅向找到的最小(起始)进程号发送信号;
-n:仅向找到的最大(结束)进程号发送信号;
-P:指定父进程号发送信号;
-g:指定进程组;
-t:指定开启进程的终端。
例子:
pkill vim
jobs:用于显示Linux中的任务列表及任务状态,包括后台运行的任务。
选项:
-l:显示进程号;
-p:仅任务对应的显示进程号;
-n:显示任务状态的变化;
-r:仅输出运行状态(running)的任务;
-s:仅输出停止状态(stoped)的任务。
例子:
find / -name password &
jobs -l(显示当前系统的任务列表)
注意:要得到以上输出信息,必须在执行jobs命令之前执行命令find / -name password &。否则,执行jobs命令不会显示任何信息。
bg:用于将作业放到后台运行,使前台可以执行其他任务。
例子:
bg 1(后台执行任务号为1的任务)
find / -name password &(后台执行任务)
注意:实际上,使用bg命令与在指令后面添加符号"&"的效果是一样的。例如,使用&将find / -name password放到后台执行
fg:用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。
例子:
fg 1(将任务转换到前台执行)
find / -name password(前台执行命令)
nice:用于以指定的进程调度优先级启动其他的程序。
选项:
-n nice:指定nice值
例子:
nice -19 tar zcf pack.tar.gz documents
renice:针对于已经启动的进程修改其nice值;
选项:
-n nice:调整指定的进程的优先级,在原有的nice值的基础上,在加上此处指定的nice值;
-g:指定进程组id;
-p<程序识别码>:改变该程序的优先权等级,此参数为预设值。
-u:指定开启进程的用户名。
例子:
renice 1 987 -u daemon root -p 32(将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1)