Linux教程

Linux进程管理

本文主要是介绍Linux进程管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、进程

进程:运行的程序

守护进程:一直运行的程序

二、查看进程

1、ps命令

进程快照

常用:
-e	显示所有进程※
-f	额外显示UID、PPID、C与STIME栏位※
常用命令:
# 1、ps -ef  #简易查看进程,过滤进程的命令。
[root@linux ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Jun02 ?        00:00:06 /usr/lib/systemd/systemd --system --des
root          2      0  0 Jun02 ?        00:00:00 [kthreadd]
root          4      2  0 Jun02 ?        00:00:00 [kworker/0:0H]
root          6      2  0 Jun02 ?        00:00:09 [ksoftirqd/0]
root          7      2  0 Jun02 ?        00:00:00 [migration/0]
root          8      2  0 Jun02 ?        00:00:00 [rcu_bh]

输出信息中各列的说明如下。
UID:开启该进程的用户id
PID:进程的标识号,进程id
PPID:父进程id
C:CPU使用的资源百分比;
STIME:进程开始的时间;
TTY :该进程是在哪个终端机上面运作,若与终端机无关,则显示?,另外, tty1-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的进程;
TIME:进程所使用的总的CPU时间;
CMD:正在执行的命令行。

#  2、 ps aux 
 #BSD格式参数,使用a选项和x选项显示所有进程,使用u选项显示进程的用户信息。
 
[root@linux ~]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  46368  6700 ?        Ss   Jun02   0:06 systemd --system --deserialize 18
root          2  0.0  0.0      0     0 ?        S    Jun02   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   Jun02   0:00 [kworker/0:0H]

输出信息中各列的说明如下。
USER:该进程属于的用户;
PID :该进程的进程号;
%CPU:该进程使用掉的CPU资源百分比;*****
%MEM:该进程所占用的物理内存百分比;*****
VSZ :(Virtual Size)进程占用的虚拟内存量 (单位Kb);*****
RSS :该进程占用的物理内存大小 (单位Kb);*****
TTY :该进程是在哪个终端机上面运作的,若与终端机无关,则显示?,另外, tty1-tty6是本机上面登入者进程,若为pts/0等,表示为由网络连接进主机进程;
STAT:该进程目前的状态
START:该进程被触发启动的时间;
TIME :该进程实际使用 CPU 运作的时间;
COMMAND:该进程的实际命令,[ 方括号 ] 属于内核态的进程。 没有 [ ] 的是用户态进程。。

STAT:该进程目前的状态,主要的状态包括
R :正在运行,或者是可被运行。
S :正在中断睡眠中,可被某些信号(signal) 唤醒。
D :不可中断睡眠。
T :正在侦测或者是停止了。
Z :已经终止,但是其父进程无法正常终止他,造成 zombie (疆尸) 进程的状态。
+ :前台进程。
l :多线程进程。
N :低优先级进程。
< :高优先级进程。
s :进程领导者。
L : 已将页面锁定到内存中。

# 3、pstree:显示进程状态树
pstree命令以树形结构显示进程和进程之间的关系。

[root@linux html]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─abrt-watch-log
        ├─abrtd
        ├─agetty
        ├─anacron
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─nginx───nginx
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───2*[{vmtoolsd}]
		
-a	显示启动每个进程对应的完整指令,包含启动进程的路径、参数等
-c	显示的进程中包含子进程和父进程
-h	对现在执行的程序进行特别标注
-n	根据进程PID号来排序输出,默认是以程序名称排序输出的
-p	显示进程的PID
-u	显示进程对应的用户名称

2、top命令

实时显示系统中各个进程的资源占用状况

参数选项	解释说明
-a	将进程按照使用内存排序
-b	以批处理模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。
-c	显示进程的整个命令路径,而不是只显示命令名称
-d	指定每两次屏幕信息刷新之间的时间间隔(top -d 1)
-H	指定这个可以显示每个线程的情况,否则就是进程的总的状态
-i	不显示闲置或者僵死的进程信息
-n	top输出信息更新的次数,完成后将退出top命令
-p	显示指定的进程信息(top -p 进程号)

重点:top输出
top - 01:12:32 up 2 days,  2:47,  2 users,  load average: 0.00, 0.01, 0.05
	第一行:任务队列信息,同uptime命令的执行结果。
	01:12:32           当前系统时间。
	up 2 days,  2:47   系统已经运行了1天16小时36分。
	2 users           当前有2个用户登录系统。
	load average: 0.00, 0.01, 0.05 — load average 平均负载情况*****
	*****后面的三个数分别是1分钟、5分钟、15分钟的平均负载情况。
	【体现系统繁忙的重要简单的查看指标】
	CPU是6核,负载超过6就繁忙的临界点.
	

Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
第二行,Tasks为任务(进程)。
	从上面的信息可以看出,
	系统现在共有105个进程,其中处于运行状态的有1个,
	104个在休眠(sleep),stoped状态0个,zombie状态(僵死)的有0个。
	STAT:该进程目前的状态,主要的状态包括
	R :正在运行或者是可被运行。
	S :正在中断睡眠中,可被某些信号(signal) 唤醒。
	D :不可中断睡眠。
	T :正在侦测或者是停止了。
	Z :已经终止,但是其父进程无法正常终止他,造成 zombie (疆尸) 进程的状态。

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
	第三行,CPU状态信息。
	0.0% us   (user)用户空间占用CPU的百分比(如:应用程序、执行命令)。*****
	0.0% sy   (system)内核空间占用CPU的百分比(如:内核进程、硬件磁盘操作)。*****
	0.0% ni   (nice)改变过优先级的进程占用CPU的百分比。
	100.0% id (idle)空闲CPU百分比,数值越大,CPU越空闲。*****
	0.0% wa   (wait)IO等待占用CPU的百分比。*****
	
	0.0% hi   (hard Interrupts)硬中断(Hardware IRQ)占用CPU的百分比。
	0.0% si   软中断(Software Interrupts)占用CPU的百分比。
	  0.0% st   虚拟机占用CPU的百分比。
	  
KiB Mem :  4026136 total,   203768 free,   228476 used,  3593892 buff/cache
	第四行,内存状态。
	KiB Mem :   995684 total,    87984 free,   234516 used,   673184 buff/cache
	内存: 
			4026136 total         #内存一共多大 
			203768  free          #可用内存,剩余内存
			228476 used           #已经使用的内存
			3593892 buff/cache    #系统缓存和缓冲占用内存空间

			
KiB Swap:  2097148 total,  2097148 free,        0 used.  3531892 avail Mem 
	第五行,swap交换分区信息。
	12097148 total  交换区总量。 
	0k       used   使用的交换区总量。 
	2097148 free   空闲交换区总量。 
	3531892 avail Mem  可用内存大小
	以上两行: cat /proc/meminfo或free -m获取。

从第七行开始,给出的是各进程(任务)的状态监控。
PID     进程id。
USER    进程所有者。
PR      进程优先级。
NI      nice值,负值表示高优先级,正值表示低优先级。
==================================================
VIRT     进程使用的虚拟内存总量,单位kb。*****
RES      进程使用的、未被换出的物理内存大小,单位kb。*****
SHR      共享内存大小,单位kb。*****
S        进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程。
%CPU     上次更新到现在的CPU时间占用百分比。*****
%MEM     进程使用的物理内存百分比。*****
===================================================
TIME+    进程使用的CPU时间总计,单位1/100秒。
COMMAND  进程名称(命令名/命令行)。

3、top快捷键指令

top快捷键指令
1     #查看系统核心总数,  类似于 lscpu(CPUs) 
q	  #退出top
M	  #按内存使用百分比排序输出
P	  #按CPU使用百分比排序输出
R     #对已排序的列反转排序
###抓重点显示,有助于查看的指令。
x     #高亮显示排序的列
z     #以彩色信息展示
b	  #高亮显示处于R状态的进程
>或<  #改变排序的列,依然高亮显示。
#top熟悉了解的快捷键
h	  #查看帮助
l,t,m #显示/隐藏前5行的数据输出

4、杀进程

# 1、杀进程
kill 进程号
pkill 进程名
killall 进程名

# 2、强制杀进程
kill -9 进程号
killall -9 进程名

问题:导致进程起不来.
web,crond没有数据的软件 kill -9 进程号
重的服务不能kill -9

5、进程前后台切换

sh tar.sh # 1、前台正在运行的进程
crtl+z    # 2、挂起前台正在运行的进程
bg		  # 3、挂起的进程在后台运行
fg		  # 4、后台运行的进程切换至前台
sh tar.sh & # 5、程序直接放到后台运行
这篇关于Linux进程管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!