&
[ctrl]-z
jobs
fg
bg
kill
nohup
pstree
ps
top
signal
kill
killall
nice
renice
free
uname
uptime
netstat
dmesg
vmstat
fuser
lsof
pidof
&
将命令放在后台运行
command &
此时将会产生1个任务编号与一个PID,命令执行完成后将会在前台出现提示
后台执行的任务如果存在信息输出,最好将其写入到文件,否则将会在前台显示,影响操作
[ctrl]-z
将命令放在后台暂停
此时将会产生1个任务编号及其命令
jobs
查看后台任务状态
[root@www ~]# jobs [-lrs]
选项与参数:
-l
:除了列出 job number 与命令串之外,同时列出 PID 的号码;
-r
:仅列出正在背景 run 的工作;
-s
:仅列出正在背景当中暂停 (stop) 的工作。
+
代表最近被放到背景的工作号码,-
代表最近最后第二个被放置到背景中的工作号码,其余没有符号
fg
将后台任务放到前台
[root@www ~]# fg %jobnumber
选项与参数:
%jobnumber
:jobnumber 为任务号码(数字),那个 % 是可有可无的!
bg
将后台暂停的任务变为运行中
[root@www ~]# bg %jobnumber
kill
移除任务
[root@www ~]# kill -signal %jobnumber
[root@www ~]# kill -l
选项与参数:
-l
:这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些
signal
:代表给予后面接的那个工作什么样的指示罗!用 man 7 signal 可知:
-1
:重新读取一次参数的配置档 (类似 reload);
-2
:代表与由键盘输入 [ctrl]-c 同样的动作;
-9
:立刻强制删除一个工作;
-15
:以正常的程序方式终止一项工作。与 -9 是不一样的。
nohup
离线任务
!特别说明
前面的几个命令中所谓的”背景”,都是指终端机背景(不会被ctrl+c中断),并非系统背景,一旦退出终端,任务立即终止。nohup
可以在退出终端后继续执行任务。
[root@www ~]# nohup
[命令与参数] <==在终端机前台中工作
[root@www ~]# nohup
[命令与参数] & <==在终端机后台中工作
pstree
显示进程树
[root@www ~]# pstree [-A|U] [-up]
选项与参数:
-A
:各程序树之间的连接以 ASCII 字节来连接;
-U
:各程序树之间的连接以万国码的字节来连接。在某些终端介面下可能会有错误;
-p
:并同时列出每个 process 的 PID;
-u
:并同时列出每个 process 的所属帐号名称。
ps
将某个时间点的程序运行情况撷取下来
[root@www ~]# ps aux
<==观察系统所有的程序数据
[root@www ~]# ps -lA
<==也是能够观察所有系统的数据
[root@www ~]# ps axjf
<==连同部分程序树状态
选项与参数:
-A
:所有的 process 均显示出来,与 -e 具有同样的效用;
-a
:不与 terminal 有关的所有 process ;
-u
:有效使用者 (effective user) 相关的 process ;
x
:通常与 a 这个参数一起使用,可列出较完整资讯。
输出格式规划:
l
:较长、较详细的将该 PID 的的资讯列出;
j
:工作的格式 (jobs format)
-f
:做一个更为完整的输出。
ps -l
仅观察自己的 bash 相关程序
F
:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
若为
4
表示此程序的权限为 root ;若为
1
则表示此子程序仅进行复制(fork)而没有实际运行(exec)。
S
:代表这个程序的状态 (STAT),主要的状态有:
R
(Running):该程序正在运行中;
S
(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
D
:不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>列印)
T
:停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
Z
(Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
UID/PID/PPID
:代表此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号码
C
:代表 CPU 使用率,单位为百分比
PRI/NI
:Priority/Nice 的缩写,代表此程序被 CPU 所运行的优先顺序,数值越小代表该程序越快被 CPU 运行
ADDR/SZ/WCHAN
:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示『 - 』 / SZ 代表此程序用掉多少内存 / WCHAN 表示目前程序是否运行中,同样的, 若为 - 表示正在运行中。
TTY
:登陆者的终端机位置,若为远程登陆则使用动态终端介面 (pts/n);
TIME
:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时间;
CMD
:就是 command 的缩写,造成此程序的触发程序之命令为何
ps aux
观察系统所有程序
USER
:该 process 属於那个使用者帐号的?
PID
:该 process 的程序识别码。
%CPU
:该 process 使用掉的 CPU 资源百分比;
%MEM
:该 process 所占用的实体内存百分比;
VSZ
:该 process 使用掉的虚拟内存量 (Kbytes)
RSS
:该 process 占用的固定的内存量 (Kbytes)
TTY
:该 process 是在那个终端机上面运行,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登陆者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT
:该程序目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)
START
:该 process 被触发启动的时间;
TIME
:该 process 实际使用 CPU 运行的时间。
COMMAND
:该程序的实际命令为何?
ps结果后接
<defunct>
表示为僵尸程序
top
动态观察程序的变化
[root@www ~]# top [-d 数字] | top [-bnp]
选项与参数:
-d
:后面可以接秒数,就是整个程序画面升级的秒数。默认是 5 秒;
-b
:以批量的方式运行 top ,还有更多的参数可以使用,通常会搭配数据流重导向来将批量的结果输出成为文件。
-n
:与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p
:指定某些个 PID 来进行观察监测。
在 top 运行过程当中可以使用的按键命令:
?
:显示在 top 当中可以输入的按键命令;
P
:以 CPU 的使用资源排序显示;
M
:以 Memory 的使用资源排序显示;
N
:以 PID 来排序喔!
T
:由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k
:给予某个 PID 一个讯号 (signal)
r
:给予某个 PID 重新制订一个 nice 值。
q
:离开 top 软件的按键。
echo $$
( 查看bash的pid)
signal
代号 | 名称 | 内容 |
---|---|---|
1 | SIGHUP | 启动被终止的程序,可让该 PID 重新读取配置,类似重新启动 |
2 | SIGINT | 相当於用键盘输入 [ctrl]-c 来中断一个程序 |
9 | SIGKILL | 强制中断一个程序,尚未完成的部分可能会有遗留物 |
15 | SIGTERM | 正常结束程序,如果该程序已经发生问题,signal将失效 |
17 | SIGSTOP | 相当於用键盘输入 [ctrl]-z 来暂停一个程序 |
kill
杀死进程
[root@www ~]# kill PID
!特别说明
:kill后面直接加数字表示杀死进程,这与上面的移除任务用法是不同的
killall
按程序启动命令杀死进程
[root@www ~]# ` killall [-iIe] [command name]`
选项与参数:
-i
:interactive 互动的意思,删除时,会出现提示
-e
:exact 准确的意思,后面接的 command name要与运行中程序的启动命令一致,但整个完整的命令不能超过 15 个字节(若程序启动时使用了参数,则程序名与后面接的参数作为整体)
-I
:命令名称(可能含参数)忽略大小写。
nice
指定nice值启动新程序
[root@www ~]# nice [-n 数字] command
选项与参数:
-n
:后面接一个数值,数值的范围 -20 ~ 19。
renice
重设指定程序的nice值
[root@www ~]# renice [number] PID
选项与参数:
PID
:某个程序的 ID
free
观察内存使用情况
[root@www ~]# free [-b|-k|-m|-g] [-t]
选项与参数:
默认单位为 Kbytes,可以使用 -b
(bytes),-m
(Mbytes),-k
(Kbytes),-g
(Gbytes) 来显示单位
-t
:显示实体内存与 swap 的总量。
uname
查看系统核心信息
[root@www ~]# uname [-asrmpi]
选项与参数:
-a
:所有系统相关的资讯,包括底下的数据都会被列出来;
-s
:系统核心名称
-r
:核心的版本
-m
:本系统的硬件名称,例如 i686 或 x86_64 等;
-p
:CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型!
-i
:硬件的平台 (ix86)
uptime
观察系统启动时间与工作负载
netstat
追踪网络与Socket
[root@www ~]# netstat -[atunlp]
选项与参数:
-a
:将目前系统上所有的连线、监听、Socket 数据都列出来
-t
:列出 tcp 网络封包的数据
-u
:列出 udp 网络封包的数据
-n
:不以程序的服务名称,以端口号 (port number) 来显示;
-l
:列出目前正在网络监听 (listen) 的服务;
-p
:列出该网络服务的程序 PID
网络参数
Proto
:网络的封包协议,主要分为 TCP 与 UDP 封包,相关数据请参考服务器篇;
Recv-Q
:非由使用者程序连结到此 socket 的复制的总 bytes 数;
Send-Q
:非由远程主机传送过来的 acknowledged 总 bytes 数;
Local Address
:本地端的 IP:port 情况
Foreign Address
:远程主机的 IP:port 情况
State
:连线状态,主要有创建(ESTABLISED)及监听(LISTEN);
本机程序
Proto
:一般就是 unix 啦;
RefCnt
:连接到此 socket 的程序数量;
Flags
:连线的旗标;
Type
:socket 存取的类型。主要有确认连线的 STREAM 与不需确认的 DGRAM 两种;
State
:若为 CONNECTED 表示多个程序之间已经连线创建。
Path
:连接到此 socket 的相关程序的路径!或者是相关数据输出的路径。
dmesg
查看核心产生的信息
vmstat
侦测系统资源变化
[root@www ~]# vmstat [-a] [间隔时间] [总次数]]
<==CPU/内存等资讯
[root@www ~]# ` vmstat [-fs]` <==内存相关
[root@www ~]# vmstat [-S 单位]
<==配置显示数据的单位
[root@www ~]# vmstat [-d]
<==与磁碟有关
[root@www ~]# vmstat [-p 分割槽]
<==与磁碟有关
选项与参数:
-a
:使用 inactive/active(活跃与否) 取代 buffer/cache 的内存输出资讯;
-f
:启动到目前为止,系统复制 (fork) 的程序数;
-s
:将一些事件 (启动至目前为止) 导致的内存变化情况列表说明;
-S
:后面可以接单位,让显示的数据有单位。例如 K/M 取代 bytes 的容量;
-d
:列出磁碟的读写总量统计表
-p
:后面列出分割槽,可显示该分割槽的读写总量统计表
内存栏位 (
procs
) 的项目分别为:
r
:等待运行中的程序数量;b
:不可被唤醒的程序数量。这两个项目越多,代表系统越忙碌 (因为系统太忙,所以很多程序就无法被运行或一直在等待而无法被唤醒之故)。
内存栏位 (
memory
) 项目分别为:
swpd
:虚拟内存被使用的容量;free
:未被使用的内存容量;buff
:用於缓冲内存;cache
:用於高速缓存。 这部份则与free
是相同的。
内存置换空间 (
swap
) 的项目分别为:
si
:由磁碟中将程序取出的量;so
:由於内存不足而将没用到的程序写入到磁碟的swap
的容量。 如果 si/so 的数值太大,表示内存内的数据常常得在磁碟与主内存之间传来传去,系统效能会很差!
磁碟读写 (
io
) 的项目分别为:
bi
:由磁碟写入的区块数量;bo
:写入到磁碟去的区块数量。如果这部份的值越高,代表系统的 I/O 非常忙碌!
系统 (
system
) 的项目分别为:
in
:每秒被中断的程序次数;cs
:每秒钟进行的事件切换次数;这两个数值越大,代表系统与周边设备的沟通非常频繁! 这些周边设备当然包括磁碟、网络卡、时间钟等。
CPU
的项目分别为:
us
:非核心层的 CPU 使用状态;sy
:核心层所使用的 CPU 状态;id
:闲置的状态;wa
:等待 I/O 所耗费的 CPU 状态;st
:被虚拟机器 (virtual machine) 所盗用的 CPU 使用状态 (2.6.11 以后才支持)。
fuser
查看使用指定的文件或文件系统的进程
[root@www ~]# fuser [-umv] [-k [i] [-signal]]
file/dir
选项与参数:
-u
:除了程序的 PID 之外,同时列出该程序的拥有者;
-m
:后面接的那个档名会主动的上提到该文件系统的最顶层,对 umount 不成功很有效!
-v
:可以列出每个文件与程序还有命令的完整相关性!
-k
:找出使用该文件/目录的 PID ,并试图以 SIGKILL 这个讯号给予该 PID;
-i
:必须与 -k 配合,在删除 PID 之前会先询问使用者意愿!
-signal
:例如 -1 -15 等等,若不加的话,默认是 SIGKILL (-9) 罗!
权限:
c
:此程序在当前的目录下(非次目录);
e
:可被触发为运行状态;
f
:是一个被开启的文件;
r
:代表顶层目录 (root directory);
F
:该文件被开启了,不过在等待回应中;
m
:可能为分享的动态函式库;
lsof
列出由程序开启的文件
[root@www ~]# lsof [-aUu] [+d]
选项与参数:
-a
:多项数据需要『同时成立』才显示出结果时!(内连接?
)
-U
:仅列出 Unix like 系统的 socket 文件类型;
-u
:后面接 username,列出该使用者相关程序所开启的文件;
+d
:后面接目录,即找出某个目录底下已经被开启的文件!
pidof
找出某个正在的运行程序的pid
[root@www ~]# pidof [-sx] program_name...
选项与参数:
-s
:仅列出一个 PID 而不列出所有的 PID
-x
:同时列出该 program name 可能的 PPID 那个程序的 PID