Linux学习笔记13 系统进程管理

前文

Linux学习笔记10 系统启动初始化,服务和进程管理(上)-CSDN博客

Linux学习笔记11 系统启动初始化,服务和进程管理(下)-CSDN博客

Linux学习笔记12 systemd的其他命令-CSDN博客

之前学习了怎么使用systemd的其他模块命令。

一个linux系统从启动到运行,从bios之后读取分区表进入引导程序grub到内核阶段加载文件系统,到系统的第一个用户空间程序初始化程序init或者systemd,到最后被启动的各项服务。

大部分的服务是以进程的形式存在于主机上。

PS命令

直接从命令上手会很快

ps有很多选项。它的格式大致如下:

复制代码
ps [option]
-a:显示所有活动进程的当前状态
-A:显示所有进程的当前状态
-e:等同-A
-f:显示完整信息
-l:显示详细信息
-g:指定用户组
-p:指定id
-u:指定用户id或者用户名

默认情况下,显示当前用户的进程哦。

最常用:

复制代码
ps -ef

pstree命令

将进程启动关系用树形图展示:

复制代码
pstree pid
pstree -P

上述语句分别可以:

  1. 指定根节点。
  2. 可以额外展示pid。

Top命令

动态(每3秒刷新)展示cpu占用最高的几个进程。注意熟练使用此命令可以很舒适的完成监控系统的任务。

复制代码
Top -d #-d可以指定刷新时间

进程号 USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
USER:运行该进程的用户的名称。
PR:进程的优先级(Nice值)。
NI:进程的nice值(优先级)。数值越低,表示优先级越高。
VIRT:进程占用的虚拟内存总量,单位为KB。
RES:进程占用的物理内存总量,单位为KB。
SHR:进程占用的共享内存量,单位为KB。
%CPU:进程使用的CPU时间百分比。
%MEM:进程使用的物理内存百分比。
TIME+:自进程启动以来所使用的CPU时间,单位为分钟。
COMMAND:启动进程的命令名。

其中有一列为S标注的是进程状态:

DRSTZ。分别为不可中断的休眠,正在运行,休眠,暂停,终止但未善后。

此时可以按b键显示正在运行的进程。

X可以改变排序方向

shift+>可以向右改变排序字段,向左则反之shift+<

退出该界面按Q。

还可以按F,S,D,1等。

  • F(或 f) :进入字段选择界面,用户可以在这里选择哪些列应该显示在top的输出中。
  • S :按CPU使用率排序。按s会将列表按 %CPU 列排序,默认情况下是降序(使用最多CPU的进程排在最前面)。
  • D :按驻留内存使用量(RES)排序。按d会将列表按 RES 列排序。
  • M :按内存使用率(%MEM)排序。按m会将列表按 %MEM 列排序。
  • N :按进程ID(PID)排序。按n会将列表按 PID 列排序。
  • 1 :显示所有CPU的负载。按1可以切换显示每个逻辑CPU的单独统计信息。

还可以直接在这个界面杀死进程,使用k。之后输入pid回车即可

改变进程优先级使用r。

kill命令

kill pid

超级常用的命令。

它的功能是使用一个信号通知进程终止。

复制代码
kill [option] pid

-l可以列出所有信号。

kill -15 22等同于kill 22

复制代码
kill [-signal] PID

选定信号发送给进程来终止进程。默认信号为15,进一步可以使用9但是不推荐使用在数据库等进程需要数据同步等操作这一类上。

nice命令

用一个指定的进程优先级去执行命令

复制代码
nice [option] [command]
#renice 可以用来调整已存在进程的优先级

普通用户可以降低,超级用户才能提高。

默认优先级为10。

复制代码
renice -n priority -g/-p/-u identifier 

-n可以省略。

复制代码
renice +1 -p 1111
#将1111号进程优先级改为1.
renice 19 -g myfriend
#把用户组myfriend的所有进程优先级改为19

普通用户最多设置0-19,超级用户可以设置0-20.

总结

ps可以知道process status,ps -ef超级常用。

kill很经典的杀进程方法,可以指定信号传递给进程使之终止。

nice和renice用来设置进程优先级。

相关推荐
超越自己30 分钟前
远程连接银河麒麟服务器-xrdp方式
linux·运维·服务器·远程桌面·银河麒麟
sakoba31 分钟前
Linux上kafka部署和使用
linux·运维·kafka
小武~38 分钟前
嵌入式Linux安全启动全解析:从原理到实战
linux·网络·安全
小年糕是糕手41 分钟前
【数据结构】常见的排序算法 -- 插入排序
c语言·开发语言·数据结构·学习·算法·leetcode·排序算法
刘一说1 小时前
CentOS Stream 网络故障排查:静态IP丢失、无法访问的完整解决方案
linux·tcp/ip·centos
我先去打把游戏先1 小时前
ESP32C3开发指南(基于IDF):console控制台命令行交互功能
笔记·嵌入式硬件·mcu·物联网·学习·esp32·交互
硬核子牙1 小时前
gdb调试多线程底层实现原理
linux
用户6135411460161 小时前
OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)
linux
长桥夜波1 小时前
【第二十周】机器学习笔记09
人工智能·笔记·机器学习
橘子131 小时前
Linux网络(二)——socket编程
linux·网络