Linux进程管理
在Linux中每个执行的程序(代码)都被称为是一个进程。每个进程都分配一个ID号。
每一个进程都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
每个进程都可能以两种方式存在:前台和后台。所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
显示系统执行的进程
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数。
ps显示的信息选项:
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消CPU时间 |
CMD | 正在执行的命令或进程名 |
#显示当前终端的所有进程信息
ps -a
#以用户的格式显示进程信息
ps -u
#显示后台进程运行的参数
ps -x
第一列(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代表全格式。
UID:用户ID。
PID:进程ID。
PPID:父进程ID。
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小表明进程是I/O密集型运算,执行优先级会提高。
TTY:完整的终端名称。
TIME:CPU时间。
CMD:启动进程所用的命令和参数。
终止进程
若是某个进程执行一半需要停止时,或者是已经消耗了很大的系统资源时,此时可以考虑体制该进程。使用kill命令来完成此项任务。
基本语法:
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称 (功能描述:通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9:表示强迫进程立即停止。
应用实例:
- 踢掉某个非法用户
#找到对应的进程号
ps -aux | grep sshd
#使用kill指令,踢走该用户
kill 4041
终止远程登录服务sshd,在适当的时候再次重启sshd服务。
终止多个gedit编辑器
killall gedit
强制杀掉一个终端
查看进程树pstree
基本语法:
pstree [选项],可以更加直观的查看进程信息。
常用选项:
-p:显示进程的PID。
-u:显示进程的所属用户。
服务(service)管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysql,ssd防火墙等,因此我们又称为守护进程,是Linux中的重点。
service管理指令:
service 服务名 [start|stop|restart|reload|status]
在CentOS7.0之后不再使用service了,而是systemctl。
使用案例:
查看防火墙的状态
service iptables status
关闭防火墙
service iptables stop
启动防火墙
service iptables start
关闭或启用防火墙后,立即生效。可以使用telnet指令进行测试。这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令。
查看服务名:
方法一:使用setup -> 系统服务,就可以看到
方法二:/etc/init.d/服务名称。用于列出系统有哪些服务。
运行级别:
查看或修改默认的运行级别:
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才能生效。