日期:2014-05-16  浏览次数:20729 次

Linux学习记录--工作管理与进程管理

工作管理与进程管理


始终不能明白进程的正确理解和定义。就说我自己的理解吧

进程是CPU调度的基本单位,对于unix like来说,当我们登录取得bash时,系统会根据用户的uid和gid分配给我们一个进程,在当前bash下,这个进程就是所有进程的父进程,当我们执行一些命令时,每个命令都由一个新的子进程来完成。


工作管理


在单一终端下,可以同时进行多项工作,如:一边复制数据,一边查询文件。每一项工作都由独立的子进程来完成,他们的父进程就是当前终端对应bash的那个进程。

 

对于终端来说分为前台和后台

前台:你可以控制于执行命令的那个环境(串行工作)

后台:可以自行运行的工作,无法使用ctrl+c终端它(并行工作)

 

如果所有的工作都由前台来做,那么必须等一个工作处理完成才能进行下一个工作,这样做效率很低,因此我们可以把一些不需要人工交互的工作放到后台,使多个工作可以共同执行

 

说明:前台和后台是针对同一个终端来说,tty1环境是无法管理tty2的

 

查看目前的后台工作状态(jobs)


语法: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 &

虽然这个工作在后台进行,但是输出信息还是会在前台输出的,因此可以应用数据流重定向将输出信息写到文件

 

将目前工作放到后台并暂停(ctrl+z)

[root@localhost tmp]# vim newfile.txt

=>按下 ctrl+z

[1]+ Stopped                 vimnewfile.txt

 

将后台工作拿到前台来处理(fg)

语法:fg %工作序号

            fg –

            fg +

 

将后台工作由停止变为运行(bg)

语法: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 &

后台任务管理(kill)


语法:kill –signal  %工作序号
Sighal:
1:重新读取一次参数的配置文件
2:代表有ctrl+c同样的操作
9:立刻强制删除一个工作
15.以正常方式终止工作

说明:unix like中的信号64个,比较复杂以后在整体学习

举例:
[root@localhost tmp]# jobs -l;kill -9 %1; jobs -l
[1]+  已杀死               tar -jcpP -f /tmp/etc1.tar.bz2 /etc

进程管理


进程的查看

静态进程查看(ps)



语法:

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