常用shell指令_系统资源管理


1. ps

process status,ps命令用于显示当前进程的状态,是瞬时的。

1.1. 参数说明:

  • -a 显示所有终端机下执行的进程,除了阶段作业领导者之外。  
  • a 显示现行终端机下的所有进程,包括其他用户的进程。  
  • -A 显示所有进程。  
  • -c 显示CLS和PRI栏位。  
  • c 列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。  
  • -C<指令名称>  指定执行指令的名称,并列出该指令的进程的状况。  
  • -d  显示所有进程,但不包括阶段作业领导者的进程。  
  • -e  此参数的效果和指定"A"参数相同。  
  • e  列出进程时,显示每个进程所使用的环境变量。  
  • -f  显示UID,PPIP,C与STIME栏位。  
  • f  用ASCII字符显示树状结构,表达进程间的相互关系。  
  • -g<群组名称>  此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。  
  • g  显示现行终端机下的所有进程,包括群组领导者的进程。  
  • -G<群组识别码>  列出属于该群组的进程的状况,也可使用群组名称来指定。  
  • h  不显示标题列。  
  • -H  显示树状结构,表示进程间的相互关系。  
  • -j或j  采用工作控制的格式显示进程状况。  
  • -l或l  采用详细的格式来显示进程状况。  
  • L  列出栏位的相关信息。  
  • -m或m  显示所有的执行绪。  
  • n  以数字来表示USER和WCHAN栏位。  
  • -N  显示所有的进程,除了执行ps指令终端机下的进程之外。  
  • -p<进程识别码>  指定进程识别码,并列出该进程的状况。  
  • p<进程识别码>  此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。  
  • r  只列出现行终端机正在执行中的进程。  
  • -s<阶段作业>  指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。  
  • s  采用进程信号的格式显示进程状况。  
  • S  列出进程时,包括已中断的子进程资料。  
  • -t<终端机编号>  指定终端机编号,并列出属于该终端机的进程的状况。  
  • t<终端机编号>  此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。  
  • -T  显示现行终端机下的所有进程。  
  • -u<用户识别码>  此参数的效果和指定"-U"参数相同。  
  • u  以用户为主的格式来显示进程状况。  
  • -U<用户识别码>  列出属于该用户的进程的状况,也可使用用户名称来指定。  
  • U<用户名称>  列出属于该用户的进程的状况。  
  • v  采用虚拟内存的格式显示进程状况。  
  • -V或V  显示版本信息。  
  • -w或w  采用宽阔的格式来显示进程状况。   
  • x  显示所有进程,不以终端机来区分。  
  • X  采用旧式的Linux i386登陆格式显示进程状况。  
  • -y 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。

1.2. 常用例子:

ps -A # 
ps -ef # 带UID,PPIP,C与STIME
ps -aux # 以用户格式来显示所有进程,不以终端机为主
ps -axjf # 查看进程之前的管理
ps -u root # 显示root用户的所有进程

另外,ps一般都搭配grep使用,例如

ps -ef | grep PID
ps -aux | grep 'xxx' | grep -v 'grep' # grep 'xxx':查找xxx进程;grep -v 'grep':最后一定打印grep进程本身,所以要筛掉,另 ps 和 grep 指令的组合指令 pgrep

注:

linux在启动一个进程是,都会在 /proc 文件下创建一个 PID 的文件夹,所以可以使用 ll /proc/PID 查看某进程的更详细的内容,其中:

  • cwd,进程运行的目录
  • exe,执行程序的绝对路径
  • cmdline,程序运行时的指令
  • environ,运行时的环境变量
  • fd,进程打开或使用到的文件的软连接

2. jobs

可以显示当前终端正在运行的进程。

ps指令不同的是他只能显示当前终端的进程。脚本指令中运行的进程不会在jobs中显示。一般只用来看后台运行的进程。

一般配合kill, fg, bg, ctrl+z, &等组合使用。

jobs -l可以查看进程的pid、运行状态(running, stopped, terminated等)

2.1. 返回说明:

表示是一个当前的作业

-表示是一个当前作业之后的一个作业


3. top

top命令用于实时显示进程的动态。

3.1. 参数说明:

  • -d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • -q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • -c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S
  • -s : 安全模式,将交谈式指令取消, 避免潜在的危机
  • -i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
  • -n : 更新的次数,完成后将会退出 top
  • -b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

注:

上面参数均可以在进入top模式后再单独执行,例如 top -c 和输入 top 后再按 c 得到的结果是一样的

下面参数只能进入 top 界面后才能执行:

  • m:切换内存占用显示
  • t:切换cpu占用显示
  • M:以占用内存情况排序
  • P:以占用cpu情况排序
  • T:以运行时间排序
  • q:退出

3.2. 常用例子:

top -c # 显示完整录路径
top -n 2 # 更新2次后不再更新
top -d 3 # 更新周期为3s
top -p 139 # 只看139的进程

4. df

disk free,df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

4.1. 参数说明:

  • -a, --all 包含所有的具有 0 Blocks 的文件系统
  • --block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • -h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
  • -H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
  • -i, --inodes 列出 inode 资讯,不列出已使用 block
  • -k, --kilobytes 就像是 --block-size=1024
  • -l, --local 限制列出的文件结构
  • -m, --megabytes 就像 --block-size=1048576
  • --no-sync 取得资讯前不 sync (预设值)
  • -P, --portability 使用 POSIX 输出格式
  • --sync 在取得资讯前 sync
  • -t, --type=TYPE 限制列出文件系统的 TYPE
  • -T, --print-type 显示文件系统的形式
  • -x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
  • -v (忽略)

4.2. 常用例子:

df -h
df -i

5. lsof

list open files,是一个查看进程打开的文件的命令。

5.1. 参数说明:

  • -a 指示其它选项之间为与的关系
  • -c <进程名> 输出指定进程所打开的文件
  • -d <文件描述符> 列出占用该文件号的进程
  • +d <目录> 输出目录及目录下被打开的文件和目录(不递归)
  • +D <目录> 递归输出及目录下被打开的文件和目录
  • -i <条件> 输出符合条件与网络相关的文件
  • -n 不解析主机名
  • -p <进程号> 输出指定 PID 的进程所打开的文件
  • -P 不解析端口号
  • -t 只输出 PID
  • -u 输出指定用户打开的文件

5.2. 返回参数:

  • COMMAND:程序的名称
  • PID:进程标识符
  • USER:进程所有者
  • FD:文件描述符,应用程序通过文件描述符识别该文件
  • TYPE:文件类型,如 DIR、REG 等
  • DEVICE:以逗号分隔设备编号
  • SIZE:文件的大小(bytes)
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称

6. netstat

7. kill

kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。

7.1. 信号说明:

# 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

7.2. 常用例子:

常用的信号:

1 HUP (hang up)

2 INT (interrupt)

3 QUIT (quit)

6 ABRT (abort)

9 KILL (non-catchable, non-ignorable kill)

14 ALRM (alarm clock)

15 TERM (software termination signal)

18 CONT(continute)

19 STOP(stop)

kill %jobnum
kill pid

kill -s KILL 14444 # 终止pid为14444的进程,等价于 kill -9 14444
kill -s TERM 14444 # 终止pid为14444的进程,等价于 kill -15 14444,与kill信号不一样,term信号比较温和,会给进程一些时间终止其创建的线程和资源,是比较安全杀掉进程的手段
kill -s STOP 14444 # 暂停pid为14444的进程,等价于 kill -19 14444
kill -s CONT 14444 # 继续pid为14444的进程,等价于 kill -18 14444

kill -9 $(ps -ef | grep user1) # 终止所有user1的进程
kill -u user1 # 终止所有user1的进程

8. nohup

no hang up,nohup 命令忽略所有挂断(SIGHUP)信号,在终端关闭或注销后,进程也继续保持运行状态。

一般与&连用,表示不挂断放在后台运行。

8.1. 动作说明:

2>&1:表示将错误重定向到标准输出上

  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

8.2. 常用例子:

nohup sh xxx.sh &
nohup sh xxx.sh > out.txt 2>&1 & # 所有输出重定向到out.txt

有时候运行了 nohup 命令后,按下回车,后台任务会 stopped 或者 exit,这个时候需要加上反双引号将命令括起来

nohup `sh xxx.sh` &

9. fg

将后台中的命令调至前台继续运行

9.1. 常用例子:

fg %jobnum
fg pid

10. bg

将一个在后台暂停的命令,变成在后台继续执行。

Ctrl + z 命令不一样在于,两者都可以把前台执行的进程放到后台,但Ctrl + z还会使进程处于暂停状态。

10.1. 常用例子:

bg %jobnum
bg %pid

评论
  目录