进程管理命令-ps(静态)

ps	#查看进程的信息,静态的显示  

选项:
a #显示所有的进程
u #显示正确的用户或者ID信息
x #显示所有没有终端的进程
-e #显示所有的进程
-f #显示更多的信息
[root@wqh ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 128144 4844 ? Ss 2019 1:27 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 2019 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 2019 0:10 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 2019 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 2019 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 2019 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 2019 1:06 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 2019 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 2019 0:10 [watchdog/0]
root 13 0.0 0.0 0 0 ? S 2019 0:00 [kdevtmpfs]
root 14 0.0 0.0 0 0 ? S< 2019 0:00 [netns]
root 15 0.0 0.0 0 0 ? S 2019 0:00 [khungtaskd] #每列的含义 USER #进程运行的用户
PID #进程的ID号
%CPU #进程占用CPU的使用百分比
%MEM #进程占用内存的使用百分比
VSZ #虚拟内存集 进程占用虚拟内存的使用空间
RSS #物理内存集 进程占用物理内存的使用空间
TTY #终端
? #没有终端,内核运行的一些程序
tty1 #本地机器终端
pts/0 #远程的虚拟终端 0 第一个虚拟终端
pts/1 #第二个虚拟终端
STAT #进程运行的状态
S #正在休眠状态
s #父进程,说明下面有子进程
R #正在运行的状态
D #无法被终止的休眠状态
T #被暂停或者被追踪的状态
Z #僵尸进程
l #字母L,以线程方式运行
< #优先级别高的进程
N #优先级低的进程
+ #前台运行
START #启动的时间,分钟
TIME #进程使用CPU的时间
COMMAND #执行的指令
有[] #内核态,系统运行的程序
无[] #用户态,用户运行的程序 ## 联合 grep命令 查看进程数的小技巧
# 第一个窗口执行
[root@wqh ~]# tar czf etc.tar.gz /etc/ /var/
tar: Removing leading `/' from member names # 第二个窗口检查(高级用法)
[root@wqh ~]# ps aux | grep [t]ar
root 39125 5.2 0.3 125576 3268 pts/0 D+ 10:44 0:06 tar czf etc.tar.gz /etc/ /var/ # 第二个窗口检查(低级用法)
# 此时不会显示出默认输出的grep进程,利用了 ps命令 不识别 `[]` 符号,而 grep命令 识别,会将 `[]` 视为无物
[root@wqh ~]# ps aux | grep tar
root 39125 5.2 0.3 125576 3268 pts/0 D+ 10:44 0:06 tar czf etc.tar.gz /etc/ /var/
root 15344 0.0 0.0 112712 960 pts/1 R+ 20:43 0:00 grep --color=auto tar

进程管理命令-top(动态)

# 第一行
top - 11:30:21 up 5 days, 23:38, 3 users, load average: 0.00, 0.01, 0.05
11:30:21 #当前系统的时间
up 5 days, 23:38, #系统运行时间,从你开机到现在总共运行了多长时间
3 users, #shell窗口的数量,登录的用户数量
load average: 0.00, 0.01, 0.05 #系统的平均负载 1分钟 5分钟 15分钟 # 第二行
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
# 105 total : 总共有多少个工作任务
# 1 running : 1个在运行
# 104 sleeping : 104个在等待
# 0 stopped:没有停止的
# 0 zombie:没有僵尸进程 # 第三行
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s): #占用CPU的使用时间百分比
0.3 us, #用户态,用户进程所占用cpu的百分比(user)
0.0 sy, #内核态,系统进程所占用cpu的百分比(system)
0.0 ni, #用做nice加权的进程占用cpu的百分比(nice),nice 值越高,级别越高,越不容易放弃 CPU
99.7 id, #空闲的进程占用cpu的百分比(idle)
0.0 wa, #等待I/O完成的进程占用cpu的百分比(waiting I/O)
0.0 hi, #hardIRQS 处理硬中断占用cpu的百分比(hard Interrupt ReQuest)
0.0 si, #softIRQS 处理软中断占用cpu的百分比(soft Interrupt Request)
0.0 st #虚拟化进程所窃取主机的占用cpu的百分比(steal)
us: is meaning of "user CPU time"
sy: is meaning of "system CPU time"
ni: is meaning of" nice CPU time"
id: is meaning of "idle"
wa: is meaning of "iowait"
hi:is meaning of "hardware irq"
si : is meaning of "software irq"
st : is meaning of "steal time" # 第四行、第五行
KiB Mem : 2028088 total, 109644 free, 138596 used, 1779848 buff/cache
物理内存 总用量 剩余用量 已用 缓冲和缓存
KiB Swap: 2097148 total, 2096884 free, 264 used. 1647436 avail Mem
虚拟内存 总用量 剩余用量 已用 可用量 # 第六行(即关于进程字段名)
PID:进程id号
USER:用户
PR:优先级(priority)
NI:nice值(越nice,值越大,优先级就低)
VIRT:虚拟内存
RES:物理内存
SHR:共享内存
S:进程状态
%CPU:占用cpu的百分比
%MEM:占用内存的百分比
TIME+:进程运行时间
COMMAND:进程运行的命令 # top外置命令选项
-d:指定变化时间
-p:只查看指定PID的进程
-u:只查看指定用户的进程
-b:保存到文件,和 -n 配合使用, -n代表次数
-n:指定次数 # top 常见内部指令
h 查看帮出
z 高亮显示
1 显示所有CPU的负载
s 设置刷新时间
b 高亮显示处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
R 对排序进行反转
f 自定义显示字段
k kill掉指定PID进程
W 保存top环境设置 ~/.toprc(做完 f 自定义操作,可以保存)
q 退出

什么是中断

硬中断   和   软中断  

硬中断  	处理跟硬件的请求,特点,速度够快 

软中断     内核进行处理中断请求,硬中断处理时间过长的请求,放入内存中,更新一下硬件寄存器,内存进行调取这个请求进行处理,以线程的方式运行

[root@wqh ~]#  ll  /proc/softirqs		#关于软中断的操作文件

发送网络包的时候,影响性能

管理进程状态

终止进程的命令有killkillallpkill,他们是linux中杀手三人组。

kill命令

## 1. kill

# 基本用法
kill # 根据信号执行的相应操作(默认为-15)
# 默认情况(-15),会根据进程id去终止进程,如果进程不存在,会提示
[root@wqh ~]# ps aux |grep top
root 1910 0.0 0.2 162008 2216 pts/1 S+ 10:03 0:00 top
[root@wqh ~]# kill 1910
[root@wqh ~]# ps aux |grep top # 查看所有kill信号
[root@wqh ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX # 常用信号释义
1) SIGHUP #重新加载配置文件,平滑重启(hang up)
2) SIGINT #跟ctrl+c一样,终止进程
9) SIGKILL #强制终止进程
15) SIGTERM #终止进程,默认的信号 (terminated)
20) SIGTSTP #跟ctrl+z一样,将前台进程暂停到后台 # 终止进程
[root@wqh06 ~]# kill 96421
[root@wqh06 ~]# kill -15 96421 # 平滑重启,进程的ID不会改变,会重新加载配置文件,(如图所示)
[root@wqh ~]# kill -1 2570 # 取消当前进程的操作
[root@wqh ~]# kill -2 2726 # 强制终止进程(杀进程一个措手不及)
[root@wqh ~]# kill -9 3091 # 将前台进程暂停到后台
[root@wqh ~]# kill -20 3091

killall命令

## 2. killall		#根据进程的名称取终止进程,如果进程不存在,会提示,精确匹配 (pidof top | xargs kill)

[root@wqh ~]# killall  top
[root@wqh ~]# ps aux |grep top
[root@wqh ~]# killall top
top: no process found

pkill命令

## 3. pkill		#根据进程名称终止进程,进程如果不存在,不会提示,模糊匹配 (pgrep top | xargs kill)
#只要进程名称中包含终止进程服务的名称,就会终止掉,特别是sh这样的进程 # 若使用pkill命令删除,则会删除命令中包含sh的所有进程
[root@wqh ~]# killall sh
# 会杀掉以下进程:
[root@wqh06 ~]# ps -ef |grep sh
root 6619 1 0 Apr20 ? 00:00:00 /usr/sbin/sshd -D
root 71376 6629 0 10:07 tty1 00:00:00 -bash
root 103953 103952 0 20:49 pts/2 00:00:00 /bin/bash
root 108153 6619 0 22:16 ? 00:00:00 sshd: root@pts/0
root 108156 108153 0 22:16 pts/0 00:00:00 -bash
root 109177 108156 0 22:36 pts/0 00:00:00 grep --color=auto sh

pidof 和 pgrep 补充

## 4. pidof 和 pgrep

# 首先我们有 PID 为 101666 的这样一个进程
[root@wqh06 ~]# ps -ef |grep nginx
nginx 101666 1 0 20:07 ? 00:00:00 nginx: worker process
root 101794 99575 0 20:09 pts/1 00:00:00 grep --color=auto nginx pidof # 精准搜索
[root@wqh06 ~]# pidof ngi //无结果
pgrep # 模糊搜索(和grep相似)
[root@wqh06 ~]# pgrep ngi //有结果
101666 ## 批量杀进程
# pidof nginx | xargs kill
# pgrep nginx | xargs kill

关于优先级PR和NI

关于top中的PR和NI

简而言之,PR就是优先级NI的一个映射,系统中有针对NI优先级进行操作的命令,如下。

# nice (定义范围为[-20,19],小于-20则取-20,大于19则取19)
-n:指定优先级
[root@wqh06 ~]# nice -n -50 vi test # renice
root@wqh06 ~]# ps axo pid,ni,command |grep vi
6332 0 /usr/bin/VGAuthService -s
102547 -20 vi test
102687 -20 grep --color=auto vi
[root@wqh06 ~]# renice 19 102547
102547 (process ID) old priority -20, new priority 19

后台进程管理

### 一. 局限于一个终端的进程调度
& # 将进程放在后台执行
bg %ID # 让一个暂停的后台进程在后台进行运行
fg %ID # 让一个后台的进程放入到前台运行
jobs # 显示当前终端后台的用户执行的进程
Ctrl + z # 暂停当前进程,放入后台
### 二. 不局限于一个终端的进程调度
## 1. nohup(no hang up)放到后台,关掉终端,进程依然会运行,不受制于终端窗口,同时,将默认输出到公屏上的内容重定向到nohup.out中
[root@wqh06 ~]# nohup tar zcf var.tgz /var ## 2. screen 相当于开启一个新的shell,在shell中运行,放到后台运行 # 2.1 创建后台进程并命名 或者 不指定名称直接进入
[root@wqh06 ~]# screen -S bgprocess // 指定名称
[root@wqh06 ~]# screen // 不指定名称 # 2.2 Ctrl + a + d 临时退出,将shell放到后台运行 # 2.3 查看screen的子shell窗口列表
[root@wqh06 ~]# screen -list
There are screens on:
103952.bgprocess (Detached) // 指定名称的screen
103925.pts-0.wqh06 (Detached) // 不指定名称的screen
2 Sockets in /var/run/screen/S-root. # 2.4 根据 pid 或 名称 进入子shell
[root@wqh06 ~]# screen -r 103952 // 通过pid调取
[root@wqh06 ~]# screen -r bgprocess // 或者通过名字调取 # 2.5 彻底关闭(删除)screen,需要先调出,然后在这个shell中exit,或者Ctrl + d
[root@wqh06 ~]# screen -r pts-0.wqh06
[screen is terminating] // 进入子shell后,我进行了Ctrl + d的操作
[root@wqh06 ~]# screen -list
There is a screen on:
103952.bgprocess (Detached)
1 Socket in /var/run/screen/S-root. # 2.6 当有一个终端用 -r 选项连接screen的子shell窗口时,其他终端用 -r 无法连接,需要用 -x
# 使用 -x 选项,会使两个终端的 screen 同步,如下举例,使用pts/0 进行操作, pts/1 的终端也会同步显示,可以用来做教学演示 [root@wqh06 ~]# screen -r bgprocess --------终端pts/0 进入screen bgprocess 成功
[root@wqh06 ~]# screen -list --------终端pts/1 查看screen list
There is a screen on:
103952.bgprocess (Attached)
1 Socket in /var/run/screen/S-root.
[root@wqh06 ~]# screen -r bgprocess --------终端pts/1 进入screen bgprocess 报错
There is a screen on:
103952.bgprocess (Attached)
There is no screen to be resumed matching bgprocess.
[root@wqh06 ~]# screen -x bgprocess --------终端pts/1 进入screen bgprocess 成功
# 当多台机器使用 screen -x 连接同一个`示范`窗口时,想单独退出,依然是用 Ctrl + a + d ,如果 Ctrl + d 就会关闭当前screen,所有其他终端都会断开这个子Shell的连接
### 三. 详细区分用法举例

# 关掉终端,进程就会终止的命令
[root@wqh06 ~]# tar zcf etc.tgz /etc/ /var/ # 放到后台,关掉终端,进程依然会终止的命令
[root@wqh06 ~]# tar zcf etc.tgz /etc/ /var/ & # 放到后台,关掉终端,进程依然会运行,不受制于终端窗口,同时,将默认输出到公屏上的内容重定向到nohup.out中
[root@wqh06 ~]# nohup tar zcf etc.tgz /etc/ /var/
nohup: ignoring input and appending output to ‘nohup.out’ # 放到后台,关掉终端,进程依然会运行
[root@wqh06 ~]# screen -S bgprocess
[root@wqh06 ~]# ping baidu.com
Ctrl + a + d 暂时退出即可。

Linux-进程管理命令的更多相关文章

  1. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  2. [转帖]十二 个经典 Linux 进程管理命令介绍

    https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看.   随笔- 109  ...

  3. 12个Linux进程管理命令介绍

    导读 执行中的程序称作进程.当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作 ...

  4. 十二 个经典 Linux 进程管理命令介绍

    执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统 ...

  5. 12 个 Linux 进程管理命令介绍

    执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统 ...

  6. Linux进程管理命令

    CentOS默认并没有安装上psmisc这个软件包,就是像pstree,fuser这类的命令就没有了.如果想要执行这些命令最好的方法就是手动的去安装它们 解决方法: yum -y install ps ...

  7. s9 Linux 进程管理命令

    9.1 ps:查看进程 9.2-3 pstree & pgrep 9.4-6 kill & killall & pkill 9.7 top:实时显示系统中各个进程的资源占用状况 ...

  8. linux命令之进程管理命令

    1.ps:查看进程 该命令用于列出命令执行时刻的进程快照,如果想要动态的显示进程信息,可以使用top命令. 参数 说明 a(常用) 显示与终端相关的所有进程,包含每个进程的完整路径 x(常用) 显示与 ...

  9. Linux进程管理(第二版) --进程管理命令

    进程管理命令 一.查看用户信息.5.15 分钟内的系统的,优先值越小,优先权越大 ] 1.nice 指定程序运行的优先级 格式 nice -n command 例如 nice -5 myprogrem ...

  10. Linux进程管理知识整理

    Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...

随机推荐

  1. 浅入深出了解XXE漏洞

    环境搭建 https://github.com/c0ny1/xxe-lab 为了更深入的理解,我准备理论和实际相结合的了解XXE! 浅谈XML 初识XML 一个好的代码基础能帮助你更好理解一类漏洞,所 ...

  2. ALV中layout布局控制详解

    参数的结构为SLIS_LAYOUT_ALV.结构中比较常用的字段如下: no_colhead      隐藏列标题          值为X或空 no_hotspot     headings不作为热 ...

  3. On-the-fly Garbage Collection: an Exercise in Cooperation

    On-the-fly Garbage Collection: an Exercise in Cooperation - Microsoft Research https://www.microsoft ...

  4. 异步日志 Loguru

    https://mp.weixin.qq.com/s/hy68s610B9GbL_wgwTn7nA 更优美的python日志管理库Loguru Asynchronous, Thread-safe, M ...

  5. LINUX动态库(.SO)搜索路径(目录)设置方法

    LINUX动态库(.SO)搜索路径(目录)设置方法 [root@VM_0_11_centos ld.so.conf.d]# cat /etc/ld.so.confinclude ld.so.conf. ...

  6. JavaScript基础知识-基本概念

    typeof操作符 typeof 操作符返回一个字符串,表示未经计算的操作数的类型. // 数值 typeof 37 === 'number'; typeof 3.14 === 'number'; t ...

  7. 高性能数据导入方案&表过滤器&一对多支持筛选- .NET SqlSugar ORM

    一.数据导入有哪些难题 1.数据分类 你需要将 插入.更新.忽略不计.错误数据 等进么分类汇总,最后返回给客户,如果没有很好的设计想把这些操作一步到位非常的难 2.高性能 对于插入或者更新 肯定不能单 ...

  8. 为什么在使用LESS 除法计算时会出问题

    hello,各位小伙伴们好,最近一直有小伙伴问我为什么写Less的时候,发现除法有了问题,在生成的css文件中,不给我们输出正确结果了. 直接抛结论: LESS 版本升级,EasyLess插件 新版本 ...

  9. 在项目中如何自定义的Eslint配置

    一.设置js风格的缩进为4个空格 在你的前端项目中找到.eslintrc.js文件,如图 module.exports = { root: true, parserOptions: { parser: ...

  10. (二)基于shard-jdbc中间件,实现数据分库分表

    基于shard-jdbc中间件,实现数据分库分表 Sharding-JDBC简介 Sharding配置示意图 1.水平分割 1.1 水平分库 1.2 水平分表 2.Shard-jdbc中间件 2.1 ...