linux常用进程及作业管理常用命令
来源:互联网 发布:mac网络恢复 最新 编辑:程序博客网 时间:2024/05/22 04:35
0 目录
- 目录
- 进程查询命令
- 1 命令ps
- 2 命令top
- 3 命令htop
- 4 命令glances
- 5 命令vmstat
- 6 命令dstat
- 使用信号管理进程
- 1 命令kill
- 2 命令killall
- 作业管理
- 1 命令jobs
- 2 命令fg
- 3 命令bg
1 进程查询命令
1.1 命令ps
命令ps,用于显示当前时刻(非动态显示,类似于快照)所有进程状态
格式:ps [options]
它的选项有3种风格,unix风格的选项必须加“-”;BSD风格的不能加“-”;长选项为“–”。
常用选项:
查询结果各字段2:
直接查看效果:
[root@localhost ~]% ps PID TTY TIME CMD 2770 pts/1 00:00:00 bash 2976 pts/1 00:00:00 ps
使用常用选项组合的效果:
[root@localhost ~]% ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 19352 1548 ? Ss 16:07 0:02 /sbin/initroot 2 0.0 0.0 0 0 ? S 16:07 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 16:07 0:00 [migration/0]root 4 0.0 0.0 0 0 ? S 16:07 0:00 [ksoftirqd/0]……root 2138 0.0 0.0 4064 540 tty2 Ss+ 16:08 0:00 /sbin/mingetty /dev/tty2root 2140 0.0 0.0 4064 540 tty3 Ss+ 16:08 0:00 /sbin/mingetty /dev/tty3root 2142 0.0 0.0 4064 544 tty4 Ss+ 16:08 0:00 /sbin/mingetty /dev/tty4……# 可看到与终端无关的进程TTY字段为“?”# COMMAND字段带中括号的表示是内核发起的线程
[root@localhost ~]% ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 16:07 ? 00:00:02 /sbin/initroot 2 0 0 16:07 ? 00:00:00 [kthreadd]root 3 2 0 16:07 ? 00:00:00 [migration/0]……
[root@localhost ~]% ps -eFH……
[root@localhost ~]% ps -eo pid,ni,priority,comm | head -5 PID NI PRI COMMAND 1 0 20 init 2 0 20 kthreadd 3 - -100 migration/0 4 0 20 ksoftirqd/0[root@localhost ~]% ps axo pid,ni,priority,comm | head -5 PID NI PRI COMMAND 1 0 20 init 2 0 20 kthreadd 3 - -100 migration/0 4 0 20 ksoftirqd/0# 使用“o”或“-o”选项指定显示的字段,如pid、nice值、优先级、发起进程的命令。限于篇幅仅显示前5行
1.2 命令top
命令top,用于动态地查看当前系统上的进程信息(类似windows任务管理器)。
查看效果:
top - 10:47:23 up 30 min, 1 user, load average: 0.06, 0.03, 0.05Tasks: 134 total, 1 running, 133 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1012080k total, 351680k used, 660400k free, 31760k buffersSwap: 2031612k total, 0k used, 2031612k free, 120852k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2519 root 20 0 15032 1244 936 R 0.3 0.1 0:00.10 top 1 root 20 0 19352 1540 1228 S 0.0 0.2 0:02.00 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 ……
首部内容意义(按位置对应):
当前时间及终端运行时长 登陆至当前系统的用户数 平均负载(load average) 进程总数 处于运行状态的进程数 处于睡眠状态的进程数 处于停止状态的进程数 处于僵尸状态的运行数 用户(user)进程的CPU占用时间比例 内核进程的CPU占用时间比例 用于调整nice值的CPU占用时间比例 空闲(idle)时间比例 等待I/O完成所站CPU时间比例 处理硬中断(hardware interrupt)所占CPU时间比例 处理软中断所占CPU时间比例 虚拟化程序所占CPU时间比例(被视为“偷走”stolen的时间) 内存总大小 内存已用大小 内存空闲大小 内存缓冲区大小 交换内存总大小 交换内存已用大小 交换内存空闲大小 交换内存缓存大小其中第1行的“平均负载”表示过去1、5、15分钟的平均等待CPU运行的进程队列长度。
首部下方各字段意义见上述表格
显示内容是交互式的,用户可通过快捷键调整、操作显示结果。常用快捷键:
常用选项:
选项很简单,不再示例。
1.3 命令htop
命令htop,升级版top,界面更美观、功能更强大。在光盘上没有,需在epel源下载安装。
效果:
可使用方向键控制光标选择任意进程,也支持鼠标点击。
这里是默认显示的相关信息,比较常用。其他字段可使用“F2”设置添加与否,且显示格式、颜色也均可调整。很简单,不再列出。
默认显示的内容意义(按位置对应):
CPU占用率;内存占用比例;交换内存占用比例。不同颜色代表不同意义,可使用“F1”查看 总进程数、线程数、处于运行状态进程数;平均负载(意义同top);终端运行时长 各进程相关信息 各控制快捷键,尤其注意“F1”帮助指令使用“F1”获取各快捷键:
快捷键在上述帮助页面均有解释,常用的有(大部分和top相同):
1.4 命令glances
命令glances,同样用于进程监控。在epel源下载安装。
效果:
除了进程信息它还显示了网卡、磁盘、挂载等信息。各字段意义与上述命令结果相同。
快捷键等信息使用帮助“h”查看即可,用法和上述命令差不多,个别不一样,不赘述。
它有两比较好玩的选项,可以把显示结果另存为html(或CSV)格式的文件,然后用浏览器访问。
选项-o、-f示例:
[root@localhost ~]% glances -f ./glances -o html # 指定保存目录为当前目录下的glances[root@localhost ~]% firefox ./glances/glances.html # 它会在指定目录下自动创建glances.html文件,而后就可使用浏览器查看了……
C/S模式示例:
在一主机上执行:
[root@localhost ~]% glances -s -B 192.168.0.131 # 该主机的一个IP为192.168.0.131Glances server is running on 192.168.0.131:61209……
另一主机作为客户端连接(如果是新安装的虚拟机注意看下防火墙):
[root@localhost ~]% glances -c 192.168.0.131 # 访问这个地址,客户端就可远程查看192.168.0.131这台主机上的glances信息了……
1.5 命令vmstat
命令vmstat,man文档说明是用于显示虚拟内存数据,实际也显示了进程等信息。
效果:
[root@localhost ~]% 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 383068 54156 224836 0 0 11 1 14 15 0 0 100 0 0 [root@localhost ~]% vmstat 1 # 可指定刷新时间(秒)一直显示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 383052 54156 224836 0 0 11 1 14 15 0 0 100 0 0 0 0 0 383020 54156 224836 0 0 0 0 25 21 0 0 100 0 0 0 0 0 383004 54156 224836 0 0 0 0 27 26 0 0 100 0 0……
显示内容分6类:
procs,进程信息 r,等待CPU运行的任务队列长度(实时显示) b,处于不可中断睡眠状态的进程个数 memory,内存信息 依次为交换内存、空闲、缓冲、缓存大小 swap,交换内存信息 si,swap in,数据进入swap中的平均速率(单位kB) so,swap out,数据离开swap中的平均速率(单位kB) io,块设备io信息 bi,block in,从块设备读入数据至内存的平均速率(单位kB) bo,block out,保存数据至块设备的平均速率(单位kB) system,系统级别信息 in,interrupt,每秒中断的次数 cs,context switch,上下文切换速率(进程调度速率) cpu信息 相关字段上面已说明,不再赘述此外选项“-s”可显示内存的各项统计信息。
[root@localhost ~]% vmstat -s 1012080 total memory 629524 used memory 228284 active memory ……
1.6 命令dstat
命令dstat,包含上述所有命令的功能,非常强大
效果:
[root@localhost ~]% dstat----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 99 0 0 0| 61k 4886B| 0 0 | 0 0 | 41 33 0 0 100 0 0 0| 0 0 | 60B 838B| 0 0 | 36 17 0 0 100 0 0 0| 0 0 |1252B 358B| 0 0 | 34 16……
直接使用该命令,相当于默认使用了选项“-cdngy”。各字段意义不再赘述。
它拥有众多选项满足各查询,下面列出一部分:
也可分批次显示,指定每批时间间隔(delay)和批次数即可(count)。
2 使用信号管理进程
2.1 命令kill
命令kill,用于向指定进程发送指定信号。
选项“-l”用于查看当前所能发送的所有信号:
[root@localhost ~]% kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX
常用信号:
向指定进程发送信号,引用信号可用信号完整名称、信号简写(完整名称去掉前面的SIG)、信号编号。
比如,在另一终端执行“ping 127.0.0.1”,在当前终端使用信号中止该进程:
[root@localhost ~]% ps aux | grep ping # 查看其进程号root 2458 0.1 0.0 103256 732 pts/1 S+ 16:45 0:00 ping 127.0.0.1[root@localhost ~]% kill -s 2 2458 # 向该进程发送2号信号[root@localhost ~]% kill -s sigint 2458 # 使用完整名称也一样,可不区分大小写[root@localhost ~]% kill -s int 2458 # 使用简称也一样[root@localhost ~]% kill -2 2458 # 也可省略“-s”,直接“-信号”
此外,命令kill也可向后台作业发送信号
2.2 命令killall
命令killall,用于根据指定名称,向相关进程发送信号。
比如httpd启动时,会发起多个进程。若使用命令kill向其发送信号,需逐个发送。
使用命令killall并指定参数为httpd,则会向由httpd启动的所有进程发送信号:
[root@localhost ~]% ps aux | grep httpdroot 2569 0.0 0.3 183912 3856 ? Ss 16:59 0:00 /usr/sbin/httpdapache 2572 0.0 0.2 183912 2500 ? S 16:59 0:00 /usr/sbin/httpdapache 2573 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdapache 2574 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdapache 2575 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdapache 2576 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdapache 2577 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdapache 2578 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdapache 2579 0.0 0.2 183912 2484 ? S 16:59 0:00 /usr/sbin/httpdroot 2629 0.0 0.0 103320 844 pts/0 S+ 17:00 0:00 grep httpd[root@localhost ~]% killall -s 2 httpd[root@localhost ~]% ps aux | grep httpd | grep -v grep # 上面显示的httpd的所有进程均被关闭[root@localhost ~]%
由此,关闭一个服务(通常含多个进程),通常使用命令killall。
3 作业管理
一个或多个进程都可看作一个作业。作业分为:前台(foreground)作业、后台(background)作业。
前台作业为一直占据终端的作业;后台作业为转入后台运行的作业。
后台作业主要是为了释放当前终端,用户可同时运行多个作业(进程)在后台,这样就不会影响用户使用终端操作前台作业(进程)。
上述已说明,19号信号(快捷键“ctrl z”)可把当前进程送入后台(进程状态变为停止);对于尚未启动的作业,只需在命令后加上“&”即可使其启动后就运行在后台。
3.1 命令jobs
命令jobs,用于查看作业。
效果:
[root@localhost ~]% ping 127.0.0.1 # ping命令PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.056 ms64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.056 ms^Z # 使用“ctrl z”送入后台[1]+ Stopped ping 127.0.0.1 [root@localhost ~]% jobs[1]+ Stopped ping 127.0.0.1 # 可看到ping变为后台作业,状态变为停止
再来一个,送入后台:
[root@localhost ~]% ping 192.168.0.131PING 192.168.0.131 (192.168.0.131) 56(84) bytes of data.64 bytes from 192.168.0.131: icmp_seq=1 ttl=64 time=0.078 ms64 bytes from 192.168.0.131: icmp_seq=2 ttl=64 time=0.057 ms64 bytes from 192.168.0.131: icmp_seq=3 ttl=64 time=0.057 ms^Z[2]+ Stopped ping 192.168.0.131[root@localhost ~]% jobs # 可看到目前有2个作业在后台[1]- Stopped ping 127.0.0.1[2]+ Stopped ping 192.168.0.131
jobs内容各字段意义依次为:
jobs常用选项:
[root@localhost ~]% jobs -l # 优先级后的字段为进程号[1]- 3199 Stopped ping 127.0.0.1[2]+ 3210 Stopped ping 192.168.0.131
3.2 命令fg
命令fg,用于把后台作业调回到前台运行。
效果:
[root@localhost ~]% jobs -l[1]- 3199 Stopped ping 127.0.0.1[2]+ 3210 Stopped ping 192.168.0.131[root@localhost ~]% fg 1 # 把1号作业调回前台运行ping 127.0.0.164 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.172 ms64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.055 ms……
3.3 命令bg
命令bg,用于让处于后台的、停止状态的进程,在后台继续运行。
容易想到,这个作业必须是无需与用户交互的,否则就算在后台运行也无意义(比如vim在后台运行没有意义,虽然有时因为需要可把vim放在后台,但使用时当然还是要调回前台的)。
效果:
[root@localhost ~]% jobs -l [2]- 3210 Stopped ping 192.168.0.131[3]+ 3256 Stopped ping 127.0.0.1[root@localhost ~]% bg # 不指定作业号,默认就是最高优先级的作业 [3]+ ping 127.0.0.1 &64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.218 ms # 该作业运行了,输出内容到屏幕[root@localhost ~]% 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.055 ms64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.055 ms……
从上述可以看出另一个问题,就是后台作业被唤醒在后台继续运行时,输出内容还是会到屏幕上,影响终端正常使用。
所以,如果期望后台运行某作业,最好把它的输出内容重定向至某文件或/dev/null。
所以命令就要变成:
[root@localhost ~]% ping 127.0.0.1 > /dev/null &[1] 3370[root@localhost ~]% ping 192.168.0.131 > /dev/null &[2] 3373[root@localhost ~]% jobs -l # 可看到它们在后台处于运行状态,且没有输出信息至屏幕[1]- 3370 Running ping 127.0.0.1 > /dev/null &[2]+ 3373 Running ping 192.168.0.131 > /dev/null &
命令kill也可向作业发送信号,对于作业号只需在前加上“%”即可(否则会被认为是进程号)。
上面提到,18号信号也可令后台停止状态的作业继续运行:
[root@localhost ~]% ping 127.0.0.1 > /dev/null^Z[1]+ Stopped ping 127.0.0.1 > /dev/null[root@localhost ~]% jobs -l # 后台作业处于停止状态[1]+ 3409 Stopped ping 127.0.0.1 > /dev/null[root@localhost ~]% kill -s 18 %1 # 使用18号信号令其运行[root@localhost ~]% jobs -l[1]+ 3409 Running ping 127.0.0.1 > /dev/null &
默认信号仍是15号,作用是终止:
[root@localhost ~]% jobs -l[1]+ 3409 Running ping 127.0.0.1 > /dev/null &[root@localhost ~]% kill %1[root@localhost ~]% jobs -l[root@localhost ~]%
(完)
- 进程与终端相关,若终端关闭,则进程也会关闭;无关则没有影响。 ↩
- 这里列出的是默认显示的各字段。下面所要说明的很多进程查询命令,它们的默认显示的字段也包含于此表中,所以写在一起了,只是不同命令可能使用的符号不同。
用于进程查询的各命令有很多字段默认没有被显示,如用户关心需额外显示的,需使用对应命令的选项手动指定(比如ps命令的“o”选项等)。众多默认没有显示的字段具体为何可使用man文档查看,有的也不常用,这里不再列出。 ↩ - 内存资源不足时会使用交换内存,但进程的某些关键数据不能移至交换内存,需要常驻在内存中。 ↩
- 可使用man查看,常见各进程状态对应的符号:~X23X ↩
- linux常用进程及作业管理常用命令
- 常用Linux进程及作业管理命令
- 常用Linux进程及作业管理命令
- Linux进程及作业管理
- Linux进程管理及作业控制
- 详解Linux进程及作业管理
- 进程及作业管理
- Linux进程管理常用命令
- 进程管理及作业控制
- Linux作业与进程管理
- Linux进程与作业管理
- Linux作业进程任务管理
- Linux常用命令_进程管理
- linux系统进程管理常用命令
- 常用linux进程管理
- linux中的作业管理与进程管理
- Linux的进程管理和作业控制
- Linux进程管理与作业控制
- SPI子系统
- Boa中关于StaticText的一个坑
- ros_indigo_arduino
- SPI驱动程序设计
- C++学习-拷贝构造函数
- linux常用进程及作业管理常用命令
- USB总线介绍
- USB协议分析
- hibernate 第一记<hibernate详解及配置信息 使用步骤>
- 基于javascript的机器智能框架:deeplearn.js
- linux-usb软件系统架构
- USB驱动程序设计
- IDEA Tomcat Debug启动非常慢
- 初识sed和gwak