我有一個腳本,看起來像這樣:開始在後臺過程中,做一個任務,然後殺死進程在後臺
pushd .
nohup java -jar test/selenium-server.jar > /dev/null 2>&1 &
cd web/code/protected/tests/
phpunit functional/
popd
服務器需要運行的測試的硒,但後phpunit命令完成我想殺死正在運行的硒服務器。
我該怎麼做?
我有一個腳本,看起來像這樣:開始在後臺過程中,做一個任務,然後殺死進程在後臺
pushd .
nohup java -jar test/selenium-server.jar > /dev/null 2>&1 &
cd web/code/protected/tests/
phpunit functional/
popd
服務器需要運行的測試的硒,但後phpunit命令完成我想殺死正在運行的硒服務器。
我該怎麼做?
當腳本excecuted一個新的shell實例被創建。這意味着新腳本中的jobs
不會列出在父shell中運行的任何作業。
由於selenium-server
服務器是在新的腳本創建它可以使用
#The first job
kill %1
或者
#The last job Same as the first one
kill %-
您可以將進程的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
我沒有測試過我自己,我希望把它寫在評論,但沒有足夠的聲譽還沒有:)
這確實有用! – ComputerLocus
只要你不啓動任何其他被殺死的唯一後臺進程在後臺進程 - 你不用 - 你可以使用$!直接:
pushd .
nohup java -jar test/selenium-server.jar > /dev/null 2>&1 &
cd web/code/protected/tests/
phpunit functional/
kill $!
popd
也許'kill%1'? – isalgueiro
@isalgueiro如果他們是在後臺運行的其他進程呢? – ComputerLocus
'%1'代表「第一個後臺作業」,你的腳本只發送一個進程到後臺http://www.tldp.org/LDP/abs/html/x9644.html – isalgueiro