一、Linux进程概念
1.进程:Process,是运行中的程序的一个副本,有生命周期,都由其父进程创建
Linux内核存储进程信息的固定格式:taskstruct
多个任务的的taskstruct组件的链表:task list
2.进程优先级:0-139
0:一般不使用
1-99:实时优先级;数字越大优先级越高,系统自动安排
100-139:静态优先级;数字越小优先级越高,可手动更改
3.Nice值:-20至19,对应于100到139
普通用户只能将自己的优先级调低,root用户可以随意调制
每个队列有两对:运行队列、过期队列,140对280队,通过CPU中断控制来给进程运行时间
4.进程内存
内存是以Page Frame:页框的方式存储页面数据
每个内存页框的MMU(Memory Management Unit,内存管理单元)的大小一般为4k
进程在内存上的存储单元可能是不连续的
5.IPC:Inter Process Communication进程间通信
同一主机上:signal信号、shm: shared memory共享内存、semerphor旗语手势
不同主机上:rpc: remote procecure call远程过程调用、socket套接字
6.进程类型
守护进程:在系统引导过程中启动的进程,跟终端无关的进程;
前台(用户)进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式运行;
7.进程状态
运行态:running
就绪态:ready
睡眠态:可中断睡眠、不可中断睡眠
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
僵死态:zombie
8.进程的分类
CPU-Bound:cpu立即行,对CPU占用大,非交互式的占用大
IO-Bound:io立即行,对io占用大,非交互式的占用大
9.进程的数字标识16bits:
0-65535:有效使用1-65535
1-1023:固定分配,服务器使用,而且只有管理员有权限启用;
1024-4W:半固定,服务,如mysql等
4W+:临时;标识临时通信进程
10.CentOS 5/6/7的启动进程
CentOS 5: SysV init,在系统启动和创建进程借助脚本,串行启动,速度慢
CentOS 6:upstart,在5的基础上升级,同为脚本启动,但时可以支持并行启动
CentOS 7:systemd,并行,以systemd为单一进程同时启动其他进程
二、进程管理相关命令
1.pstree:进程树查看
[root@localhost ~]# pstree
systemd─┬─NetworkManager─┬─dhclient
│ └─3*[{NetworkManager}]
├─abrt-watch-log
├─abrtd
├─alsactl
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─bluetoothd
├─chronyd
├─crond
├─dbus-daemon───{dbus-daemon}
├─login───bash
├─lsmd
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───5*[{polkitd}]
├─rngd
├─rsyslogd───2*[{rsyslogd}]
├─smartd
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[{tuned}]
2.ps:process state,查看当前进程状态
(1)实际上是查看/proc/ *目录下内核中的状态信息;
/proc/*,每个数字表示进程PID,该文件夹内有进程的状态信息
内核参数:
可设置其值从而调整内核运行特性的参数;/proc/sys/
状态变量:其用于输出内核中统计信息或状态信息,仅用于查看;
参数:模拟成文件系统类型;
(2) ps [options]:
选项有三种风格:
1) UNIX options, which may be grouped andmust be preceded by a dash.
2) BSD options,which may be grouped and must not be used with a dash.
3)GNU long options, which are preceded by two dashes.
[OPTION]
a:所有与终端相关的进程;
x:所有与终端无关的进程;
u:以用户为中心组织进程状态信息显示
-e:显示所有进程
-f:显示完整格式的进程信息
-F:显示完整格式的进程信息;
-H:以层级(树状)结构显示进程的相关信息;
o field1, field2,...:自定义要显示的字段列表,以逗号分隔;
(3)常用组合:aux、ef、eFH、-eo、axo
1) # ps aux:显示所有与终端有无关联的进程信息,一用户为中心组织状态信息显示
USER:运行该进程的用户
PID:进程的ID号码
%CPU:CPU的占用百分比
%MEM:内存空间占用比率,占用整个内存空间的比例
VSZ:虚拟内存集;占用的虚拟内存大小,真正用来占用的内存
每个内存占用的内存有两种:线性内存空间、物理内存空间
线性内存:会映射到物理内存,在线性内存空间角度看是连续的内存占用
物理内存:实际上是以内存页框保存,可能一个进程占用的不连续的页框
RSS:ResidentSize,常驻内存集;坚决不能转换到swap中内存集
TTY:运行终端
STAT:当前进程的运行状态,BSD样式
R:running,运行态
S:interruptable sleeping,可中断睡眠
D:uninterruptable sleeping,不可中断睡眠
T:Stopped,停止状态
Z:zombie,僵死状态,进程结束后,在被回收之前状态
+:表示一个前台进程,占据命令提示符
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader ,回话主导进程,如shell,其主导其下的进程
START:进程开始时间
TIME:累计运行CPU时间
COMMAND:使用进程、线程
2) # ps -ef:以完整格式显示所有的进程信息
UID:启动进程用户
PID:运行进程号
PPID:父进程的进程号,0在内核启动init之前存在,init启动后终止,存在过渡,一般为swap的进程
C:cpu utilization,CPU的占用百分比
STIME:启动时间
TTY:与其终端相关
TIME:累计运行CPU时间
CMD:启动此进程的命令
3) # ps -eFH:树状层级结构显示
F比f显示的信息更加全面,层级结构显示,缩进相同同层级
PSR:运行在哪颗CPU上,十进制编号,0/1/2/3
4) # ps -eo , #ps axo显示自定义字段列表
o field1, field2,...:自定义要显示的字段列表,以逗号分隔,o要写在后面,因为要带参数
常用的field:pid,ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
ni:nice值;
priority:priority,优先级;
rtprio:realtime priority,实时优先级;
3.pgrep,pkill:基于进程名字或者其他属性对相关进程发起查询、发送信号
格式:pgrep|pkill [options] pattern
-u uid:effective user,有效的用户,活动的用户
-U uid:read user,谁启动的
-t TERMINAL:与指定的终端相关的进程;
-l:显示进程名;
-a:显示完整格式的进程名;
-Ppid:显示此进程的子进程;
4.pidof:根据进程名获取取其pid;
pidof PROCESS_NAME
5.top:- display Linuxprocesses,动态显示进程信息
格式: #top [OPTION]
(1)选项:
-d #:指定刷新时间间隔,默认为3秒;
-b:以批次方式显示;
-n #:显示多少批次;
(2)在top显示过程中通过交互式命令指定排序(默认CPU):
P:以占据CPU百分比排序;
M:以占据内存百分比排序;
T:累积占用CPU时间排序;
(3)首部信息关闭
uptime信息:l命令
tasks及cpu信息:t命令
内存信息:m命令
(4)退出命令:q
(5)修改刷新时间间隔:s
(6)终止指定的进程:k
显示详解:
[root@localhost~]# top
top- 13:11:56 up 14:18, 1 user, load average: 0.00, 0.01, 0.05
Tasks:413 total, 2 running, 411sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiBMem : 487080 total, 35240 free, 137440 used, 314400 buff/cache
KiBSwap: 2097148 total, 2097148 free, 0 used. 214568 avail Mem
#当前时间、运行时长、登录的用户数、平均负载(在CPU上等待运行的队列长度)
##此行可以用uptime单独显示
#一共运行多少任务、处于运行状态、睡眠状态、停止状态、僵死状态
#CPU占用百分比:用户空间的进程、内核空间占用比,nice值、空闲百分比、等待io完成时间、
硬件中断所消耗的CPU百分比、软件中断所消耗的CPU百分比、被(虚拟化程序)偷走的百分比
用户和内核一般为7:3
#内存:总共、空闲、被使用、缓冲和缓存(可以被回收再次使用)
#交换内存:总共、空闲、被使用、缓冲和缓存
6.uptime命令:显示系统时间、运行时长及平均负载
过去1分钟、5分钟和15分钟的平均负载;等待运行的进程队列的长度;
7.htop命令
需要安装(第三方安装包):[root@localhost~]# yum install -y htop
(1)选项:
-d#:指定延迟时间间隔;
-uUserName:仅显示指定用户的进程;
-sCOLUME:以指定字段进行排序;
(2)子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心;
(3) 显示叙述
左上方数据:表示每颗CPU、内存、交换内存的使用率
右上方数据:
Tasks当前的任务数量,用户空间进程
thr:线程数量
running:运行的数量
Load average :过去一分钟、五分钟、十五分钟的平均负载
(4)支持鼠标操作的文本窗口
如下点击可获取帮助信
8.vmstat命令
Report virtual memory statistics,报告虚拟内存的统计数据
格式:vmstat [options] [delay [count]]
直接给一个数字,表示每几秒刷新一次;给第二个数字表示刷新次数
选项: -s:显示内存统计数据;
procs:
r:等待运行的进程的个数;CPU上等待运行的任务的队列长度;
b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;
memory:
swpd:交换内存使用总量;
free:空闲的物理内存总量;
buffer:用于buffer的内存总量;
cache:用于cache的内存总量;
swap
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap的速率(kb/s)
io
bi:从块设备读入数据到系统的速度(kb/s)
bo:保存数据至块设备的速率(kb/s)
system
in:interrupts,中断速率;
cs:contextswitch, 上下文 切换的速率;
cpu
us:user space
sy:system
id:idle
wa:wait
st:stolen
9.pmap命令
report memory map of a process,显示进程的内存映射表。显示结果等同于cat /proc/PID/maps查看方式
格式:pmap[options] pid [...]
-x:显示详细格式的信息;
10.glances命令
A cross-platform curses-based monitoringtool,跨平台的监控工具,可远程监控
(1)常用选项:
-b:以Byte为单位显示网上数据速率;
-d:关闭磁盘I/O模块;
-m:关闭mount模块;
-n:关闭network模块;
-t#:刷新时间间隔;
-1:每个cpu的相关数据单独显示;
-o{HTML|CSV}:输出格式;
-f /PATH/TO/SOMEDIR:设定输出文件的位置;
(2)C/S模式下运行glances命令:
服务模式:
glances -s -B IPADDR
IPADDR:本机的某地址,用于监听;
客户端模式:
glances -c IPADDR
IPADDR:是远程服务器的地址;
11.dstat命令:
versatile tool for generating systemresource statistics;生成系统资源使用统计数据命令,安装包在epel源中
格式:dstat [-afv][options..] [delay [count]]
常用选项:
-c,--cpu:显示cpu相关信息;
-C #,#,...,total 显示第几颗CPU,total总共的
-d,--disk:显示磁盘的相关信息
-D sda,sdb,...,tobal 指明具体的磁盘信息
-g:显示page相关的速率数据;
-m:Memory的相关统计数据
-n:Interface的相关统计数据;
-p:显示process的相关统计数据;
-r:显示io请求的相关的统计数据;
-s:显示swapped的相关统计数据;
--tcp、--udp、--raw 、--socket 网络连接相关
--ipc 进程相关
--top-cpu:显示最占用CPU的进程;
--top-io:最占用io的进程;
--top-mem:最占用内存的进程;
--top-lantency:延迟最大的进程;
12.kill命令:
用于向进程发送信号,以实现对进程的管理;一般来说只有root才具有kill权限
kill [-s signal|-SIGNAL] pid… 向进程发信号
kill -l [signal]:显示当前系统可用信号:
注释:
(1)信号的标识方法:
1)信号的数字标识;
2)信号的完整名称;
3)信号的简写名称;
(2)常用信号:
1)SIGHUP:无须关闭进程而让其重读配置文件;
2)SIGINT:终止正在运行的进程,相当于Ctrl+c,中断
9)SIGKILL:杀死运行中的进程;
15)SIGTERM:终止运行中的进程;通常终止为后台进程。默认信号
18)SIGCONT:继续
19)SIGSTOP:停止,将进程送后台,停止状态
13.killall命令
killall [-SIGNAL] program 对所有与program相关的进程发信号
三、系统作业控制命令
1.系统作业job
(1)job种类:
前台作业(foregroud):通过终端启动,且启动后会一直占据终端;
后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端);
(2)让作业运行于后台
1) 运行中的作业:Ctrl+z
送往后台后,作业会转为停止态;相当于发送kill -19 信号
2) 尚未启动的作业: # COMMAND &
此类作业虽然被送往后台,但其依然与终端相关;如果希望把送往后台的作业剥离与终端的关系:# nohup COMMAND &
(3)查看所有的作业:#jobs命令
+/- 表示优先级;当调用时不加作业号会默认调用+的命令
(4)可实现作业控制的常用命令:
#fg [[%]JOB_NUM]:把指定的作业调回前台;
#bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;
#kill %JOB_NUM:终止指定的作业;
2.调整进程优先级:
可通过nice值调整的优先级范围:100-139;分别对应于:-20, 19。进程启动时,其nice值默认为0,其优先级是120;
注意:仅管理员可调低nice值;
(1)nice命令:
以指定的nice值启动并运行命令:# nice [OPTION] [COMMAND [ARGU]...]
选项:-nNICE
(2)renice命令:
#renice [-n] NICE PID...
(2)查看Nice值和优先级:ps axo pid, ni, priority, comm
四、Linux网络客户端工具
1.ping命令:
ping [OPTION] destination
-c#:发送的ping包个数;
-w #:限制ping命令超时时长;
-W#:一次ping操作中,等待对方响应的超时时长;
-s#:指明ping包报文大小;
2.hping命令: (epel源提供package: hping3)
send (almost) arbitrary TCP/IP packets to networkhosts;发送网络报文
--fast |
一秒钟发10个ping包 |
--faster |
更快的发送ping包 |
--flood |
|
-i uX |
3.traceroute命令:
跟踪从源主机到目标主机之间经过的网关;