在这里,对作业和进程的概念就不多说了,我直接说他们的联系和区别。
一:联系。
- 一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
-
用户提交作业以后,当作业被调度,系统会为作业创建进程,一个进程无法完成时,系统会为这个进程创建子进程。
二:区别。
进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。
[ ]中的数字是作业号,在用kill杀死作业的时候用kill %[ num]
pid 是进程号,在用kill杀死进程的时候可以直接用kill -pid。
三:实例。
feilongiandeAir:笔记 mac126$ jobs
[1]- Stopped top
[2]+ Stopped top
feilongiandeAir:笔记 mac126$ ps
PID TTY TIME CMD
1701 ttys000 0:00.06 -bash
一般的后台作业管理操作是:
1)jobs命令列出所有后台作业
2)Ctrl+Z来挂起当前作业(stopped)
3)bg %JOBID运行程序在后台运行(running)
4)fg %JOBID(或者简单的用%JOBID)让后台程序到前台来运行
5)kill %JOBID杀死一个后台程序,%%代表最近的作业,%-代表次最近的作业。。
6)在后台作业输出前暂停它们
stty tostop让后台作业在启动输出之前挂起。。
CMD &
jobs查看后台作业是否stopped,若是,已准备好输出,running表示没有
fg %JOBID将该job放到前台输出。。。
kill一个作业
kill PID,如果某些不合作,你可以用kill -9 PID,这会保证你能杀死PID,但是也是比较危险的,所以一定要检查两遍以上的PID号,以免“错杀好人”,一失足成千古恨!
用ps查找PID
你可以使用ps -ef或者ps aux,这要看你的系统支持哪个。。当然你可以用grep在众多的输出选在或者删除(grep -v)你所要的。。。