Linux进程管理

文章目录

  • 一、进程基本介绍
  • 二、ps指令详解
  • 三、终止进程kill和killall
  • 四、查看进程树pstree
  • 五、服务管理
    • 5.1 service运行级别
    • 5.1 service管理指令
      • 5.1.1 service指令与setup指令
      • 5.1.2 chkconfig指令
      • 5.1.3 systemctl指令
      • 5.1.4 firewall指令
  • 五、动态监控进程
    • 5.1 top指令
    • 5.2 netstat指令

一、进程基本介绍

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

二、ps指令详解

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

  • ps -a:显示当前终端的所有进程信息
  • ps -u:以用户的格式显示进程信息
  • ps -x:显示后台进程运行的参数
  • ps -ef:以全格式显示当前所有的进程,-e显示所有进程,-f全格式

Linux进程管理_第1张图片
指令说明:

  • USER:用户名称
  • PID:进程号
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用物理内存的百分比
  • VSZ:进程占用的虚拟内存大小(单位为KB)
  • RSS:进程占用的物理内存大小(单位为KB)
  • TTY:终端名称
  • STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
  • STARTED:进程的启动时间
  • TIME:CPU时间,即进程使用CPU的总时间
  • COMMAND:启动进程所用的命令和参数
  • UID:用户ID
  • PPID:父进程ID
  • C: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指令

  1. service 服务名 [start|stop|restart|reload|status]
  2. 在CenterOS7.0后,很多服务不再使用service,而是systemctl
  3. service指令管理的服务在/etc/init.d查看
  4. 可以通过setup指令查看全部的系统服务,其中显示的内容中带*的表示是自启动的服务。

5.1.2 chkconfig指令

  1. 通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭
  2. chkconfig指令管理的服务在/etc/init.d中查看
  3. chkconfig 服务名 --list(查看服务)
  4. chkconfig --level number 服务名 on/off(修改某个服务某运行级别的自启动或者关闭)

5.1.3 systemctl指令

  • systemctl指令
  1. 基本语法:systemctl [start|stop|restart|reload|status] 服务名
  2. systemctl指令管理的服务在/usr/lib/systemd/system查看
  • systemctl设置服务的自启动状态
  1. systemctl list-unit-files(查看服务开机启动状态,grep可以进行过滤)
  2. systemctl enable 服务名(设置服务开机启动)
  3. systemctl disable 服务名(关闭服务开机启动)
  4. 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等。

  1. netstat -anp 查看当前网络连接状态,以及端口信息
    Linux进程管理_第2张图片
  2. 尝试在cmd中访问linux系统的111端口,由于开启了防火墙,所以连接失败。
    在这里插入图片描述
  3. 利用firewall-cmd --permanent --add-port=111/tcp打开111端口
    在这里插入图片描述
  4. 重新载入,并查询111端口是否开放
    在这里插入图片描述

五、动态监控进程

5.1 top指令

基本语法:top [选项]
选项说明:

选项 功能
-d 秒数 指定top命令每隔几秒更新。默认是3秒
-i 使top不显示任何闲置或者僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态

交互操作说明:

操作 功能
P 以CPU使用率排序,默认就是此选项
M 以内存的使用率排序
N 以PID排序
q 退出top

案例说明:

  1. 监视特定用户(输入top指令,回车,查看执行的进程。然后输入u,回车,再输入用户名即可)
  2. 终止指定的进程(输入top指令,回车,查看执行的进程。然后输入k,回车,再输入要结束的进程ID号)

5.2 netstat指令

基本语法:netstat [选项]
选项说明:

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

参考资料:2021韩顺平 一周学会Linux

你可能感兴趣的:(Linux,linux,运维,服务器)