Linux进程管理

简介:

一、top:查看操作系统负载情况。

1、执行top命令的结果如下:

top - 21:57:41 (当前系统时间) up 3 min(运行时长),  1 user(登录用户数),  

load average: 0.05, 0.09, 0.04(平均负载 过去1分钟,5分钟,15分钟)


Tasks:  85 total(总进程数),   1 running(运行进程数),  84 sleeping(休眠进程数),         0 stopped(停止进程数),   0 zombie(僵死进程数)

Cpu(s):   0.3%us(用户空间占用CPU百分比),  0.1%sy(内核空间占用CPU百分比),                0.0%ni,100.0%id(空闲百分比),  0.0%wa(等待IO异常所占百分比),  

       0.0%hi(硬件终端所占百分比),  0.0%si(软件终端所占百分比),  

       0.0%st(被偷走--虚拟化 所占百分比)

Mem:     1012548k total(总内存空间),   204432k used(使用内存空间),   

       808116k free(空闲内存),    37768k buffers

Swap:    2031608k total(交换分区空间),        

       0k used,  2031608k free,    

       60848k cached

2、top命令的一些重要参数:


  M:按内存占用百分比大小排序。

  P:按CPU占用百分比大小排序,默认。

  T:按累计占用CPU时长大小排序。


  s:改变top刷新时间间隔。

  k:kill,终止一个进程。

  q:退出。


二、vmstat:查看系统负载情况。

1、procs:进程队列。

r:运行或等待CPU时间片的进程的个数

b:被阻塞(通常为等待IO完成)的进程队列的长度。

2、memory:内存。

swpd:从物理内存交换到swap中的数据量;0是最好的,说明基本内存够用,无需swap。

free:未使用内存大小。

buffer:buffer空间大小,通常与缓存写操作相关。

cache:cache空间大小,通常与缓存读操作相关。

3、swap:与交换分区相关。

si:swap in,数据进入swap中的数据量。通常是速率,kb/s

so:swap out,数据离开swap中的数据量。通常是速率,kb/s

        io:与磁盘IO相关。

bi:block in,从块设备读入内存的数据量。通常是速率,kb/s

bo:block out,保存至设备中的数据量。通常是速率,kb/s

4、system:与系统相关。

in:interupter,中断发生速率, 每秒的中断数。

cs:context switch,上下文切换速率,进程切换速率,通常为每秒切换的次数。

5、cpu相关:

us:用户空间的比例。

sy:内核空间比例。

id:空闲比例。

wa:等待IO比例。

st:被偷走的比例,虚拟化引起的。

6、vmstat的使用格式:

vmstat [delay] [count] 

delay:延迟几秒刷新。

count:显示次数。

-s:显示内存统计数据。


三、dstat:显示系统各式各样的信息。

可以man下看看具体显示那些信息。


四、查看进程的命令:


1、pstree:查看进程树。


2、ps(process state ):显示系统当前进程状态。

A、选项组合:

a、aux:

   a:显示所有跟终端相关的进程。tty有值说明进程跟终端相关

   x:显示所有跟终端无关的进程。tty为?说明进程跟终端无关

   u(user):表示以用户为中心显示进程相关信息。


b、-ef:

 -e:显示所有进程,相当于ax

 -f:完整格式列表

 -o:自定义格式显示进程信息。

   如 ps -axo ni,pid,command 显示ni(nice) pid command 三项进程信息。

B、执行命令后的结果说明:


a、结果的STAT:

   S:可中断睡眠

   D:不可中断睡眠

   R:运行或可运行

   T:停止

   Z:僵死

   s:session leader

   l:所线程进程

   +:前台进程

   N:低优先级进程

   <:高优先级进程

b、结果的TIME:运行时长。


c、结果的COMMAND:有那个命令发起的进程,有[]的为内核线程。


3、pgrep(process grep):显示符合条件的进程。


pgrep -U USERNAME :显示相关用户的进程。


pgrep -G GROUPNAME :显示相关组的进程。


五、nice、renice:

1、调整进程nice值:用来手动调整进程优先级。

2、有效的nice值:-20到19,对应的优先级为100到139;默认nice值0,即默认优先级为120

3、nice:对于普通用户只能调大此值;对于管理员可以从-20到19。

4、通过nice、renice调整nice值:

A、对于尚未启动的程序,可以如下调整nice:

nice -n # COMMAND

如#nice -n -5 /bin/bash(注意只有管理员才可使用-5,因默认为0,现在为-5调小了)

B、对于运行中的进程,可以如下调整nice:

renice # PID

如 renice -6 36016


六、进程间通信:

1、kill命令:用于是实现向其他进程发送信号。

2、kill -l 显示常用信号。

执行#kill -l后的结果如下:

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1

11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM

16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP

....

常用信号解释:

1) SIGHUP:让程序重读配置文件,而不需要重启程序。

2) SIGINT:中断信号,ctrl+c即发送此信号。

9) SIGKILL:杀死进程。

15) SIGTERM:终止进程,这种终止方式比较优雅,要等进程完成任务后在杀死。

19) SIGSTOP:停止进程,ctrl+z即发送此信号,此进程处于停止状态。

18) SIGCONT:被停止的进程,调制前台,叫此进程继续运行。


3、kill 发送信号的格式:

#kill -SIGNAL pid:对单个进程发送信号。

-SIGNAL:

信号代号,如1,9等。

信号名称,如SIGHUP,SIGKILL等。

        简写名称:如HUP,KILL等。


如#kill -9 pid=kill -SIGKILL pid

  #kill -1 pid=kill -SIGHUP  pid


4、#killall -SIGNAL COMMAND:对名称为command的所有进程发送信号。


如#killall -9 httpd

如#killall -9 java


七、Linux作业控制:


1、前台作业:一直占用一个终端。

2、后台作业:作业执行时不占用终端,作业启动后就释放终端。

3、非守护进程类的程序,启动后都在前台工作。

 A、如果已经启动:前台-->后台,Ctrl+z把前台作业送往后台,作业被“停止”

 B、如果尚未启动的作业:前台-->后台,可以只用COMMAND &

   退出当前会话(终端),作业也会终止;因为非守护进程类的作业与当前终端相关。

 C、如果把作业送往后台后,不期望作业随终端结束而终止,使用#nohup command &

 D、如果让送往后台的作业继续执行:

#fg [%]job_num:将作业调回前台继续运行

#bg [%]job_num:让作业在后台继续运行

 E、查看作业号: #jobs

 F、终止作业:#kill %job_num


八、pmap:显示某一个进程内存使用情况。


使用格式:pmap pid 

如:#pmap 2213,进程2213使用内存的情况。










本文转自lzf0530377451CTO博客,原文链接: http://blog.51cto.com/8757576/1574391,如需转载请自行联系原作者










相关文章
|
9月前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
11月前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
345 32
|
7月前
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
280 67
|
6月前
|
Web App开发 Linux 程序员
获取和理解Linux进程以及其PID的基础知识。
总的来说,理解Linux进程及其PID需要我们明白,进程就如同汽车,负责执行任务,而PID则是独特的车牌号,为我们提供了管理的便利。知道这个,我们就可以更好地理解和操作Linux系统,甚至通过对进程的有效管理,让系统运行得更加顺畅。
193 16
|
6月前
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
136 20
|
5月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
123 0
|
5月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
171 0
|
5月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
120 0
|
5月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
145 0
|
9月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
391 34