Linux进程管理

在Linux中每个执行的程序(代码)都被称为是一个进程。每个进程都分配一个ID号。

每一个进程都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。

每个进程都可能以两种方式存在:前台和后台。所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。

显示系统执行的进程

ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数。

ps显示的信息选项:

字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消CPU时间
CMD 正在执行的命令或进程名
#显示当前终端的所有进程信息
ps -a
#以用户的格式显示进程信息
ps -u
#显示后台进程运行的参数
ps -x
Linux进程管理_第1张图片

第一列(USER)代表进程属于的用户。
第二列(PID)代表进程号/进程ID。
第三列(%CPU)表示进程占用的CPU的情况。
第四列(%MEM)代表进程占用内存的情况。
第五列(VSZ)代表进程占用的虚拟内存的情况。
第六列(RSS)代表进程占用的物理内存的情况。
第七列(TTY)代表进程使用的终端。
第八列(STAT)代表当前进程运行的状态。s表示休眠,r表示运行,N表示进程拥有比普通优先级更低的优先级,D表示短期等待,Z表示僵死进程,T表示被跟踪或者被停止。
第九列(START)代表进程的启动时间。
第十列(TIME)代表进程占用CPU的总计时间。
第十一列(COMMAND)代表进程在执行时的命令行,如果过长会被截断显示。

ps查看进程的父进程

ps -ef | more

指令说明:以全格式显示当前所有进程以及父进程。
-e代表显示所有进程,-f代表全格式。


Linux进程管理_第2张图片

UID:用户ID。
PID:进程ID。
PPID:父进程ID。
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小表明进程是I/O密集型运算,执行优先级会提高。
TTY:完整的终端名称。
TIME:CPU时间。
CMD:启动进程所用的命令和参数。

终止进程

若是某个进程执行一半需要停止时,或者是已经消耗了很大的系统资源时,此时可以考虑体制该进程。使用kill命令来完成此项任务。
基本语法:

kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称 (功能描述:通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

常用选项:
-9:表示强迫进程立即停止。
应用实例:

  1. 踢掉某个非法用户
#找到对应的进程号
ps -aux | grep sshd
#使用kill指令,踢走该用户
kill 4041

终止远程登录服务sshd,在适当的时候再次重启sshd服务。


Linux进程管理_第3张图片

终止多个gedit编辑器

killall gedit

强制杀掉一个终端


Linux进程管理_第4张图片

查看进程树pstree

基本语法:

pstree [选项],可以更加直观的查看进程信息。
常用选项:
-p:显示进程的PID。
-u:显示进程的所属用户。

服务(service)管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysql,ssd防火墙等,因此我们又称为守护进程,是Linux中的重点。


Linux进程管理_第5张图片

service管理指令:

service 服务名 [start|stop|restart|reload|status]

在CentOS7.0之后不再使用service了,而是systemctl。

使用案例:
查看防火墙的状态

service iptables status
Linux进程管理_第6张图片

关闭防火墙

service iptables stop
Linux进程管理_第7张图片

启动防火墙

service iptables start

关闭或启用防火墙后,立即生效。可以使用telnet指令进行测试。这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令。

查看服务名:
方法一:使用setup -> 系统服务,就可以看到

Linux进程管理_第8张图片
系统服务

方法二:/etc/init.d/服务名称。用于列出系统有哪些服务。
Linux进程管理_第9张图片

运行级别:

查看或修改默认的运行级别:

vi /etc/inittab

Linux系统有7种运行级别(runlevel),常用的级别是3和5。

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录。
  • 运行级别2:多用户状态(没有NFS),不支持网络。
  • 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令模式。
  • 运行级别4:系统未使用,保留。
  • 运行级别5:X11控制台,登录后进入图形GUI模式。
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

开机流程说明:

chkconfig指令:
通过chkconfig指令可以给每个服务的各个运行级别设置自启动/关闭。

  • 基本语法:

查看服务
chkconfig --list | grep 服务名
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off

使用实例

#将sshd服务在运行级别5下设置为不自动启动。
chkconfig --level 5 iptables off
#在所有运行级别下关闭防火墙。
chkconfig iptables off
#在所有运行级别下开启防火墙。
chkconfig iptables on

chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效。

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