翻看运营的历程  ps -aux|grep java

在Linux中,倘若要让进程在后台运营,一般情况下,大家在指令后边加上&就能够,实际上,这样是将下令放入到一个学业队列中了:

让Linux终端中试行的次第在后台运转

在Linux中,若是要让进度在后台运转,一般情形下,我们在命令后边加上&就可以,实际上,这样是将指令放入到三个作业队列中了:

  $ ./test.sh &

  [1] 17208

  $ jobs -l

  [澳门金沙国际,1]+ 17208 Running ./test.sh &

  对于曾经在前台施行的吩咐,也足以再一次放到后台实施,首先按ctrl+z暂停已经运行的长河,然后利用bg命令将告壹段落的作业放到后台运营:

  $ ./test.sh

  [1]+ Stopped ./test.sh

  $ bg %1

  [1]+ ./test.sh &

  $ jobs -l

  [1]+ 22794 Running ./test.sh &

linux将先后嵌入后台试行,让Linux终端中推行的先后在后台运维。  可是如上方到后台实行的经过,其父进度照旧脚下终端shell的历程,而只要父进程退出,则会发送hangup实信号给全体子进度,子进度收到hangup未来也会脱离。假如大家要在剥离shell的时候继续运转进程,则供给使用nohup忽略hangup能量信号,或然setsid将将父进程设为init进度(进度号为1)

  $ echo $$

  21734

  $ nohup ./test.sh &

  [1] 29016

  $ ps -ef | grep test

  515 29710 21734 0 11:47 pts/12 00:00:00 /bin/sh ./test.sh

  515 29713 21734 0 11:47 pts/12 00:00:00 grep test

  $ setsid ./test.sh &

  [1] 409

  $ ps -ef | grep test

  515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh

  515 413 21734 0 11:49 pts/12 00:00:00 grep test

  上边的试验示范了应用nohup/setsid加上&使过程在后台运维,同时不受当前shell退出的影响。那么对于曾经在后台运行的长河,该咋办吧?能够运用disown命令:

  $ ./test.sh &

  [1] 2539

  $ jobs -l

  [1]+ 2539 Running ./test.sh &

  $ disown -h %1

  $ ps -ef | grep test

  515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh

  515 2542 21734 0 11:52 pts/12 00:00:00 grep test

  此外还有一种艺术,固然将经过在2个subshell中实施,其实那和setsid异曲同工。方法异常粗略,将下令用括号()
括起来就可以:

  $ (。/test.sh &)

  $ ps -ef | grep test

  515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh

  515 12483 21734 0 11:59 pts/12 00:00:00 grep test

  注:本文试验情形为Red Hat Enterprise Linux AS release 四 (Nahant
Update
5),shell为/bin/bash,差异的OS和shell可能命令有些不等同。比如AIX的ksh,未有disown,不过足以动用nohup
-p PID来得到disown一样的机能。

  还有1种更抓牢大的艺术是接纳screen,首先制造多个断开方式的虚构终端,然后用-r选项重新连接那些编造终端,在内部施行的任何命令,都能落得nohup的效应,那在有三个指令需求在后台再而三进行的时候比较方便:

  $ screen -dmS screen_test

  $ screen -list

  There is a screen on:

  27963.screen_test (Detached)

  1 Socket in /tmp/uscreens/S-jiangfeng.

  $ screen -r screen_test

相关命令:

jobs————查看在后台执行的长河

fg
%n———-将后台试行进程n调到前台实践,n表示jobnumber(通过jobs查看的长河编号,而非pid)

ctrl+z———-将要前台实践的历程,放到后台并挂起

bg %n———就要后台挂起的进程,继续实践

ctrl+c———-前台进度终止

kill
%n———杀掉后台运转的进度,n表示jobnumber(通过jobs查看的经过编号,而非pid)

在Linux中,假诺要让进度在后台运转,一般景观下,大家在指令前面加上就可以,实际上,那样是将命令…

 

澳门金沙国际 1

  $ ./test.sh &

测试脚本test.sh:

找到要去除的长河的数码

  [1] 17208

 

杀掉进度  kill -9 188三(进度编号)

  $ jobs -l

i=1

重启服务 sh satrtBussinessService.sh

  [1]+ 17208 Running ./test.sh &

while :

 

  对于曾经在前台实践的吩咐,也足以重复放到后台试行,首先按ctrl+z暂停已经运维的经过,然后利用bg命令将终止的课业放到后台运行:

do

  $ ./test.sh

    echo $i

  [1]+ Stopped ./test.sh

    sleep 1

  $ bg %1

    ((i++))

  [1]+ ./test.sh &

done一、当在前台运营某些作业时,终端会被该学业占有,从而供给再开1个极端来开始展览任何的操作,为了防止那种不便于我们得以将作业放到后台试行,主要有三种办法

  $ jobs -l

 

  [1]+ 22794 Running ./test.sh &

1、&命令

  不过如上方到后台试行的历程,其父进度照旧脚下极端shell的长河,而只要父进度退出,则会发送hangup非随机信号给全体子进度,子进程收到hangup今后也会退出。要是咱们要在剥离shell的时候继续运行进度,则需求利用nohup忽略hangup时域信号,大概setsid将将父进程设为init进度(进度号为一)

 

  $ echo $$

sh test.sh &

  21734

 

  $ nohup ./test.sh &

该命令将脚本放到后台实行,不过正式输出依旧会来获得当下终端,影响用户操作,所以最佳是将出口重定向到别的文件

  [1] 29016

 

  $ ps -ef | grep test

sh test.sh &>/dev/null

  515 29710 21734 0 11:47 pts/12 00:00:00 /bin/sh ./test.sh

 

  515 29713 21734 0 11:47 pts/12 00:00:00 grep test

假若必要查阅输出结果,也能够定向到三个一定的文书中。

  $ setsid ./test.sh &

 

  [1] 409

二、通过ctrl+z;bg等壹层层的吩咐,将早已在前台运营的作业放到后台推行

  $ ps -ef | grep test

 

  515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh

假设三个作业已经在前台试行,能够经过ctrl+z将该学业放到后台并挂起。然后通过jobs命令查看在后台施行的作业并找到相应的学业ID,实施bg
%n(n为通过jobs查到的课业ID)唤醒该学业继续推行。

  515 413 21734 0 11:49 pts/12 00:00:00 grep test

 

  上面的考试示范了应用nohup/setsid加上&使进度在后台运转,同时不受当前shell退出的影响。那么对于已经在后台运转的历程,该如何是好吧?能够选择disown命令:

该方法也存在结果会输出到终点上的气象,一样能够用重定向的办法化解

  $ ./test.sh &

 

  [1] 2539

相关命令:

  $ jobs -l

 

  [1]+ 2539 Running ./test.sh &

jobs————查看在后台试行的进度

  $ disown -h %1

 

  $ ps -ef | grep test

fg
%n———-将后台实施进程n调到前台实施,n表示jobnumber(通过jobs查看的进程编号,而非pid)

  515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh

 

  515 2542 21734 0 11:52 pts/12 00:00:00 grep test

ctrl+z———-将要前台实行的长河,放到后台并挂起

  别的还有一种格局,纵然将经过在3个subshell中试行,其实那和setsid异曲同工。方法很简短,将下令用括号()
括起来就可以:

 

  $ (。/test.sh &)

bg %n———就要后台挂起的进度,继续推行

  $ ps -ef | grep test

 

  515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh

ctrl+c———-前台进度终止

  515 12483 21734 0 11:59 pts/12 00:00:00 grep test

 

  注:本文试验境况为Red
Hat Enterprise Linux AS
release 四 (Nahant Update
5),shell为/bin/bash,分化的OS和shell大概命令有个别不一致。比如AIX的ksh,未有disown,然而可以行使nohup
-p PID来博取disown同样的功效。

kill
%n———杀掉后台运维的进度,n表示jobnumber(通过jobs查看的经过编号,而非pid)

  还有一种更加强有力的章程是行使screen,首先成立多个断开格局的杜撰终端,然后用-r选项重新连接那一个虚拟终端,在中间进行的此外命令,都能达到规定的规范nohup的功力,这在有几个指令必要在后台连续实行的时候可比便利:

 

  $ screen -dmS screen_test

 

  $ screen -list

 

  There is a screen on:

2、当用户注销可能互联网中断时,终端后接到SIGHUP时域信号,从而关闭其全部子进度,以上三种艺术会趁着终端的关门而退出,如若大家供给作业在后台试行并不受终端退出的熏陶,能够用下边二种办法

  27963.screen_test (Detached)

 

  1 Socket in /tmp/uscreens/S-jiangfeng.

1、nohup命令

  $ screen -r screen_test

 

相关命令:

nohup sh test.sh &>/dev/null &

jobs————查看在后台实施的历程

 

fg
%n———-将后台实施进度n调到前台施行,n表示jobnumber(通过jobs查看的经过编号,而非pid)

nohup命令会忽略SIGHUP时限信号,从而终端退出时不会影响到后台作业

ctrl+z———-就要前台推行的进程,放到后台并挂起

 

bg %n———将在后台挂起的长河,继续实践

贰、将作业挂到新的对话上边

ctrl+c———-前台进度终止

 

kill
%n———杀掉后台运维的经过,n表示jobnumber(通过jobs查看的历程编号,而非pid)

(sh test.sh &>/dev/null &)可能将sh test.sh &>/dev/null
&放到另三个剧本中运作都能够兑现

澳门金沙国际 2

 

将&也放入()后,大家会意识所付出的作业并不在作业列表中,也正是说,是无法通过jobs来查看的,通过ps查看开掘新的功课的PPID是一而不是终点的PID,所以终端退出后不会影响大家的学业

 

 

 

三、别的screen命令也得以兑现相应的作用,并能化解程序须要人机交互的主题材料

 

 

 

正文出自 “Farmer-Hold” 博客

i=一 while : do echo $i sleep 一((i++))
done1、当在前台运营有个别作业时,终端会被该学业占有,从而供给再开贰个极限来进展其余…

相关文章