linux下&、 jobs、fg、bg、ctrl+z命令使用

本文通过以下代码a.php来说明这几个命令的使用方法

<?php
for($i=1;$i<50;$i++){
    sleep(1);
    echo $i.' ';
}

首先说明下&

&表示后台在后台执行

[tianle@localhost ~]$ php a.php &
[1] 3255
[tianle@localhost ~]

2>&1

我们经常会遇到这样的命令,2是标准错误,1是标准输出,0标准输入。这样的命令相当与把标准错误重定向到标准输出。可能还会疑惑&1的问题

其实我们更多遇到这样的命令是这样的

command>a 2>&1 &

这个命令等价与 command 1>a 2>&1 &

这个命令的意思可以分成三步解释:

1、command 1>a 将command产生的标准输出重定向到a文件中

2、2>&1 表示将错误信息也重定向到a文件

3、最后的&表示,命令在后台运行

ctrl+z

ctrl+c是强制中断任务的执行,使用ps查找不到中断的进程

ctrl+z是中断任务的执行,但是任务并没有被删除,相当于挂起,使用ps命令仍可看到该进程挂在后台,如果使用这个命令中断进程,最后要再执行kill -9 pid,来彻底删除进程

[tianle@localhost ~]$ php a.php 
1 2 3 4 5 ^Z
[1]+  Stopped                 php a.php
[tianle@localhost ~]$ ps -ef |grep php
root      2195     1  0 05:29 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache    2196  2195  0 05:29 ?        00:00:00 php-fpm: pool www            
apache    2197  2195  0 05:29 ?        00:00:00 php-fpm: pool www            
apache    2198  2195  0 05:29 ?        00:00:00 php-fpm: pool www            
apache    2199  2195  0 05:29 ?        00:00:00 php-fpm: pool www            
apache    2200  2195  0 05:29 ?        00:00:00 php-fpm: pool www            
tianle    3330  2899  0 06:27 pts/0    00:00:00 php a.php
tianle    3333  2899  0 06:27 pts/0    00:00:00 grep php
[tianle@localhost ~]$

jobs

jobs命令是显示正在后台运行的命令

[tianle@localhost ~]$ cp a.php b.php
[tianle@localhost ~]$ php a.php 
1 2 3 ^Z
[1]+  Stopped                 php a.php
[tianle@localhost ~]$ php b.php 
1 2 3 ^Z
[2]+  Stopped                 php b.php
[tianle@localhost ~]$ jobs
[1]-  Stopped                 php a.php
[2]+  Stopped                 php b.php
[tianle@localhost ~]$ 

fg

将后台运行的命令调至前台执行 使用方法 fg num,num是通过jobs查询出来的命令序列号

[tianle@localhost ~]$ jobs
[1]-  Stopped                 php a.php
[2]+  Stopped                 php b.php
[tianle@localhost ~]$ fg 1
php a.php
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [tianle@localhost ~]$

bg

将后台的命令在后台执行,使用方法bg num,num是通过jobs查询出来的命令序列号

[tianle@localhost ~]$ jobs
[2]+  Stopped                 php b.php
[tianle@localhost ~]$ bg 2
[2]+ php b.php &
[tianle@localhost ~]$

猜你喜欢

转载自blog.csdn.net/benben0729/article/details/81915433