2015-05-11 29 views
4

我有一個腳本,看起來像這樣:開始在後臺過程中,做一個任務,然後殺死進程在後臺

pushd . 
nohup java -jar test/selenium-server.jar > /dev/null 2>&1 & 
cd web/code/protected/tests/ 
phpunit functional/ 
popd 

服務器需要運行的測試的硒,但後phpunit命令完成我想殺死正在運行的硒服務器。

我該怎麼做?

+0

也許'kill%1'? – isalgueiro

+0

@isalgueiro如果他們是在後臺運行的其他進程呢? – ComputerLocus

+0

'%1'代表「第一個後臺作業」,你的腳本只發送一個進程到後臺http://www.tldp.org/LDP/abs/html/x9644.html – isalgueiro

回答

3

當腳本excecuted一個新的shell實例被創建。這意味着新腳本中的jobs不會列出在父shell中運行的任何作業。

由於selenium-server服務器是在新的腳本創建它可以使用

#The first job 
kill %1 

或者

#The last job Same as the first one 
kill %- 
10

您可以將進程的PID保存在一個變量中,然後使用kill命令殺死它。

pushd . 
nohup java -jar test/selenium-server.jar > /dev/null 2>&1 & 
serverPID=$! 
cd web/code/protected/tests/ 
phpunit functional/ 
kill $serverPID 
popd 

我沒有測試過我自己,我希望把它寫在評論,但沒有足夠的聲譽還沒有:)

+1

這確實有用! – ComputerLocus

0

只要你不啓動任何其他被殺死的唯一後臺進程在後臺進程 - 你不用 - 你可以使用$!直接:

pushd . 
nohup java -jar test/selenium-server.jar > /dev/null 2>&1 & 
cd web/code/protected/tests/ 
phpunit functional/ 
kill $! 
popd