|NO.Z.00014|——————————|ManageMent|——|Linux&进程管理.V04|

一、进程管理
### --- 工作管理简介

### --- 后台管理有几个事项需要大家注意:
~~~     前台是指#当前可以操控和执行命令的这个操作环境,后台是指工作可以自行运行,
~~~     但是不能直接用 ctrl+c 来终止它,只能使用 fg/bg 来调用工作;
~~~     #当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作。
~~~     如 tty1 登录的终端是不能管理 tty2 终端中的工作的;
~~~     放入后台的命令必须可以持续运行一段时间,这样我们才能扑捉和操作这个工作。
~~~     如果把 ls命令放入后台执行,它很快就会执行完成,我们很难操作它。
~~~     放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,
~~~     而不能执行。比如 vi 命令放入后台只能暂停,而不能执行,因为 vi 需要前台输入信息。
~~~     top 命令也不能放入后台执行,而只能放入后台暂停,因为 top 命令需要和前台有交互。
~~~     #只有不需要用户接入的程序才可以放在后台运行。
 
### --- 如何把命令放入后
### --- 那么我们如何把命令放入后台呢?有两种方法,分别如下:
### --- 第一种方法是“命令 &”,把命令放入后台执行

~~~     第一种把命令放入后台的方法是在命令后面加入“空格&”,这种方法放入后台的命令,
~~~     在后台是执行状态。但是注意,放入后台执行的命令不能与前台有交互,
~~~     否则这个命令是不能在后台执的。

二、举个例子:

### --- 进程管理
~~~     [工作号] 进程号
~~~     find 命令放入后台执行,每个后台命令会分配一个工作号,命令既然可以执行,
~~~     就会有进程产生,所以也会有进程号。
~~~     这样的话,虽然 find 命令在执行,但是当前终端我还是可以进行其他命令操作的。
~~~     如果在终端上出现:证明后台这个任务已经完成了,当然命令如果有执行结果的话,也会显示到操作终端上。
~~~     [1]是这个命令的工作号,+号代表这个任务是最近一个被放入后台的工作。

[root@localhost ~]# find / -name install.log &
[1] 1920
[1]+ Done          find / -name install.log
 
### --- 第二种方法是在命令执行过程中按 ctrl+z 快捷键,命令在后台是暂停状态

~~~     使用这种方法放入后台的命令,就算是不和前台有交互,能在后台执行的命令,也是暂停状态,
~~~     ctrl+z 快捷键就是暂停的快捷键。举几个例子:
### --- 例 1:
~~~     提示命令被放入后台,工作号是 1,状态是暂停。而且虽然 top 命令没有结束,
~~~     也能取得控制台权限。

[root@localhost ~]# top
~~~     在 top 命令执行的过程中,按下 ctrl+z 快捷键
[1]+ Stopped            top
### --- 例 2:
~~~     压缩一下/etc/目录
~~~     tar: 从成员名中删除开头的“/”
~~~     tar: 从硬连接目标中删除开头的“/”
~~~     命令被放入后台,工作号是 2,状态是暂停。

[root@localhost ~]# tar -zcf etc.tar.gz /etc
^Z                                                              // 执行的过程中,按下 ctrl+z 快捷键
[2]+ Stopped        tar -zcf etc.tar.gz /etc
 
### --- 示例1
~~~     第一种:把执行命令放在后台

[root@server11 ~]# tar -zcf etc.tar.gz /etc/ &
[3] 16315
[root@server11 ~]# tar: Removing leading `/' from member names
[root@server11 ~]# jobs
[1]+  Running                    tar -zcf etc.tar.gz /etc/      // 状态是运行的;执行问后会显示Done停止状态。
~~~     第二种:把执行程序放在后台运行,但是状态是停止的
~~~     需要停止通过杀死进程干掉,或者通过手动命令恢复。

[root@server11 ~]# tar -zcf etc.tar.gz /etc/                    // ctrl+z放在后台
[root@server11 ~]# jobs
[1]+  Stopped                 tar -zcf etc.tar.gz /etc/         // 状态是停止的   
[root@server11 ~]# ps -aux 
root      16394  0.6  0.0 123544  1332 pts/1    T    23:00   0:00 tar -zcf etc.tar.gz /etc/
 
### --- 示例2
~~~     vim不管是你用&还是ctrl+z都是暂停状态

[root@server11 ~]# top &
[root@server11 ~]# jobs
[1]+  Stopped                 top
[root@server11 ~]# top                                          // ctrl+z放在后台
[root@server11 ~]# jobs
[5]+  Stopped                 top
 
~~~     vim放在后台都是停止状态

[root@server11 ~]# vim yanqi &
[root@server11 ~]# jobs
[6]+  Stopped                 vim yanqi
[root@server11 ~]# vim yanqi
[root@server11 ~]# jobs                                         // ctrl+z放在后台
[6]-  Stopped                 vim yanqi                         // 第一个数字是后台的工作号
[7]+  Stopped                 vim yanqi
 

一、后台命令管理:查看后台的工作
### --- 查看后台的工作
~~~     选项: 
~~~     -l:显示工作的 PID
~~~     查看放在后台程序的进程号

[root@localhost ~]# jobs [-l]
[root@server11 ~]# jobs -l
[3]  16394 Stopped                 tar -zcf etc.tar.gz /etc/
[4]  16596 Stopped (signal)        top
[5]  16621 Stopped (signal)        top
[6]- 16679 Stopped (tty output)    vim yanqi
[7]+ 16696 Stopped                 vim yanqi
二、将后台暂停的工作恢复到前台执行
### --- 将后台暂停的工作恢复到前台执行
~~~     参数:
~~~     %工作号:
~~~     %号可以省略,但是注意工作号和 PID 的区别

[root@localhost ~]# fg %工作号
#fg  %+(工作号)            
[root@server11 ~]# jobs -l
[3]  16394 Stopped                 tar -zcf etc.tar.gz /etc/
[root@server11 ~]# fg %3
tar -zcf etc.tar.gz /etc/
[root@server11 ~]# jobs -l
[5]  16621 Stopped (signal)        top
[root@server11 ~]#                                                  // 从后台放在前置执行的命令,所以没有输出
top - 23:14:33 up  7:03,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 127 total,   2 running, 122 sleeping,   3 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1865308 total,   904436 free,   206812 used,   754060 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1418712 avail Mem
 
三、把后台暂停的工作恢复到后台执行
### --- 把后台暂停的工作恢复到后台执行

[root@localhost ~]# bg %工作号                                     // 与前台交互命令是没有办法进行后台执行的执行的
[root@server11 ~]# tar -zcf etc.tar.gz /etc/                      // ctrl+z放在后台运行
[root@server11 ~]# jobs -l
[8]+ 17051 Stopped                 tar -zcf etc.tar.gz /etc/
[root@server11 ~]# bg %8                                          // 放在后台执行
[8]+ tar -zcf etc.tar.gz /etc/ &
[root@server11 ~]# jobs -l                                        // 已经查看不到后台执行的程序了 

四、后台命令脱离登录终端运行

### --- 后台命令脱离登录终端运行

~~~     我们已经知道把命令放入后台,只能在当前登录终端执行。
~~~     那如果我是远程管理的服务器,在远程终端中执行了后台命令,这时我退出登录,
~~~     这个后台命令还能继续执行吗?当然是不行的,这个后台命令会被终止。
~~~     但是我们确实需要在远程终端中执行某些后台命令,该如何执行呢?
~~~     #第一种方法是把需要后台执行的命令加入/etc/rc.local 文件,
~~~     让系统在启动时执行这个后台程序。
~~~     这种方法的问题是,服务器时不能随便重启的,万一有临时后台任务,就不能执行。
~~~     #第二种方法是使用系统定时任务,让系统在指定的时间执行某个后台命令。
~~~     这样放入后台的命令与终端无关,是不依赖登录终端的。
~~~     最后一种方法是使用 nohup 命令。
 
### --- nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确的在后台执行。
### --- n命令的格式如下:

[root@localhost ~]# nohup [命令] &
~~~     例如:
[root@localhost ~]# nohup find / -print > /root/file.log &
[3] 2349                                                            // 用 find 命令,打印/下所有文件。放入后台执行
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"
~~~     有提示信息
 
### --- n示例

[root@server11 ~]# nohup find / -print > /root/file.log &
[8] 17443
[root@server11 ~]# nohup: ignoring input and redirecting stderr to stdout
[root@server11 ~]# jobs -l
[1]  17443 Done                    nohup find / -print > /root/file.log

 

 

 

 

 

 

 

 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(20)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示