@qidiandasheng
2017-03-10T11:25:53.000000Z
字数 2140
阅读 2490
终端
相关信息的意义:
uid 用户号
pid 进程号
ppid 父进程号
size 内存大小, Kbytes字节.
vsize 总虚拟内存大小, bytes字节(包含code+data+stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单格式
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
当我们在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。
比如我使用wget
下载资源:
前台任务:
wget https://s3.amazonaws.com/edgytech/umongo-osx-all_1-6-2.zip
后台任务:
wget https://s3.amazonaws.com/edgytech/umongo-osx-all_1-6-2.zip &
但是任务运行在后台还是会把输出显示在当前终端上面,虽然可是加入其它任务,但是大量的输出也会影响你。所以我们可以把这些输出重定向到out.file
文件中:
wget https://s3.amazonaws.com/edgytech/umongo-osx-all_1-6-2.zip >out.file 2>&1 &
>out.file
表示任务输出重定向到的文件,2>&1
表示所有的标准输出和错误输出。
当有后台任务在运行时,可以使用jobs
来查看后台任务。
执行jobs
[1] + running wget url.zip
1表示job的编号,我们后面用jobnumber来表示,runing表示正在执行,最后就是执行任务的命令。
执行jobs -l
[1] + 16367 running wget url.zip
此命令相对于上面那个多输出了一个16367,也就是pid(进程id).
后台切换到前台 fg %jobnumber
使用jobs查看job的编号,然后执行
fg %jobnumber
,就能使后台任务切换到前台了。
前台切换到后台
首先使用
Ctrl+z
暂停任务,则此任务就会放入后台,并显示停止,输出如下:
[1] + suspended wget url.zip
使用
bg %jobnumber
,使任务继续在后台运行,输出如下:
[1] + 16786 continued wget url.zip
最后我们再用
jobs -l
,就能看到任务继续在后台运行了,输出如下:
[1] + 16786 running wget url.zip
jobs列出的是当前shell
环境中的后台任务,也就是说你打开一个新的终端界面输入jobs
是看不到之前那个终端里的后台任务的。只能回到之前的那个终端才能查看到。
但是新开一个终端使用ps
是能看到所有shell环境的进程的,可以使用kill pid
杀掉之前那个终端中运行在后台的任务。
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。