文章目录
一、进程基本介绍
- 在Linux中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号(pid,进程号)
- 每个进程都可能以两种方式存在的。前台和后台,所谓的前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,并且都会常驻在系统中,直到关机才结束。
二、ps指令详解
ps指令是用来查看目前系统中,有哪些正在执行,以及它们执行的情况。可以不加任何参数。
ps -a:
显示当前终端的所有进程信息ps -u:
以用户的格式显示进程信息ps -x:
显示后台进程运行的参数ps -ef
:以全格式显示当前所有的进程,-e显示所有进程,-f全格式
指令说明:
USER
:用户名称PID
:进程号%CPU
:进程占用CPU的百分比%MEM
:进程占用物理内存的百分比VSZ
:进程占用的虚拟内存大小(单位为KB)RSS
:进程占用的物理内存大小(单位为KB)TTY
:终端名称STAT
:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等STARTED
:进程的启动时间TIME
:CPU时间,即进程使用CPU的总时间COMMAND
:启动进程所用的命令和参数UID
:用户IDPPID
:父进程IDC
:CPU用于计算执行优先级的因子。数值越大,表示进程是CPU密集型运算,执行优先级会降低;数值越小,表示进程是I/O密集型运算,执行优先级会提高。
三、终止进程kill和killall
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
基本语法:
kill [选项] 进程号
(通过进程号终止进程)killall 进程名称
(通过进程名称终止进程,包括其子进程,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9
:表示强迫进程立即停止
四、查看进程树pstree
基本语法:pstree [选项]
,可以更加直观得来看进程信息
常用选项:
-p
:显示进程的PID-u
:显示进程的所属用户
五、服务管理
服务本质上就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysqld,sshd,防火墙等,因此我们又称为守护进程。
5.1 service运行级别
Linux系统有7种运行级别,常用的是级别3和级别5:
运行级别0
:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1
:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2
:多用户状态(没有NFS),不支持网络
运行级别3
:完全的多用户状态(有NFS),支持网络,登录后进入控制台命令行模式
运行级别4
:系统未使用,保留
运行级别5
:X11控制台,登录后进入图像GUI模式
运行级别6
:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
5.1 service管理指令
5.1.1 service指令与setup指令
service 服务名 [start|stop|restart|reload|status]
- 在CenterOS7.0后,很多服务不再使用
service
,而是systemctl
service
指令管理的服务在/etc/init.d
查看- 可以通过
setup
指令查看全部的系统服务,其中显示的内容中带*
的表示是自启动的服务。
5.1.2 chkconfig指令
- 通过
chkconfig
命令可以给服务的各个运行级别设置自启动/关闭 chkconfig
指令管理的服务在/etc/init.d
中查看chkconfig 服务名 --list
(查看服务)chkconfig --level number 服务名 on/off
(修改某个服务某运行级别的自启动或者关闭)
5.1.3 systemctl指令
- systemctl指令
- 基本语法:
systemctl [start|stop|restart|reload|status] 服务名
systemctl
指令管理的服务在/usr/lib/systemd/system
查看
- systemctl设置服务的自启动状态
systemctl list-unit-files
(查看服务开机启动状态,grep可以进行过滤)systemctl enable 服务名
(设置服务开机启动)systemctl disable 服务名
(关闭服务开机启动)systemctl is-enabled 服务名
(查询某个服务是否是自启动的)
-
应用案例:查看当前防火墙的状况,关闭防火墙和重启防火墙。
systemctl status firewalld
systemctl stop firewalld
systemctl start firewalld
-
细节讨论:
- 关闭或者启用防火墙后,立即生效。(
telnet IP地址 端口号
可以用来测试) - 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
- 如果希望设置某个服务自启动或者关闭永久生效,要使用
systemctl [enable|disable] 服务名
。
- 关闭或者启用防火墙后,立即生效。(
5.1.4 firewall指令
- 打开端口:
firewall-cmd --permanent --add-port=端口号/协议
- 关闭端口:
firewall-cmd --permanent --add-port=端口号/协议
- 重新载入,才能生效:
firewall-cmd --reload
- 查询端口是否开放:
firewall-cmd --query-port=端口/协议
案例介绍:
在真正的生产环境中,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据表就不能跟服务器监听端口通讯。这时,需要打开指定的端口,比如80、22、8080等。
netstat -anp
查看当前网络连接状态,以及端口信息
- 尝试在cmd中访问linux系统的111端口,由于开启了防火墙,所以连接失败。
- 利用
firewall-cmd --permanent --add-port=111/tcp
打开111端口
- 重新载入,并查询111端口是否开放
五、动态监控进程
5.1 top指令
基本语法:top [选项]
选项说明:
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒 |
-i | 使top不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
交互操作说明:
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此选项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
案例说明:
- 监视特定用户(输入top指令,回车,查看执行的进程。然后输入u,回车,再输入用户名即可)
- 终止指定的进程(输入top指令,回车,查看执行的进程。然后输入k,回车,再输入要结束的进程ID号)
5.2 netstat指令
基本语法:netstat [选项]
选项说明:
-an
:按一定顺序排列输出-p
:显示哪个进程在调用
参考资料:2021韩顺平 一周学会Linux