您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux进程管理

时间:2021-12-07 10:09:55  来源:  作者:知书达理的旺财

在使用linux的时候,进程管理是必须要掌握的技能,下面从几个方面介绍下进程管理相关知识点。

进程分类

  • 前台进程:

该程序运行行,就占据了命令提示符;

  • 后台进程:

启动之后,释放命令提示符,后续的操作在后台执行;

从前台到后台:

当使用Ctrl+z 后该进程会放到后台,并停止运行;

如果想让它在后台继续运行,则可以使用bg命令:

# bg   job_id

这个job_id是使用jobs命令来查看的。每个放到后台的进程都有一个作业号。

[root@ns2 ~]# jobs
 [1]  + suspended  sleep 3600
[root@ns2 ~]# 

作业号:

+:有+号的表示命令默认操作的作业;

-:有-号的表示命令将第二个执行的操作;

把后台的进程拿到前台来执行:

# fg  job_id

终止某个作业:

# kill  %job_id  //注意这里的这个%一定不能省;

进程状态

D:不可中断的睡眠,通常是I/0操作;
R:运行或就绪,在运行队列上;
S:可中断的睡眠,(等待一个事件的结束)
T:停止
Z:僵死
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程(和终端相关的)
l:多线程进程
s:会话进程首进程

 PS命令

ps - report a snapshot of the current processes 给当前进程生成一个快照;可以理解成process status

ps命令支持两种不同风格的参数,BSD和UNIX;

  • BSD风格:不加-
[root@ns2 ~]# ps aux|head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 10368 668 ? Ss 10:26 0:01 init [3]
root 2 0.0 0.0 0 0 ? S< 10:26 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 10:26 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< 10:26 0:18 [events/0]
root 5 0.0 0.0 0 0 ? S< 10:26 0:00 [khelper]
root 10 0.0 0.0 0 0 ? S< 10:26 0:00 [kthread]
root 14 0.0 0.0 0 0 ? S< 10:26 0:00 [kblockd/0]
root 15 0.0 0.0 0 0 ? S< 10:26 0:00 [kacpid]
root 186 0.0 0.0 0 0 ? S< 10:26 0:00 [cqueue/0]
[root@ns2 ~]#

USER:表示运行此进程的用户

PID:表示此进程的进程号

%CPU:表示此进程占用CPU的百分比

%MEM:表示此进程占用内存的百分比

VSZ:此进程占用的虚拟内存大小,单位KB

virtual memory size of the process in KiB (1024-byte units). Device mAppings are currently excluded; this is subject to change.

RSS:此进程占用常住内存大小,不包括swapped的大小,也就是物理内存的大小,单位KB

resident set size, the non-swapped physical memory that a task has used (in kiloBytes).

TTY:表示此进程所属的终端,?表示不属于任何终端;

STAT:该进程的状态;

START:表示此进程的启动时间,

TIME 占用CPU的累积时长;

accumulated cpu time, user + system. The display format is usually "MMM:SS", but can be shifted to the right if the process used more than 999 minutes of cpu time.

COMMAND:是哪个命令启动的该进程,如果命令是被[]包起来的,则表示是内核进程;

  • UNIX风格:必须加-

例如:ps -elf

-e Select all processes. Identical to -A 显示所有的进程,和-A选项是一样的,所以也可以写在:ps -Alf

-l long format. The -y option is often useful with this. 使用长行格式显示,

-f does full-format listing. This option can be combined with many other UNIX-style options to add additional columns.就是说使用比较全的格式来显示,这样可以显示更多的信息;

[root@ns2 ~]# ps -elf|head
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 75 0 - 2592 - 10:26 ? 00:00:01 init [3]
1 S root 2 1 0 -40 - - 0 migrat 10:26 ? 00:00:00 [migration/0]
1 S root 3 1 0 94 19 - 0 ksofti 10:26 ? 00:00:00 [ksoftirqd/0]
1 S root 4 1 0 70 -5 - 0 worker 10:26 ? 00:00:19 [events/0]
1 S root 5 1 0 70 -5 - 0 worker 10:26 ? 00:00:00 [khelper]
5 S root 10 1 0 74 -5 - 0 worker 10:26 ? 00:00:00 [kthread]
1 S root 14 10 0 70 -5 - 0 worker 10:26 ? 00:00:00 [kblockd/0]
1 S root 15 10 0 80 -5 - 0 worker 10:26 ? 00:00:00 [kacpid]
1 S root 186 10 0 77 -5 - 0 worker 10:26 ? 00:00:00 [cqueue/0]
[root@ns2 ~]#

-U|u :显示属于指定的用户名或用户UID的进程。-u:表示的是有效的UID,比如:当Jack用户正在执行passwd在修改自己的密码,那么此时,用pgrep -u jack passwd并不能看到,因为passwd是有SUID的,此时该进程的执行者已经是root了。如果使用-U就可以显示出jack;

-o 用户可以定义要显示的字段:ppid,pid,cmd,stat等

pgrep命令

pgrep patten

查找能够匹配pattern的进程的进程号

pgrep -u|U root pattern

查找属于root用户的进程,并且能够匹配pattern的进程的进程号. -u和-U的区别上ps的是一样的;

[root@ns2 ~]# pgrep bash
5822
6126
6345
[root@ns2 ~]# pgrep -u root bash
5822
6126
[root@ns2 ~]#

pstree命令:

pstree 以树状结构来显示进程信息;

 top命令:

以动态的方式显示系统中的进程的相关信息:

[root@ns2 ~]# top -n 1
top - 23:49:36 up 13:23, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.4%id, 0.2%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 507528k total, 424776k used, 82752k free, 43412k buffers
Swap: 1052248k total, 0k used, 1052248k free, 198940k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 10368 668 564 S 0.0 0.1 0:01.10 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

%wa wait 等待I/0所占用CPU时间的百分比;

%hi Hard Interruption CPU的硬中断;

%si Soft Interruption CPU的软中断;

%st 指的是被偷走的CPU的时间;

VIRT 表示虚拟内存swap的使用量,单位是KB;

RES 表示的是物理内存的使用量,单位是KB;

SHR 表示的是占用共享内存的大小,单位是KB。因为LINUX系统中有一个库是共享的,所以在内存中也是以共享内存的方式提供的,这样就避免了每个进程都要单独分一点内存来使用相同的库。

TIME+ 真正占用CPU的时间;

top中的交互命令:

1(数字):如果服务器有多个CPU,那当按1后,就会显示每个CPU的负载情况;

M:按物理内存的占用来排序;

P:按CPU占用来排序;

T:按占用CPU的时间来排序;

l (小写L):是否显示平均负载和启动时间那一行;

t:是否显示Tasks和CPU(s)状态那一行信息;

m:是否显示内存和SWAP使用情况的那两行;

c:是否显示完整的命令信息;

q:退出top

k:终止指定的进程,按下k后,会让用户输入一个进程的pid

> 表示向后翻页;

< 向前翻页;

 

-d number 表示让top刷新的时间;

-b 让top以一批一批地来显示;也就是一次显示全部进程的相关信息;

-n number 当top工作在批模式下时,-n表示让top显示多少批;

进程间通信的方式

1、共享内存:一个进程在这块共享内存中写入数据,另一个进程再去读这个数据;

2、使用信号;

3、使用semaphore

Linux中的信号种类:

查看当前系统中支持的信息有哪些,可以使用kill -l命令:

[root@ns2 ~]# 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
[root@ns2 ~]#

其中几个最重要的是:

1:SIGHUP 让一个里程不用重启,就可以重新读取其配置文件,并让新的配置文件生效;

2:SIGINT 中断一个进程,和Ctrl+c的作用一样;

9:SIGKILL 杀死一个进程,直接关闭,不论是不是有打开的文件或是提供的服务;

15:SIGTERM 终止一个进程,如果该进程有打开的文件或是正在提供服务等,会等它这些操作都完成后,再关闭;(kill 的默认信号)

指定一个信号 :

  1. 使用信号号码:kill -1|2|9|15
  2. 使用信号名称:kill -SIGKILL
  3. 使用信号简写:kill -KILL

kill的用法:

# kill -9 pid

还有一个命令是killall,也可以和kill一样接受信号,只是killall后面接的是进程名称;

# killall [-9] httpd

调整进程的NICE值:

进程的nice命令代表的是进程的优先级:范围是-20~19,数字越小,优先级越高;

  • 对于已经在运行的进程,那么可以使用renice命令
# renice 18 33098 //后面接的是进程的PID
  • 对于还没有运行的程序,可以在其运行的时候使用nice来指定
# nice -n 10 tar zcf test.tgz /tmp

vmstat命令

vmstat 查看系统状态信息:

[root@ns2 ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 96616 53252 190240 0 0 63 9 1023 48 0 1 98 1 0
0 0 0 96616 53252 190240 0 0 0 0 1020 47 0 0 100 0 0
0 0 0 96616 53252 190264 0 0 0 0 994 28 0 0 100 0 0
0 0 0 96616 53252 190264 0 0 0 0 1010 48 0 2 98 0 0
0 0 0 96616 53252 190264 0 0 0 0 989 28 0 0 100 0 0
[root@ns2 ~]#
  • procs:表示进程相关信息:

r:表示正在运行的进程队列长度;running

b:表示进程阻塞的队列长度; blocked

memory:表示和内存相关的信息:

swpd:表示内存中有多少个页面被交换到了交换分区;

free:空闲的内存页面数量;

buff:缓冲使用的页面数量;

cache:缓存使用的页面数量;

swap:显示和交换分区相关的信息:

si:有多个个内存页面被交换到了交换分区;

so:有多个交换分区的页面被交换到了内存;

io:和硬盘I/O相关:

bi:有多少个硬盘块被放到内存中;block in 这些方向都是相对于内存来说的

bo:有多少个硬盘块从内存同步到了硬盘中;block out

  • system和系统相关:

in:表示有多少个中断;Interruption

cs:表示有多少次的上下文切换;也就是进程的轮换的到CPU上去执行一段时间; context switch

  • CPU 和CPU相关的信息:

us:用户空间占用的百分比;

sy:内核空间占用的百分比;

id:系统空间百分比;

wa:等待I/O占用的百分比;

st:CPU被偷走的时间;



Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、背景介绍作为一名渗透测试工作人员(或者小白),在我们的日常工作或者学习中,我们不可能时时刻刻将自己的个人电脑(安装好Kali Linux的个人主机)带在身边,当我们没有带自己的个人...【详细内容】
2021-12-27  Tags: Linux  点击:(2)  评论:(0)  加入收藏
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  Tags: Linux  点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  Tags: Linux  点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  Tags: Linux  点击:(13)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  Tags: Linux  点击:(7)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  Tags: Linux  点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  Tags: Linux  点击:(21)  评论:(0)  加入收藏
概述我们知道SQL Server是微软公司推出的重要的数据库产品,通常情况下只支持部署在windows平台上。不过令人感到兴奋的是,从SQL Server 2017开始支持 linux系统。此 SQL Serve...【详细内容】
2021-12-17  Tags: Linux  点击:(13)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  Tags: Linux  点击:(21)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  Tags: Linux  点击:(26)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(13)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(21)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(21)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(34)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(26)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(16)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(24)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条