linux 进程管理

进程简介

进程:运行中程序

进程分类:批处理进程、交互式进程、实时进程
进程优先级:0-139
实时优先级:0-99,数字越大,优先级越高
静态优先级:100-139,数字越小,优先级越高
   nice值:-20, 19
 进程启动,默认nice值为0
动态优先级:由内核维护,动态调整

进程状态:
    运行态:running
    睡眠态:sleeping
      可中断睡眠:interruptable
      不可中断睡眠:等待外部满足之前无法继续运行, uninterruptable
停止态:不会被内核调度并运行,stopped
僵死态:zombie

进程创建机制:每一个进程都是由其父进程fork()自身而来;

进程间通信:IPC (InterProcess Communication)
同一主机:
    signal
    shm:共享内存
    semerphor: 旗语

不同主机:
    rpc: Remote Procedure Calling
    socket

进程管理

pstree: 查看进程树

ps: 显示进程状态的命令,快照式、一次性

进程信息字段:
    与终端相关的进程: a
    与终端无关的进程:x

    常用组合:ps aux
    VSZ: Virtual memory SiZe
    RSS: 常驻内存集

    STAT状态:
		R: running
		S: 可中断睡眠
		D:不可中断睡眠
		T:stopped
		Z:zombie

		s: session leader
		+:前台进程
		l: 多线程进程
		N:低优先级进程
		<: 高优先级进程

			COMMAND:包含在方括号中的进程表示为内核线程

			常用组合:ps -ef
				-e: 显示所有进程
				-f: 显示完整格式的信息

			常用组合:ps -eFH
				-F: 显示额外信息
				-H:显示进程的层次结构

			自定义要显示的信息:-o
				ps axo pid,command,psr,pri,ni
					ni: nice值
					pri: 优优级
					psr: 运行的CPU

			pgrep 
				-U UID:仅显示由指定用户启动的进程
				-G GID:仅显示与指定组相关的进程
				-t term...: 仅显示与指定终端相关的进程
				-l: 同时显示进程号和程序名

			pidof:显示指定命令所启动的进程的ID
				pidof COMMAND

top:查看进程信息

top查看进程字段信息
	M: 内存百分比
	P: CPU百分比
	T: 累积占用的CPU时间

	l: 显示或不显示负载信息
		过去1分钟、5分钟、15分钟的平均负载
					等待运行的进程队列的长度
	t: 显示或不显示进程及CPU相关的信息
	1: 数字,分别显示各CPU的相关信息
		us: user space
		sy: system
		ni: 
		id: 
		wa: wait io
		hi: hardware interrupt
		si: soft interrupt
		st: 
	     m: 显示或不显示物理内存和交换内存的相关信息

			q: 退出
			k: 终止指定进程
			s: 修改刷新时间间隔

		常用选项:
			-d #: 指定刷新时间间隔
			-b: 以批次的方式显示top的刷新
			-n #: 显示的批次

htop:查看进程信息

htop查看进程信息字段:
	u: 交互式选择显示指定用户的进程
	l: 显示光标所在进程所打开的文件列表
	s: 显示光标所在进程执行的系统调用
	a: 绑定进程到指定的CPU
	#:快速定位光标至PID为#的进程上

	F1:获取帮助

vmstat:查看存储信息

procs:
	r: 运行队列的长度
	b: 被阻塞(等待IO完成)队列的长度

memory: 
	swpd: 从物理内存交换至swap中的数据量
	free: 空间物理内存
	buffer:
	cache:

swap:
	si: swap in, 数据进入swap中的数据速率,kb/s
	so: swap out,数据离开swap中的数据速率

io:
	bi: block in, 从块设备读入的数据速率,kb/s
	bo: block out,保存至块设备的数据速率

system:
	in: interrupt, 中断速率
	cs: context switch, 进程切换速率

cpu:
	us, sy, id, wa, st

-s: 显示内存统计数据

nice:启动进程并调整进程号

直接启动一个进程,并指定其Nice值:
	nice -n # COMMAND

调整已运行的进程的nice值:
	renice -n # -p PID

kill:杀死进程

信号:signal,借助于kill命令

基于kill命令向其它的进程发信号:


显示常用信号:
	# kill -l
	# man 7 signal

每个信号都可以使用三种方式之一在Kill进行调用:
	数字代称: 1, 2, 9, 15
	信号完整名称:SIGHUP, SIGINT, SIGKILL, SIGTERM
	信号简称:HUP, INT, KILL, TERM

		1) SIGHUP:让程序重读配置文件需无须重新启动;
		2) SIGINT:interrupt,打断正在运行中的程序;
		9) SIGKILL:
		15) SIGTERM:

	kill [-SIGNAL] PID
		-9, -SIGKILL

	killall [-SIGNAL] COMMAND

job:作业控制

前台作业:通过终端启动,并在终止之前一直占据着终端
后台作业:作业启动之后即运行于后台,释放前台

交互式模式:手动启动的非守护进程类的程序,一般都运行于前台;

	将作业运行于后台:
			1、运行中的作业:
				Ctrl+z
					送往后台后,作业处于STOPPED状态
			2、尚未启动作业:
				COMMAND &

				此类由手动方式控制的作业,与终端相关作业会被终止;如果把作业送往后台,且与终端无关:
					# nohup COMMAND &

		作业号
			# jobs

		作业控制命令:
			# fg [[%]JOBNUM]: 将指定的作业调回前台
			# bg [[%]JOBNUM]: 让送往后台的作业在后台继续运行
			# kill %JOBNUM: 终止指定的作业

dstat:查看系统相关信息(uptime, vmstat, iostat, netstat, ifstat, nfsstat)

     -c: 显示CPU统计数据
	-d: 显示disk统计数据
	-D DISK: 只显示指定disk的统计数据
	-g: 显示page的统计数据
	-i: 显示中断的统计数据
	-m: 显示内存的统计数据
	-l: 显示系统负载的统计数据
	-n: 显示网络接口相关
	-N INTERFACE: 仅显示指定的网络接口的数据
	-s: 显示交换内存
	-p: 进程队列
	--ipc: 显示ipc消息队列、信号量和共享内存的使用状况
	-y: 系统状态数据

	默认相当于使用“dstat -cdngy”,也相当于“dstat -a”

	使用"dstat -f", 以完整格式显示所有信息,

	使用"dstat -v",显示结果类似于vmstat命令

	网络连接状态统计:
			--tcp
			--udp
			--raw
			--unix

pmap:显示指定进程的物理内存空间映射表

/proc/#/maps
pmap PID

 

posted @ 2019-01-25 16:14  Coolc  阅读(163)  评论(0编辑  收藏  举报