热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

进程管理工具、作业控制

ps显示系统当前进程状态,PID代表进程的ID;TTY中”?”代表与终端无关;STAT代表终端状态【S:可中断睡眠,D:不可中断睡眠,R:运行或可运行,Z:僵死,T:停止,s:se

ps

显示系统当前进程状态,PID代表进程的ID;TTY中&#8221;?&#8221;代表与终端无关;STAT代表终端状态【S:可中断睡眠,D:不可中断睡眠,R:运行或可运行,Z:僵死,T:停止,s:session leader 某个会话的主进程,l:多线程进程,+:前台进程,一般跟终端有关,N:低优先级进程,<:高优先级进程】;TIME代表运行时长;COMMAND代表由那个命令发起的进程,&#8221;[]&#8221;代表内核发起的

  • -a:显示所有与终端相关的进程

  • x:【目前测试x和ax无区别】

  • ax:所有进程

  • u:以用户为中心显示相关进程信息,%CPU:cup运行时长/当前进程运行时长,%MEM:内存占用比例,VSZ:虚拟/交换内存占用,RSS:常驻内存占用,代表这些内存不能放入交换分区

  • -e:显示所有进程

  • -f:完整格式列表

  • -F:额外信息

  • -H:显示进程层次关系

  • -ef:与-aux差不多

  • -eF:与-aux,-ef差不多,其中有个PSR字段,代表此进程运行在那个CPU上

  • -o:自定义要显示的自动,如 ps axo pid,command,只显示PID和COMMAND字段

[root@www ~]# ps -a
PID TTY TIME CMD
5216 pts/1 00:00:00 su
5218 pts/1 00:00:00 bash
5231 pts/0 00:00:00 ps
[root@www ~]# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /sbin/init
2 ? S 0:00 [kthreadd]
3 ? S 0:00 [migration/0]
4 ? S 0:00 [ksoftirqd/0]
5 ? S 0:00 [stopper/0]
6 ? S 0:00 [watchdog/0]
7 ? S 0:00 [migration/1]
8 ? S 0:00 [stopper/1]
.....
.....
5025 pts/0 Ss 0:00 -bash
5266 ? Ss 0:00 /usr/sbin/anacron -s
5293 pts/1 Ss 0:00 -bash
5312 pts/1 S 0:00 su - jiakang
5314 pts/1 S+ 0:00 -bash
5345 pts/0 R+ 0:00 ps ax
[root@www ~]# ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2896 1424 ? Ss 01:48 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 01:48 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 01:48 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 01:48 0:00 [ksoftirqd/0]
[root@www ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 01:48 ? 00:00:01 /sbin/init
root 2 0 0 01:48 ? 00:00:00 [kthreadd]
root 3 2 0 01:48 ? 00:00:00 [migration/0]
root 4 2 0 01:48 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 01:48 ? 00:00:00 [stopper/0]
[root@www ~]# ps -eF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 724 1424 0 01:48 ? 00:00:01 /sbin/init
root 2 0 0 0 0 1 01:48 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 0 01:48 ? 00:00:00 [migration/0]
root 4 2 0 0 0 0 01:48 ? 00:00:00 [ksoftirqd/0]

pgreg

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id

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

  • -G GROUPNAME:显示相关组进程

  • pgrep STRING:显示COMMAND字段中包含该字符串的进程

[root@www ~]# pgrep -U root【执行是root的进程,默认只显示进程号】
1
2
3
4
5
6
7
.....
[root@www ~]# pgrep bash
5025
[root@www ~]# pgrep sshd
1610
4991

pidof

用于查找指定名称的进程的进程号id号

[root@www ~]# pidof sshd
4991 1610

top

上面的几个命令都是快照,不是实时的,要想查看实时的要用top,默认是根据%cpu字段排序

top -d #:表示间隔#秒刷新一次;top -b:批次显示;top -n #:批次显示时显示的批数,与-b配合使用

load average:CPU的平均负载,分别是过去1分钟的,5分钟的,15分钟的,一般该负载值是个零点小数,如果变成了不是零点小数了,如:3.32,2。这代表CPU很可能达到了CPU性能瓶颈,等待处理的进程非常多,繁忙。

  • 1:查看各个cpu使用情况

  • M:按照内存占用排序,%MEM

  • P:占用CPU排序,默认%CPU

  • T:累计占用时间排序,TIME+

  • k:杀死进程

  • m:是否显示内存摘要信息

  • t:是否显示cpu摘要信息

  • l:是否显示负载信息

  • q:退出

[root@www ~]# top

top - 05:30:39【时间】 up 3:42【运行时长】, 1 user【登陆用户数】, load average: 0.00, 0.00, 0.00
Tasks: 126 total【共126个进程】, 1 running【一个正在运行】, 125 sleeping【125个睡眠】, 0 stopped【0个停止】, 0 zombie【0个僵死】
Cpu(s)【cpu平均使用情况,可以按1键查看各个cpu使用情况】: 0.0%us【用户空间程序占用】, 0.2%sy【系统程序占用】, 0.0%ni【调整nice值占用】, 99.8%id【空闲百分比】, 0.0%wa【等待IO完成占用的时间比例】, 0.0%hi【硬件中断占用时间比例】, 0.0%si【软(件)中断占用时间比例】, 0.0%st【被偷走的时间,指硬件虚拟化,如虚拟机】
Mem: 1030416k total, 259712k used, 770704k free, 56124k buffers
Swap: 2097148k total, 0k used, 2097148k free, 103732k cached
【优先级】 【共享内存,共享库】【该进程占用cpu的时间】
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5896 root 20 0 2696 1112 876 R 0.7 0.1 0:00.90 top
1 root 20 0 2896 1424 1204 S 0.0 0.1 0:01.37 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.03 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.11 w
【cpu平均使用情况,可以按1键查看各个cpu使用情况】top - 06:45:45 up 4:57, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1030416k total, 261076k used, 769340k free, 57204k buffers
Swap: 2097148k total, 0k used, 2097148k free, 103756k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5896 root 20 0 2696 1116 880 R 0.3 0.1 0:09.73 top
1 root 20 0 2896 1424 1204 S 0.0 0.1 0:01.37 init

htop

需要下载rpm包,yum install htop,用法和top一样,当用k键杀死进程时想退出可以按ESC

vmstat

vmstat # ,表示每#刷新一次,默认是不停的刷新,可以指定两个参数如:vmstat # #1 ,这代表每间隔#秒刷新一次一共刷新#1次,不会不停的刷新了。

vmastat -s:显示摘要信息

  • r:运行或等待CPU时间片的进程个数【该值越大表示cpu进程越多,cpu越慢】

  • b:被阻塞【等待IO完成】的进程的进程队列长度

  • swpd:从物理内存到交换内存的数据,该值越大表示物理内存越不够用

  • free:未使用物理内存大小

  • buff:缓冲区使用大小,通常与缓存写操作相关【有大量数据要写入硬盘,由于内存和磁盘的存储速度不同,内存先把它放到缓冲区,缓冲区数据慢慢存入磁盘中】

  • cache:缓存大小,通常与缓存读操作相关,把经常使用的缓存起来先不存入磁盘【见https://segmentfault.com/a/11&#8230;的缓冲区和缓存】

  • si:数据进入swap虚拟内存的速率kb/s

  • so:数据离开swap虚拟内存的速率kb/s

  • bi:从块设备【磁盘等】数据读入到内存的速率kb/s

  • bo:内存写入到块设备速率【当从磁盘拷数据是bi,bo值很大】

  • in:每秒CPU的中断次数,包括时间中断【时间片到下一个时间片中断间隔】

  • cs:每秒上下文切换次数,进程或线程切换速率【见http://www.cnblogs.com/ggjuch&#8230;】

  • us:用户占用时间比例【上面讲解TOP时提到,或者http://www.cnblogs.com/ggjuch&#8230;】

  • sy:系统【上面讲解TOP时提到】

  • wa:等待空闲【上面讲解TOP时提到】

  • st:偷走【上面讲解TOP时提到】

[root@www ~]# vmstat
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 833644 20660 96600 0 0 131 25 116 93 5 2 90 4 0
[root@www ~]# vmstat -s
1030416 total memory
197600 used memory
74476 active memory
91116 inactive memory
832816 free memory
21584 buffer memory
96656 swap cache
2097148 total swap
0 used swap
2097148 free swap
4619 non-nice user cpu ticks
0 nice user cpu ticks
1768 system cpu ticks
913579 idle cpu ticks
3553 IO-wait cpu ticks
27 IRQ cpu ticks
439 softirq cpu ticks
0 stolen cpu ticks
124998 pages paged in
27493 pages paged out
0 pages swapped in
0 pages swapped out
161757 interrupts
141096 CPU context switches
1494493561 boot time
5198 forks

dstat(待补充)

该命令需要安装,暂时安装占位后面学到这补充

[root@www ~]# mount /dev/cdrom /media/CentOS_6.6_Final
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@www ~]# yum list all dsta*
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
base_1 | 4.0 kB 00:00 ...
可安装的软件包
dstat.noarch 0.7.0-1.el6 base_1
[root@www ~]# yum install dstat
....
....
已安装:
dstat.noarch 0:0.7.0-1.el6
完毕!

nice,renice

nice命令用来调整进程的优先级,nice值范围是-20~19,对应的进程优先级是100~139;默认值是0,也就是默认优先级是120;该值越高代表优先级越小【该值19对应139优先级最小】;普通用户只能把该值调大,也就是降低进程的优先级;root用户可以随意调整。

对于尚未启动的进程可以在启动时指定nice值

  • -n # COMMAND:启动进程时指定nice值

[root@www ~]# nice -n -5 /bin/bash
[root@www ~]# ps axo ni,command,pid | grep bash
0 -bash 5651
-5 /bin/bash 5671
-5 grep bash 5681
[root@www ~]# pidof bash【指定进程的PID】
5671

renice

对于已经启动的进程可以用renice调整优先级

[root@www ~]# ps axo ni,command,pid | grep bash
0 -bash 5651
-5 /bin/bash 5693
-5 grep bash 5704
[root@www ~]# pidof bash
5693
[root@www ~]# renice -6 5693【修改优先级】
5693: old priority -5, new priority -6
[root@www ~]# ps axo ni,command,pid | grep bash
0 -bash 5651
-6 /bin/bash 5693
-6 grep bash 5964

kill

kill命令用来实习向其他进程发送信息

  • -l:显示可以向哪些进程通信【或者man 7 signal】

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

使用方法:kill [-SIGNAL] PID

  • -SIGNAL:可以是数字代号,比如1、2、9、15等;也可以是信号名称,比如SIGHUP;或者信号名称的简写HUP,STGNAL是可以省略的,省略后默认是15

常用的信号讲解

  • 1) SIGHUP:让程序重读配置文件而不用重启程序

  • 2) SIGINT:中断信号,Ctrl+c就是发送此信号

  • 9) SIGKILL:杀死进程

  • 15) SIGTERM:终止进程【杀死和终止的区别是:杀死就是立刻关闭进程,终止是等它把该保存的保存好之后再关闭进程】

[root@www ~]# /bin/bash
[root@www ~]# pidof bash
5275
[root@www ~]# kill -KILL 5275
已杀死
[root@www ~]# pidof bash

killall

当一个命令启用了多个进程时,该如何把它们全部杀死呢,killall [-SIGNAL] COMMAND,SIGNAL省略后默认是15

[root@www ~]# service httpd start
正在启动 httpd:httpd: apr_sockaddr_info_get() failed for www.51aixue.cn
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[确定]
[root@www ~]# pidof httpd
5267 5266 5265 5264 5263 5262 5261 5260 5257
[root@www ~]# killall -15 httpd
[root@www ~]# pidof httpd
[root@www ~]#

作业控制

把作业放入后台

前台作业:占据着一个终端,比如拷贝大文件时,终端看着它必须拷贝完才能干其他事情

后台作业:类似桌面系统的最小化,把一个进程放入后台,然后干其他的事情

在前台可以使用Ctrl+z把进程放入后台,但是它不算是桌面的最小化,Ctrl+z放入后台后作业就暂停了

另外,如果一个尚未启动的作业,我想让它一启动就放入后台作业可以在该作业启动的时候在后面加个&,即 COMMADN &

例如,cat &

[root@www ~]# cat &
[1] 5652

上面的前台作业和后台作业都是与当前会话(终端)有关的,当退出当前会话后作业也会终止,如果想退出当前会话后作业不被终止,可以在前面加个nohup,即 nohup COMMAND &

作业从后台调入前台

fg [[%]job_num]:将作业调回前台继续运行,%可以省略,fg后面的都可以省略,省略后默认调用带有+的作业

作业在后台继续运行

bg [[%]job_num]:作业在后台继续运行,%可以省略,bg后面的都可以省略,省略后默认调用带有+的作业

查看作业号

jobs可以查看作业号,+代表fg和bg默认调用的作业,入栈操作后进先出,-代表倒数第二个入栈的(+倒数第一个)

[root@www ~]# jobs
[1] Stopped cat
[2]- Stopped vim a.txt
[3]+ Stopped vi b.txt
[root@www ~]# fg
vi b.txt
[3]+ Stopped vi b.txt
[root@www ~]# fg 2
vim a.txt
[2]+ Stopped vim a.txt

终止作业

kill %# :终止(SIGTERM)第#个作业

[root@www ~]# jobs
[2]+ Stopped vim a.txt
[3]- Stopped vi b.txt
[root@www ~]# kill %2
[2]+ Stopped vim a.txt
[root@www ~]# kill %3
[2]- Stopped vim a.txt
[3]+ Stopped vi b.txt
[root@www ~]# fg
vim a.txt
Vim: 拦截到致命信号(deadly signal) TERM
Vim: 结束。
已终止
[root@www ~]# fg %3
vi b.txt
Vim: Caught deadly signal TERM
Vim: Finished.
已终止

pmap

查看进程的内存映像信息,常用pmap PID;它对应的文件是/proc/PID号/maps

[root@www ~]# pmap 1
1: /sbin/init
【内存中起始地址】【大小】【内存区域访问权限】【文件】
00188000 92K r-x-- /lib/libpthread-2.12.so
0019f000 4K r---- /lib/libpthread-2.12.so
001a0000 4K rw--- /lib/libpthread-2.12.so
001a1000 8K rw--- [ anon ]【匿名内存,不是该进程私有的】
00356000 96K r-x-- /lib/libnih.so.1.0.0
0036e000 4K r---- /lib/libnih.so.1.0.0
0036f000 4K rw--- /lib/libnih.so.1.0.0
003c9000 28K r-x-- /lib/librt-2.12.so
003d0000 4K r---- /lib/librt-2.12.so
003d1000 4K rw--- /lib/librt-2.12.so
006c3000 4K r-x-- [ anon ]
0071b000 1600K r-x-- /lib/libc-2.12.so
008ab000 8K r---- /lib/libc-2.12.so
....
....

推荐阅读
  • Linux学习笔记:psef、ps aux、kill9
    一、查看进程命令1.ps命令Linux中的ps命令是ProcessStatus的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Telnet的使用(Telnet远程连接Linux)
    一、环境描述:客户端:Win10操作系统 ... [详细]
  • Java程序员必会的40个Linux命令!
    你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • linux 循环 cpu使用率脚本,Linux Shell脚本监视CPU利用率,达到设置的CPU利用率时发送电子邮件...
    有很多开源监控工具可用于监控Linux系统性能,当系统达到给定的阈值限制时,它将发送电子邮件警报。它监视CPU利用率、内存利用率、交换利用率、磁盘空间利 ... [详细]
author-avatar
oupingsong108
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有