2017-10-13 22 views
0

我啓動多個進程,腳本是這樣的:保留超過1個PID,所以我可以殺進程後

#!/bin/bash 

./gradlew services:service1:bootRun > /dev/null & 

cd "./services/service2" 

../../gradlew bootRun > /dev/null & 

問題是我不知道如何停止這些服務沒有得到處理編號從lsof

我開始超過1個服務。

我想要的是一種簡單的方法,可以在以後不需要手動查找進程標識的情況下殺死這兩個進程。

我開始2個服務,這使得它更復雜。

+0

我已更新問題 – dagda1

+0

那麼,你不知道的是如何在bash中使用變量?或者如何殺死進程? –

+0

我不知道如何在不使用'lsof'之類的情況下輕鬆殺死進程。我希望腳本生成一個命令,我可以運行這些命令來停止進程(如果可能的話) – dagda1

回答

0

在shell中,您可以使用$!獲得後臺作業pid。

$ sleep 60 & 
[1] 23067 
$ pid=$! 
$ echo $pid 
23067 
$ ps p $pid u 
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root  23067 0.0 0.0 11436 684 pts/3 S 22:20 0:00 sleep 60 
$ 
+0

我已經更新了問題,我有超過1個pid – dagda1

+0

您可以創建一個函數來收集pid並將其存儲在一個數組中。每次執行命令時,都可以調用該函數。 i = 0 collectPid() { pid = $! pidArray [$ i] = $ pid i = \'expr $ i +1 \' } –

相關問題