Linux进程管理

内核的功能:

进程管理,网络管理,文件系统,安全管理,内核管理,驱动程序

process:进程,运行中的程序的一个副本,是被载入内存的一个资源的集合
进程ID(PID)号码被用来标记各个进程,通常从执行进程的用户来继承访问权限,存在生命周期

Linux的第一个进程

centos6:init
centos7:systemd
	进程都是由父进程创建的,写时复制,新创建好的新进程还是和父进程使用同一空间,等待有CPU发指定操作时,从父进
程中复制出一块空间使用。

进程状态:

运行:running
就绪:ready			
睡眠:可终端睡眠(interruptable),处于睡眠状态的进程最多
	  不可终端睡眠(uninterruptble)
停止:stopped,暂停于内存中,但不会被调度,除非手动启动
僵死:zombie,结束进程,父进程结束前,子进程不关闭

进程的分类:
CPU-Bound:CPU密集型
IO-Bound:IO读写密集型

pstree:查看进程树

-p:显示进程IP

ps:显示当前进程快照,所谓快照就是瞬间的状态,再次查看时,值会不一样

Linux系统各进程的相关信息保存在/proc/PID目录下以进程ID号为目录的文件中
ps命令选项有三种风格:
	1   UNIX options,选项前加-,短选项
	2   BSD options, 选项前不加-
	3   GNU long options,选项前--,长选项
	
		Unix选项:-A -e
		BSD选项:a,常用风格
		GNU选项:--all

BSD选项常用选项
	a:所有终端中的进程
	x:包括不链接终端的进程
	u:显示进程所有者的信息
	f:显示进程树
	k|--sort 属性:对属性排序,属性前加-表示倒叙
	o 属性:指定显示哪些属性,pid,cmd,%cpu,%mem等等
	L:显示支持的属性列表
UNIX选项常用选项
	-C cmd:指定命令查看,多个命令用逗号隔开
	-L:显示线程
	-e:显示所有进程,相当于-A
	-f:显示完整格式程序信息
	-F:显示更完整格式程序信息
	-H:以进程层级格式显示
	-u userlist:指定有效用户id或名称
	-U userlist:指定真正的用户的ID或名称
	-g gid:指定有效的gid或组名称
	-G gid:指定真正的的GID或名称
	-p PID:显示指定PID的进程
ps输出的属性:
	VSZ:虚拟内存集,线性内存
	RSS:常驻内存集,实际使用的
	STAT:进程的状态表示
		R:running
		S:可唤醒睡眠状态
		D:不可唤醒睡眠状态
		T:停止状态
		Z:僵死状态,kill掉父进程可杀死僵死状态的进程
		+:前台进程
		l:多线程进程
		L:内存分页并带锁
		N:低优先级进程
		<:高优先级进程
		s:子进程会话发起者

例:
	ps -ft pty/0	:查看指定终端正在运行那些命令

例:查看占用最多内存和CPU的进程
	ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%mem | head	
	ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head		

uptime:显示当前时间,系统已启动时长,当前登录系统用户数量,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

系统平均负载:指定时间间隔内运行队列中的平均进程数
通常每个CPU内核的当前活动进程不应大于3,那么系统性能良好。如果每个CPU内核的任务数大于5,那么此主机的型能有严重问题
如果Linux主机是1个双核CPU,当load average为6时说明机器已被充分使用

top:进程管理工具

有许多内置命令
排序:
	P:以占CPU百分比,多的在上面
	M:以占内存百分比,多的在上面
	T:累计占CPU时长
首部信息显示:
	uptime信息:l 命令
	tasks及CPU信息:t 命令
	CPU分别显示:1 (数字)
	memory信息:m 命令
退出:q
修改刷新时间间隔:s
终止指定进程 :k
修改颜色:Z
保存文件:W,保存至用户家目录下隐藏文件.toprc

htop:top增强版,需要EPEL源安装			

iostat:可测试磁盘读写性能
1 :表示每一秒刷新一次
vmstat:设备性能。CPU、MEM之类的

pidof cmd:查看指定命令或程序的进程号

pmap:查看命令或程序占用的内存信息,先试用pidof查看一下进程号

pmap `pidof dd`

dstat:替代vmstat,iostat,ifstat,集成的工具,新工具

-c:显示CPU信息
-d:显示磁盘信息
-g:显示page相关统计数据
-m:显示memory相关统计数据
-n:显示network相关统计数据
-p:显示process相关统计数据
-r:显示io请求相关统计数据
-s:显示swapped相关统计数据

iotop:命令

	是一个用来监视磁盘I/O使用状况的top类工具,iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信
息,可查看每个进程是如何使用IO

iotop输出信息:
	第一行:read和write速率统计
	第二行:实际的read和write速率
	第三行:参数如下
		线程ID(按p切换为进程ID)
		优先级
		用户
		磁盘读速率
		磁盘写速率
		swap交换百分比
		IO等待所占的百分比
		线程/进程命令
	常用参数:
		-o:是显示正在产生I/O的进程或线程,除了传递参数,可以在运行过程中按o键
		-b:非交互模式,一般用来记录日志
		-n NUM:设置检测的次数,默认无限,在非交互模式下很有用
		-d SEC:设置每次检测的间隔,默认一秒,接收1.1之类的
		-p PID:指定检测的进程/线程
		-u user:指定检测某个用户产生的I/O
		-P:仅显示进程
		-a:显示累计的I/O,而不是带宽
		-k:使用kB单位,而不是对人友好的单位,在非交互模式下,脚本编程有用
		-t:加上时间戳,非交互模式
		-q:禁止头几行,非交互模式,有三种方式
			-q 只在第一次监测时显示列明
			-qq 永远不显示列名
			-qqq 永远不现实I/O汇总
	交互式按键:
		left和right方向键:改变排序
		r:反向排序
		o:切换至选项--only
		p:切换至选项--processes
		a:奇幻之--accumulated选项
		q:退出
		i:改变线程的优先级

lsof:list open files查看当前系统文件的工具,在Linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件,系统在后台都为该应用程序分配了一个文件描述符

参数:
	-c <进程名>:列出指定进程打开的文件
		例:lsof -c vim
	-p <进程号>:指定进程号,可以查看该进程打开的文件
		例:lsof -p `pidof vim`
	-u:查看指定用户打开的文件
		例:lsof -u root
	+d:查看指定目录下被打开的文件,+D是递归查看
		例:lsof +d /etc
	-i <条件>:列出符合条件的进程(4、6、协议、:端口、@IP)
		例:lsof -i :22
	-n:不反向解析网络名字
	-n <目录>:列出使用NFS的文件
恢复已删除文件,注意:只能恢复正在使用的文件,没有使用的文件恢复不了,需借助其他工具
	lsof | grep /var/log/messages
	rm -rf /var/log/messages
	lsof | grep /var/log/messages
	cat /proc/653/fd/4	:653代表的是进程的PIP号使用pidof cmd查看进程的IP号
	cat /proc/653/fd/4 > /var/log/messages

kill:向进程发送控制信号

以实现对进程管理,每个信号对应一个信号,信号名称以SIG开头(可省略),不区分大小写
显示当前系统可用信号:kill -l 或 trap -l
常用信号:man 7 signal
	0)	用来错误检查,echo $?如果为0,则正常,为1不正常
		例:kill -0 `pidof httpd | tr -s " " "\n" | sort -n |head -1` &> /dev/null || systemctl restart httpd	
			解释:测试服务是否存在错误,如果存在错误则重启服务
	1)sighup	无需关闭进程而让其重读配置文件
	2)sigint	终止正在运行的进程,相当于Ctrl+c
	3)digquit	输入quit命令退出,Crtl+\
	9)sigkill	强制杀死正在运行的进程
	15)sigterm	终止正在运行的进程,输入kill不加信号默认为15
	18)sigcont	继续执行
	19)sigstop	后台休眠
	
killall <进程名>:将只要关于指定进程名的进程全部关闭
killall -0 <进程名>:测试某服务是否正常运行

pkill
	-u UID:生效者
	-U uid:真正发起运行命令者
	-t tty:于指定终端相关的进程
	-l:显示进程名
	-a:显示完整格式的进程名
	-P pid:显示指定进程的子进程

Linux的作业控制

让作业运行至后台
	Ctrl+z
	command &	:命令后跟&符号
查看作业:jobs
作业控制:
	fg 作业号:作业号是使用jobs查看的,将指定的后台作业调回前台
	bg 作业号:让送往后台的作业在后台继续运行
	kill 作业号:终止指定的作页
		18)sigcont	继续执行,在后台休眠时,可让其在后台继续执行
		19)sigstop	后台休眠,在后台执行时,可让其在后台停止

后台作业虽然被送到后台运行,但其仍然与终端相关,退出终端,将会关闭后台作业,如果希望送往后台后,剥离与终端的关系.

特殊场景:在生产中,都是通过远程来干活的,假如在备份一个需要半小时才可以完成的任务,而Windows电脑中间可能会断电之类的故障,不想让任务中断,让任务保持运行,直到完成才自动退出,使用以下命令

例:	
	screen	:首先开启screen共享窗口
	ping 127.0.0.1	:在screen中运行命令。
	然后关闭终端或Windows突然掉电,重连后使用screen查看,就依然可以看到任务,然后screen -ls查看,可以使用
screen -r恢复,就不会导致任务进行一半时损坏

并行运行

同时运行多个进程
	
	例:{{ ping 127.1;ping 127.2; }& { ping 127.3; ping 127.4; }&}
		
	例:	#!/bin/bash				
		{
		ping -c2 127.1
		ping 127.2
		} &

		{
		ping -c2 127.3
		ping 127.4
		} &      
	----------------------
		{
		ping 192.168.0.100
		} &

		{
		ping www.baidu.com
		} &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值