日期:2014-05-16 浏览次数:20813 次
始终不能明白进程的正确理解和定义。就说我自己的理解吧
进程是CPU调度的基本单位,对于unix like来说,当我们登录取得bash时,系统会根据用户的uid和gid分配给我们一个进程,在当前bash下,这个进程就是所有进程的父进程,当我们执行一些命令时,每个命令都由一个新的子进程来完成。
在单一终端下,可以同时进行多项工作,如:一边复制数据,一边查询文件。每一项工作都由独立的子进程来完成,他们的父进程就是当前终端对应bash的那个进程。
对于终端来说分为前台和后台
前台:你可以控制于执行命令的那个环境(串行工作)
后台:可以自行运行的工作,无法使用ctrl+c终端它(并行工作)
如果所有的工作都由前台来做,那么必须等一个工作处理完成才能进行下一个工作,这样做效率很低,因此我们可以把一些不需要人工交互的工作放到后台,使多个工作可以共同执行
说明:前台和后台是针对同一个终端来说,tty1环境是无法管理tty2的
语法:jobs[-lrs]
选项与参数:
-l:列出工作与命令串之外,同时列出PID
-r:仅列出后台run的工作
-s: 仅列出后台stop的工作
举例
[root@localhost tmp]# jobs -l [1]- 9154 停止 vim newfile.txt [2]+ 9368 停止 find / -print [3] 9374 Running tar -jcpP -f /tmp/etc1.tar.bz2 /etc &
以上输出的格式为:工作序号|顺序 PID 状态 命令
顺序:分为(+,-,空白),+号代表最后一个被放到后台的工作;-号代表倒数第二个被放到后台的工作,倒数第三个及以后用空白
[root@localhost tmp]# tar -jcpP -f/tmp/etc.tar.bz2 /etc &
[2] 8985
其中【2】表示工作号,8985表示处理这个工作的子进程号
如果我们将压缩信息显示出来
[root@localhost tmp]# tar –jcpP -v -f/tmp/etc.tar.bz2 /etc &
虽然这个工作在后台进行,但是输出信息还是会在前台输出的,因此可以应用数据流重定向将输出信息写到文件
[root@localhost tmp]# vim newfile.txt
=>按下 ctrl+z
[1]+ Stopped vimnewfile.txt
语法:fg %工作序号
fg –
fg +
语法:fg %工作序号
举例:
[root@localhost tmp]# jobs -l;bg %2;jobs -l [1]- 9154 停止 vim newfile.txt [2]+ 9729 停止 tar -jcpP -f /tmp/etc1.tar.bz2 /etc [2]+ tar -jcpP -f /tmp/etc1.tar.bz2 /etc & [1]+ 9154 停止 vim newfile.txt [2]- 9729 Running tar -jcpP -f /tmp/etc1.tar.bz2 /etc &
[root@localhost tmp]# jobs -l;kill -9 %1; jobs -l [1]+ 已杀死 tar -jcpP -f /tmp/etc1.tar.bz2 /etc
语法:
ps aux|ps -lA 查看系统所有进程数据
ps –l 查看自己相关进程
ps –axjf 查看进程树
举例:
[root@localhost ~]# su -l tkf [tkf@localhost tmp]$ tar -cjPp -f ./home.bz2 /home [1]+ Stopped tar -cjPp -f ./home.bz2 /home 查看ps -l [tkf@localh