进程:触发任何一个时间,系统都会将它定义为一个进程,并给予这个进程一个ID号,成为PID,同时根据出发这个进程的用户于用户组关系,给予这个PID一组有效的权限。
程序:通常为二进制文件存放在储存媒介中,以物理文件的形式存在。
job control
- 工作所触发的进程必须来自你的shell的子进程(只能管理自己的bash)
- 前台:可以控制和执行命令的环境(foreground)
- 后台:自动执行的工作地,无法用Ctrl+c终止,可以使用fg/bg调取
- 后台中的程序不可输入(input)
直接将命令丢到后台“执行”: &
jobs [-lrs]
-l:除了列出job number与命令之外列出pid号
-r:列出在后台run的程序
-s:列出在后台stop的程序
+代表默认取用的任务,-代表倒数第二个放到后台的任务
kill:管理后台中的任务
格式:
kill -signal %jobnumber
kill -l
参数:
-l:L的小写,列出目前kill能够使用的信号(signal)
signal:代表给予后面接的那个工作什么样的指示
-1:重新读取一次参数的配置文件(类似reload)
-2:和键盘输入Ctrl-C同样的操作
-9:立刻强制删除一个工作
-15:以正常方式终止一项工作
nohug可以彻底放在系统后台而不是中断后台执行
nohug [命令] #在终端机前台工作
nohug [命令] & #在终端后台中工作
不支持bash内部命令,需要接外部命令
ps:将某个时间点的进程运行情况选取下来
格式:
ps aux #查看系统所有的进程数据
ps -lA #同上
ps axjf #连同部分进程数状态
参数:
-A:所有的进程全部显示,和-a一样
-a:不与terminal有关的所有进程
-u:有效用户相关的进程
x:通常与a一起使用,可列出较完整的信息
输出格式规划:
l:较长较详细
j:工作的格式
-f:做一个更为完整的输出
ps-l
- F:代表这个进程标志,说明这个进程的权限,常见号码有:
- 4,root权限
- 1,此程序仅可进行复制(fork)而无法实际执行(exec)
- S:代表这个进程的状态(STAT),主要的状态有:
- R,该进程正在运行中
- S,该进程正在睡眠状态(idle)。但可以被唤醒(signal)
- D:不可被唤醒的睡眠状态,通常这个进程可能在等待i/o的情况
- T:停止状态(stop)可能是在工作控制(后台暂停)或除错(traced)状态
- Z:zombie僵尸状态,进程已经终止但无法被删除至内存外
- UID/PID/PPID:代表此进程该被UID所拥有/进程的PID号码/此进程的父进程PID号码
- C:代表CPU的使用率,单位为百分比
- PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被执行
- ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel function,指出在内存的哪个部分,如果是个running的进程,一般就会表示为”-“ SZ代表此进程用掉多少内存/WCHAN表示目前进程是否运行中,同样,若为-表示为正在运行中
- TTY:登陆者的终端机位置,若为远程登录则使用动态终端接口(pst/n)
- TIME:使用掉的CPU时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间。
- CMD:就是command的缩写,造成此程序的触发进程的命令为什么
ps aux
top
详情自询
进程管理
kill -l :查看所有signal
1:SIGHUP,启动被禁止的进程,可以让该PID重新读取自己的配置文件,类似重新启动
2:SIGINT,相当于用键盘输入Ctrl—C中断一个进程
9:SIGKILL,强制中断一个进程,如果该进程进行到一半,那么尚未完成的部分可能会“半成品”产生,类似于vim的.filename.swp保留下来
15:SIGTERM,已正常的方式中断进程,但是若此进程已经发生问题,此方法不能正常结束进程
17:SIGSTOP,相当于键盘输入Ctrl-Z暂停一个进程
kill -signal PID
killall [-iIe] [command name]:可以终止一类服务
进程的执行顺序
优先执行序,PRI:值越低,优先级越高,由内核动态调整,用户无法直接调整。
所以要调整进程的优先级,就调整Nice,在进程信息里显示为“NI”,一般来说:PRI(New)=PRI(Old)+nice
注意:
- nice的值范围一般为:-20~19
- root可以随意调整他人的nice值,范围为:-20~19
- 一般用户仅可以调整自己的nice,范围为:0~19(避免一般用户抢占资源)
- 一般用户只能把进程优先级越调越高
那么如何调整nice呢?
- 一开始执行程序的时候就赋予nice值,用nice命令
- 调整某个已经存在的PID的nice值,用renice命令
nice命令
格式:nice [-n 数字] command
参数:
-n:后面接要调整的nice量
范例:
用root给一个nice值为-5 ,用于执行vim ,并查看进程
nice -n -5 vim &
ps -l
renice
命令:
格式:renice [number] PID
另外
top
也可以调整nice值。
系统资源查看
free:查看内存使用情况
格式:
free [-b|-k|-m|-g] [-t]
参数:
-b:直接输入free 将以KB为单位显示,这里使用b(bytes),m(MB),g(GB)为单位显示
-t:在结果中显示物理内存与swap的总量
tips:当swap分区被用20%以上则留意是否需要增加物理内存
uname:查看系统与内核的信息
格式:uname [-asrmpi]
参数:
-a:所有系统相关的信息
-s:系统内核名称
-r:内核的版本
-m:本系统的硬件名称
-p:CPU的类型
-i:硬件平台
uptime:查看系统启动时间与工作负载
netstat:跟踪网络
netstat -[atunlp]
-a:将目前系统上所有的链接、监听、socket数据都列出来
-t:列出tcp网络数据包的数据
-u:列出udp网络数据包的数据
-n:不列出进程的服务名,以端口号来显示
-l:列出目前正在网络监听的服务
-p:列出该网络服务的进程PID
常用:netstate -tlnp
dmesg:分析内核产生的信息
vmstat:检测系统资源变化
用法:
vmstat [-a] [延迟[总计检测此时]] CPU、内存等信息
vmstat [-fs] 内存相关
vmstat [-S 单位] 设置显示数据的单位
vmstat [-d] 与磁盘有关
vmstst [-p 分区] 与磁盘有关
参数:
-a:使用inactive/active替代buffer/Cache的内存输出信息
-f:开机到目前为止系统复制的进程数
-s:将一些事件(开机至目前为止)导致的内存变化情况列表说明
-S:后面可以接单位,让显示的数据有单位。例如K/M取代bytes
-d:列出磁盘的读写总量统计表
-P:后面列出分区,可显示该分区的读写总量统计
fuser:找出正在使用某目录或文件的程序
lsof:列出某个程序开启或使用的文件和设备
pidof:找出某个正在执行程序的pid