题目:后台执行sleep 10和vi,分别使用jobs和ps命令查看作业和进程的详细信息,记录结果并说明它们之间的关系,暂停sleep并使用kill命令杀死vi,再次查看jobs和ps命令结果的变化。
先学习命令
1.名称:sleep
使用权限:所有使用者
使用方式:sleep [--help] [--version] number[smhd]
说明:sleep 可以用来将目前动作延迟一段时间
参数说明:
--help:显示辅助讯息
--version:显示版本编号
number:时间长度,后面可接 s,m,h 或 d
其中 s 为秒,m 为 分钟,h 为小时,d 为日数
例子:
显示目前时间后延迟 1 分钟,之后再次显示时间:
date;sleep 1m;date
2.名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
范例:
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........
现在来做题
1.在后台执行命令
sleep 10 &
vi &
注意要加&表示程序在后台运行,新开页面的话后面不会显示该进程
2.使用 jobs
查看作业
jobs
结果示例:
[1]+ 12345 Stopped vi
[2]- 12346 Running sleep 10 &
3.使用 ps
查看进程
ps
结果示例:
PID TTY TIME CMD
12345 pts/0 00:00:00 vi
12346 pts/0 00:00:00 sleep
结果说明
jobs
列出的是当前 shell 的作业,包括正在运行和已停止的作业。ps
列出的是当前用户的进程,包括所有在系统中运行的进程。
4.暂停 sleep
kill -STOP 12346
sleep到时间也会暂停
5.杀死 vi
kill 12345
再次查看进程可以看到
jobs
显示vi
进程被终止,而sleep
进程处于停止状态。ps
中仍然显示sleep
进程,但vi
已不再列出。