29.进程的管理

来源:互联网 发布:淘宝自动提取卡密 编辑:程序博客网 时间:2024/04/28 09:21

这里写图片描述

1   SIGHUP  启动被终止的进程,可让该PID重新读取自己的配置文件,类似于重新启动2   SIGINT  相当于用键盘输入 ctrl-c 来中断一个进程的进行15  SIGTERM 以正常的结束进程来终止该进程。17  SIGSTOP 相当于键盘用 ctrl-z 来暂停一个进程的进行
我们通过 kill 或者 killall 来传送一个信号给某个进程kill -signal PIDkill -SIGHUP $(ps aux | grep 'syslog' | grep -v 'grep' | awk '{print $2}')
killall -signalkillall [-iTe] [command name]    -i:interactive 的意思,交互式的    -e: exact 的意思,表示后面的command name要一致,但整个完整的命令不能超过15    -I:命令名称忽略大小写killall -1 syslogkillall -9 httpd

关于进程的执行顺序

进程被执行的顺序与 优先级(Priority)和 CPU 调度有关。Priority 与 Nice 值:PRI 值越低表示优先级越高。整个 PRI 值是由内核动态调整的,用户无法直接调整。用户只能调整Nice 值。PRI(new) = PRI(old)+Nice当 nice 为负时,那么程序会降低 PRI的值,即会变得较优先处理。nice 值可调整范围 -20~19;root 可随意调整自己或者他人的nice值,-20~19一般用户只能调整自己的,为 0~19(避免用户抢占系统资源)一般用户仅可将nice值调高。如何调整nice值:执行新的命令给予新的nice值:nice [-n 数字] command    -n:后接一个数值,范围-20~19

这里写图片描述

renice : 已存在进程的 nice 重新调整renice [number] PID    PID:进程号nice 值可在父进程->子进程之间传递

这里写图片描述


系统资源查看

free:查看内存使用情况free [-b][-k][-m|-g] [-t]    -b:直接输入free时,显示的单位是Kb,我们可以使用b(byte),m(MB),k(Kb)及 g(Gb)来显示单位    -t:在输出的最终结果中显示物理内存与swap的总量swap 最好不要被使用超过 20%

这里写图片描述

uname : 查看与内核相关的信息uname [-asrmpi]    -a:所有系统相关的信息,包括下面的数据都会被列出来    -s:系统内核名称    -r:内核版本    -m:本系统的硬件名称    -p:CPU 类型,与 -m 相似,只是显示的是 CPU 的类型    -i:硬件的平台

这里写图片描述

uptime : 查看系统启动时间与工作负载

这里写图片描述

netstat : 跟踪网络,输出分为2部分,分别是网络与系统自己的进程相关性部分netstat -[atunlp]    -a:将系统上所有的连接,监听,socket数据都列出来    -t:列出tcp网络数据包的数据    -u:列出udp网络数据包的数据    -n:不列出进程的服务名称,以端口号来显示    -l:列出目前正在网络监听的服务    -p:列出该网络服务的进程PID

这里写图片描述

Proto:网络的数据包协议,主要分别为tcp和udp数据包Recv-Q:非由用户进程连接到此socket的复制的总字节数Send-Q:非由远程主机传送过来的acknowledged总字节数LocalAddress:本地的ip端口情况ForeignAddress:远程主机的ip端口情况State:连接状态,主要有建立(establised),监听(listen)
除了网络上的连接,其实 Linux 系统上面的进程是可以接收不同进程所发送过来的消息,那就是 Linux 上面的 (socket file)。socket file 可以沟通2个进程之间的信息,因此进程可以取得对方传送过来的数据。上面的socket file 的输出字段有:Proto:一般就是 unixRefCnt:连接到此 socket 的进程数量Flag:连接的标示Type:socket 访问的类型。主要有确认的连接stream与不需要确认的dgram两种State:若为 connected 表示多个进程之间已经建立连接Path:连接到此 socket 的相关程序的路径,或者是相关数据输出的路径

这里写图片描述

dmesg:分析内核产生的信息系统在开机的时候,内核会去检测系统的硬件,你的某些硬件到底有没有被识别出来,那就与这个时候的检测有关。所有内核检测的信息,不管开机还是运行中,反正内核产生的信息都会被记录到内存中的某个保护区域。用 dmesg 查看。

这里写图片描述

vmstat:检测系统资源变化vmstat 可以检测 cpu/内存/磁盘输入输出状态等vmstat [-a] [延迟 [总计检测次数]] //cpu /内存等相关信息vmstat [-fs]  //内存相关信息vmstat [-S 单位] //设置显示数据的单位vmstat [-d]  // 与磁盘有关vmstat [-p 分区]  //与磁盘有关 

这里写图片描述

内存字段(procs)的选项分别为:r:等待运行的进程数量b:不可被唤醒的进程数量 //这2个选项越多,代表系统越繁忙内存字段(memory)选项分别为:swpd:虚拟内存被使用量free:未被使用的内存容量buff:用于缓冲除尘器cache:用于高速缓存内存交换空间(swap)的选项分别为:si:由磁盘中将程序取出的量so:由于内存不足而将没用的程序写入磁盘的swap的容量如果si/so的数值太大,表示内存内的数据经常得在磁盘与内存之间传来传去,系统性能很差。磁盘读写(i/o)的选项分别为:bi:由磁盘写入的块数量bo:写入到磁盘去的块数量如果这部分数值大,代表系统I/O非常忙碌系统(system)的项目分别为:in: 每秒被中断的进程次数cs:每秒进行的事件切换次数如果这2个数值非常大,代表系统与接口设备的通信非常频繁。这些接口包括磁盘,网络,时钟等CPU 的选项分别为:us:非内核层的 CPU 使用状态sy:内核层使用的 CPU 状态,id:闲置状态wa:等待 I/O 所消耗的 CPU 状态st:被虚拟机所盗用的 CPU 使用状态

特殊文件与程序

SUID 权限仅对二进制程序有效;执行者对于该程序需要具有x的可执行权限;本权限仅在执行该程序的过程中有效;执行者将具有该程序所有者的权限;整个 SUID 的权限会生效是由于具有该权限的程序被触发,而我们知道一个程序被触发会变成进程,所以执行者可以具有程序所有者的权限就是在该程序编程进程的那个时候。如执行 passwd ,就具有 root 权限,这是因为你触发 passwd后,会取得一个新的进程与 PID,该 PID 产生时通过 SUID 来给予该 PID 特殊的权限设置。

这里写图片描述
这里写图片描述

/proc/* 代表的意义

进程都是在内存中的,而内存中的数据又都是写入到 /proc/* 这个目录下 的。基本上,主机上面的各个进程PID都是以目录的类型存在于 /proc 中。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


查询已打开文件或已执行程序打开的文件

fuser : 通过文件(或文件系统)找出正在使用该文件的程序有时候我想知道我的进程在这次启动中打开了多少文件,可以用fuser查看。如果你卸载时发现系统通知"device is busy",那么表示这个文件系统正在忙碌,表示某个进程有利用到该文件系统。可以用 fuser 跟踪;fuser [-umv] [-k [i]] [-signal] file/dir

这里写图片描述

如图所示,表示 . 下面有个 PID 为8805 的程序,该程序属于 root 且命令为 bash 。access 那个选项的意思是:c:此进程在当前的目录下(非子目录);e:可被触发为执行状态;f:是一个呗打开的文件;r:代表顶层目录;F:该文件被打开了,不过在等待回应中;m:可能为分析的动态函数库找到某个文件或者文件系统正在被哪些进程利用。
lsof:列出被进程所打开的文件名反过来,通过查找出某个进程打开的文件与设备lsof [-aUu] [+d]lsof //列出目前系统上所有已经被打开的文件与设备lsof -u root -a -U //列出 root 所有打开的 socket 文件
pidof : 找出某个正在执行的进程的 PIDpidof init syslogd
0 0