Linux之进程管理

2024-01-01 20:32:14

什么是进程

在linux中每个执行的程序都称为一个进程,每个进程都分配一个ID号(pid进程号)。每个进程都可能以两种方式存在,即前台和后天。前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但屏幕上无法看到的进程,通常使用后台的方式执行。
一帮系统的服务都是以后台进程的方式存在的,而且都会常驻在系统中,直到关机才结束。
image.png


ps 显示系统执行的进程

image.png

ps -aux

System v显示风格
image.png

  • USER:用户名称
  • PID:进程号
  • %CPU:进程占用CPU的百分比
  • %MEN:进程占用物理内存的百分比
  • VSZ:进程占用的虚拟内存大小(KB)
  • RSS:进程占用的物理内存大小(KB)
  • TTY:终端名称,缩写
  • STAT:进程状态,其中S-表示睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-表示正在运行,D-表示短期等待,T-被跟踪或者被停止
  • STARTED:进程的启动时间
  • TIME:CPU时间,即进程使用CPU 的总时间
  • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

ps指令常配合grep使用,如查看sshd服务

image.png


ps -ef

以全格式显示当前的所有进程,BSD显示风格
image.png

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

这两个命令都可以查看进程列表,不同点如下:

  1. 风格不同。ps -ef是System v显示风格,而ps aux是BSD显示风格。
  2. ps -ef和ps aux显示内容不一样。
  3. COMMADN列如果过长,aux会截断显示,而ef不会。

终止进程kill和killall

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

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

常用选项:-9,表示强迫进程立即停止
image.png


查看进程树pstree

pstree [选项]

常用选项:

  • -p:显示进程PID
  • -u:显示进程所属用户

image.png


服务(service)管理

service管理指令

服务(service)的本质就是进程,运行在后台,通常都会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,firewall),因此我们又称之为守护进程。

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

service指令管理的服务可以在/et/init.d查看
image.png

查看服务名

使用setup查看【系统服务】就可以看到全部。
image.png
image.png


服务的运行级别

linux系统有7种运行级别,常用的是3和5。centos7以后对运行级别简化成3和5.

  • 运行级别3:完全的多用户状态,命令行模式
  • 运行级别5:也是多用户,登入后进入图形化模式
chkconfig指令

通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭。
chkconfig指令管理的服务在/etc/init.d查看
chkconfig基本语法

chkconfig  --list [ | grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off

image.png

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

systemctl管理服务

在centos7以后,很多服务不再使用service,而是使用systemctl

systemctl [start | stop | restart | status] 服务名

systemctl指令管理的服务在/usr/lib/systemd/system查看


systemctl设置服务的自启动状态
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态)
systemctl enable 服务名 (设置服务开机启动)
systemctl disable 服务名 (关闭服务开机启动)
systemctl is-enabled 服务名 (查询某个服务是否是自启动)

查看防火墙是否开机自启动,如果不是就开启


打开/关闭指定端口

在生产环境下往往需要打开防火墙,但是如果把防火墙打开,外部请求数据包就不能跟服务器监听端口通讯了。需要我们打开指定端口,比如8080,3306,22.
image.png
firewall指令

  1. 打开端口:firewall-cmd --permanent --add-port=端口号/协议
  2. 关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
  3. 重新载入,才能生效:firewall-cmd --reload
  4. 查询端口是否开放:firewall-cmd --query-port=端口/协议image.png

动态监控进程-top

top和ps命令类似,都是用来显示正在执行的进程。top和ps最大的不同在于top在执行一段时间可以更新正在运行的进程。

top [选项]

选项说明:

  • -d 秒数:指定top命令每隔几秒更新,默认3s
  • -i:top不显示闲置或者僵死进程
  • -p:通过指定监控进程ID来仅仅监控某个进程状态

image.png
交互操作说明:
image.png
补充:

  • 监控特定用户:输入top按回车,再输入u,最后输入用户名即可
  • 终止指定进程:输入top按回车,再输入k,最后输入进程号

监控网络状态

查看系统网络情况-netstat

netstat [选项]

选项说明:

  • -an:按一定顺序排列输出
  • -p:显示哪个进程在调用

image.png

文章来源:https://blog.csdn.net/weixin_61427900/article/details/135328033
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。