Linux - 进程管理

1 基本介绍

在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。

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

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

2 显示系统执行的进程

2.1 基本介绍

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

  • ps的选项
    • -a:显示当前终端的所有进程的信息
    • -u:以用户的格式显示进程信息
    • -x:显示后台进程运行的参数
      在这里插入图片描述

2.2 ps详解

  • 指令:ps -aux | grep xxx ,比如看看有没有sshd服务
  • 指令说明
    • system V:展示风格
    • USER:用户名称
    • PID:进程号
    • %CPU:进程占用CPU的百分比
    • %MEM:进程占用物理内存的百分比
    • VSZ:进程占用的虚拟内存大小(单位:KB)
    • RSS:进程占用的物理内存大小(单位:KB)
    • TT:终端名称,缩写
    • STAT :进程状态
      • S:睡眠
      • s:表示该进程是会话的先导进程
      • N:表示进程拥有比普通优先级更低的优先级
      • R:正在运行
      • D:短期等待
      • Z:僵死进程
      • T:被跟踪或者被停止等等
    • STARTED:进程的启动时间
    • TIME:CPU时间,即进程使用CPU的总时间
    • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
  • 示例:以全格式显示当前所有的进程,查看进程的父进程,如查看sshd的父进程信息:ps -ef | grep sshd
    • ps -ef:是以全格式显示当前所有的进程
      • -e:显示所有进程
      • -f:全格式
        在这里插入图片描述

2.3 进程的优先级

在Linux中,renice命令用于修改已运行进程的优先级(即niceness值)。通过调整niceness值,可以控制进程的CPU调度优先级。

  • 命令:renice -n <niceness> -p
    • -n <niceness>:指定新的niceness值(范围:-20 到 19),其中niceness值越高,该进程的优先级越低,默认为0
    • p <PID>:指定要修改的进程ID
    • 示例:
      • 修改单个进程的优先级,假设进程ID为1234,将其niceness值设置为5:renice -n 5 -p 1234
        • 输出样例:1234(process ID)old priority 0, new priority 5
      • 修改多个进程的优先级,可以同时指定多个进程ID,用空格分隔:renice -n 10 -p 1234 5678 91011
      • 修改整个进程组的优先级,使用-g选项,指定进程组ID(PGID):renice - n 15 -g 1234,这将修改进程组ID为1234的所有进程的niceness值
      • 修改用户所有进程的优先级,使用-u选项,指定用户名或用户ID:renice -n 10 -u username,这将修改该用户所有进程的niceness值

注意

  • 普通用户只能降低进程优先级(即设置niceness值为正数,如0 ~ 19)
  • 只有root用户可以提高进程优先级(即设置niceness值为负数,如-20 ~ -1)
  • renice只能修改已运行进程的优先级,如果需要启动时指定优先级,可以使用nice命令,如nice - 10 ./script.sh,以niceness=10启动进程

3 终止进程kill和killall

3.1 介绍

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

3.2 基本语法

  • kill [选项] 进程号(功能描述:通过进程号杀死/终止进程)
  • killall 进程名 (功能描述:通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
  • 常用选项:
    • -9:表示强迫进程立即停止
  • 示例:强制杀死一个终端,指令 kill-9 bash对应的进程号

4 查看进程树 pstree

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

5 服务(service)管理

5.1 介绍

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

5.2 service 管理指令

  • 命令:service 服务名 [start | stop | restart | reload | status]
  • 说明:在 CentOS7.0 后 很多服务不再使用 service ,而是 systemctl
  • service 指令管理的服务在 /etc/init.d 查看:ls -l /etc/init.d/
  • 示例:
    • 使用service查看,关闭,启动sshd服务
      • service sshd status
      • service sshd stop
      • service sshd stat

5.3 服务的运行级别(runlevel)

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

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

开机的流程说明:
开机 --> BIOS --> /boot --> systemd进程1 --> 运行级别 --> 运行级别对应的服务

5.4 CentOS7 后运行级别说明

# 在 /etc/initab
# 进行了简化 ,如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5
init 0
# To view current default target, run:
systemctl get-default
# To set a default target, run:
systemctl set-default TARGET.target

5.5 systemctl 管理指令

  • 基本语法: systemctl [start | stop | restart | status] 服务名
  • systemctl 指令管理的服务在 /usr/lib/systemd/system 查看

5.5.1 systemctl 设置服务的自启动状态

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

6 动态监控进程

6.1 介绍

top命令与ps命令很相似。它们都用来显示正在执行的进程。top和ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。

6.2 基本语法

  • 命令:top [选项]
  • 选项说明:
    • -d秒数:指定top命令每隔几秒更新,默认是3秒
    • -i:使top不显示任何闲置或僵死的进程
    • -p:通过指定监控进程id来仅仅监控某个进程的状态
  • 交互操作说明:
    • P:以CPU使用频率排序,默认就是此项
    • M:以内存的使用率排序
    • N:以pid排序
    • q:退出top
  • 示例:
    • 示例1:监控特定用户,比如监控tom用户
      • top:输入此命令,按回车键,查看执行的进程
      • u:然后输入"u"回车,再输入用户名,即可
    • 示例2:终止指定的进程,比如我们要终止tom的登录
      • top:输入此命令,按回车键,查看执行的进程
      • u:然后输入"k"回车,再输入要结束的进程ID号
    • 示例3:指定系统状态的更新的时间(每隔10秒自动更新),默认是3秒
      • top -d 10

7 监控网络状态

7.1 查看网络情况netstat

  • 命令:netstat [选项]
  • 选项说明:
    • -an:按一定顺序排列输出
    • -p:显示哪个进程在调用
  • 示例:查看服务名为sshd的服务信息
    • netstat -anp | grep sshd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五讲四美好青年呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值