18.Linux进程管理

Linux进程管理

什么是进程
什么是程序 (计算机程序)

进程的概念和与程序的区别

1、进程的定义
进程是允许某个并发执行的程序在某个数据集合上的运行过程。
进程是由正文段、用户数据段及进程控制块共同组成的执行环境。正文段存放被执行的机器指令,用户数据段存放进程在执行时直接进行操作的用户数据。进程控制块存放程序的运行环境,操作系统通过这些数据描述和管理进程。

2、进程的特征
进程是操作系统管理的实体,对应了程序的执行过程,具有以下几个特征。
并发性。 多个进程实体能在一段时间间隔内同时运行。并发性是进程和现代操作系统的重要特征。
动态性。 是程序在多道程序系统中的一次执行过程。进程的动态性表现在因执行程序而创建进程、因获得CPU而执行进程的指令、因运行终止而被撤销的动态变化过程。此外,进程在创建后还有进程状态的变化。
独立性。 在没有引入线程概念的操作系统中,进程是独立运行和资源调度的基本单位。
异步性。 是指进程的执行时断时续,进程什么时候执行、什么时候暂停都无法预知,呈现一种随机的特性。
结构特征。 进程实体包括用户正文段、用户数据段和进程控制块。

3、进程与程序的比较
3.1、进程与程序的区别
程序是静态的,进程是动态的,程序是存储在某种介质上的二进制代码,进程对应了程序的执行过程,系统不需要为一个不执行的程序创建进程,一旦进程被创建,就处于不断变化的动态过程中,对应了一个不断变化的上下文环境。
程序是永久的,进程是暂时存在的。程序的永久性是相对于进程而言的,只要不去删除它,它可以永久的存储在介质当中。

3.2、进程与程序的联系
进程是程序的一次执行,而进程总是对应至少一个特定的程序。一个程序可以对应多个进程,同一个程序可以在不同的数据集合上运行,因而构成若干个不同的进程。几个进程能并发地执行相同的程序代码,而同一个进程能顺序地执行几个程序。

关于进程和程序的区别,《现代操作系统》中用了一个比喻形象说明:一位有一手好厨艺的计算机科学家正在为他的女儿烘制生日蛋糕。他有做生日蛋糕的食谱,厨房里有所需要的原料,在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法),计算机科学家就是处理机(CPU),而做蛋糕的各种原料就是输入数据。进程就是厨师阅读食谱,取来各种原料以及烘制蛋糕等一系列动作的总和。

进程的属性:

进程ID(PID):是唯一的数值,用来区分进程;
父进程和父进程的ID(PPID);
启动进程的用户ID(UID)和所归属的组(GID);
进程状态:状态分为运行R、休眠S、僵尸Z;
进程执行的优先级;
进程所连接的终端名;
进程资源占用:比如占用资源大小(内存、CPU占用量);

扩展小知识

父进程和子进程;
他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。
比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。
在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行;

对于Linux进程的管理,是通过进程管理工具实现的,比如ps、kill等

ps 监视进程工具

静态 当前的状态
ps 的参数说明;
ps 提供了很多的选项参数,常用的有以下几个;
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
r 显示运行中的进程;
-e 显示所有进程,包括没有控制终端的进程
-x 显示没有控制终端的进程
我们常用的选项是组合是aux -elf

[root@JhouShuai ~]# ps aux 
[root@JhouShuai ~]# ps -elf


#ps -aux 是用BSD的格式来显示进程。
#ps -elf 是用标准的格式显示进程。

USER 进程的属主;
PID 进程的ID;

PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值
VSZ 进程占用虚拟内存大小;
RSS 固定的内存使用数量;
TTY 进程启动的终端ID; 没有终端基于内核的
STAT 进程状态
R 正在运行中的进程;
S 处于休眠状态;
T 停止或被追踪;
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);

+ 位于前台的进程组
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;


18.Linux进程管理_第1张图片
ps aux 输出的解释

top 动态查看进程
统计信息区前五行是系统整体的统计信息

系统的信息解释

任务队列信息(第一行)

18.Linux进程管理_第2张图片
任务队列信息(第一行)

进程和CPU的信息( 第二、三行)

18.Linux进程管理_第3张图片
进程和CPU的信息( 第二、三行)

内存信息(第四五行)。

18.Linux进程管理_第4张图片
内存信息(第四五行)

18.Linux进程管理_第5张图片
free -m /free -k

进程信息

18.Linux进程管理_第6张图片
进程信息

top快捷键

默认3s刷新一次
空格 :立即刷新。
q退出
1显示cpu核数
M按内存排序
P按CPU排序

扩展/proc目录

一个存放内存中的特殊目录/proc
这个目录比较特殊,他并不在我们磁盘上,而在我们的内存当中;
当前系统运行的所有进程都动态的存放在这个目录中。
查看/proc


18.Linux进程管理_第7张图片
查看/proc

上面每个编号就是以我们当前进程PID所命名的目录名。

Top命令从/proc/下读取命令

18.Linux进程管理_第8张图片
image.png
[root@JhouShuai ~]# cat /proc/sys/net/ipv4/ip_default_ttl 
64
[root@JhouShuai ~]# cat /proc/meminfo
MemTotal:        2030172 kB
MemFree:          542996 kB
MemAvailable:     943740 kB
Buffers:            2108 kB
Cached:           508908 kB
SwapCached:            0 kB
Active:           709500 kB
Inactive:         388840 kB
Active(anon):     588260 kB
Inactive(anon):    12116 kB
Active(file):     121240 kB
Inactive(file):   376724 kB
Unevictable:           0 kB
Mlocked:               0 kB

控制(关闭)进程:

kill用法
关闭进程:kill  [进程号]
通过信号的方式来控制进程
root@root:~# kill -l
[root@JhouShuai ~]# kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    
[root@JhouShuai ~]# 
#我们看到每个编号对应一个含义,如 
#那么我们可用9来终止进程。

关闭进程:

两种形式都可以强行关闭进程。
kill -9 [进程号] (强行关闭)
结束所有进程: killall pkill
kill和killall终止进程
查看 进程的pid
使用kill命令
语法:kill -9 pid


18.Linux进程管理_第9张图片
kill -9 pid

killall 通过程序的名称,直接杀死所有进程

举例:

[root@JhouShuai ~]# yum -y install httpd
[root@JhouShuai ~]# systemctl start httpd
[root@JhouShuai ~]# ps -aux | grep httpd
root      39962  0.0  0.1 226128  5052 ?        Ss   08:38   0:00 /usr/sbin/httpd -DFOREGROUND
apache    39974  0.0  0.0 228212  3128 ?        S    08:39   0:00 /usr/sbin/httpd -DFOREGROUND
apache    39975  0.0  0.0 228212  3128 ?        S    08:39   0:00 /usr/sbin/httpd -DFOREGROUND
apache    39976  0.0  0.0 228212  3128 ?        S    08:39   0:00 /usr/sbin/httpd -DFOREGROUND
apache    39977  0.0  0.0 228212  3128 ?        S    08:39   0:00 /usr/sbin/httpd -DFOREGROUND
apache    39978  0.0  0.0 228212  3128 ?        S    08:39   0:00 /usr/sbin/httpd -DFOREGROUND
root      39985  0.0  0.0 112644   956 pts/1    S+   08:39   0:00 grep --color=auto httpd
[root@JhouShuai ~]# killall httpd

你可能感兴趣的:(18.Linux进程管理)