Linux

螢幕命令程序ID

  • November 22, 2014

首先抱歉我的英語不好,我是 linux 的新手。

當我這樣做時,它可以將程序 ID 寫入 pid 文件

start () {
   echo -n "Starting someserver.jar: "

   java -jar /home/someserver/someserver.jar &
   echo $! > /home/hcserver/hcserver.pid
}

並且知道我正在使用此命令,但它無法寫入 pid 文件

start () {
   echo -n "Starting someserver.jar: "

   screen -S someserver java -jar /home/someserver/someserver.jar
   echo $! > /home/someserver/someserver.pid
}

我怎樣才能獲得程序ID或解決這個問題?

編輯:

root@server:/home/someserver# ps -ef | grep java
root      4332     1  0 22:03 ?         SCREEN -S someserver java -jar /home/someserver/someserver.jar
root      4333  4332  0 22:03 pts/0     java -jar /home/someserver/someserver.jar
root      4363  3222  0 22:04 pts/3     grep java

我想將4333程序 ID 寫入 pid 文件

不是 100% 確定我理解你的問題,但讓我們試試:

美元!可以從父外殼工作,而不是從子程序內部

美元!用於後台程序,screen 不完全是後台程序

screen -S 也不會分離螢幕,您可能需要更多螢幕選項,您可能想要類似的東西

screen -dmS

也可以從螢幕內部嘗試 $$ 和 $BASHPID

你可以使用找到螢幕的pid

screen -list | grep someserver | cut -f1 -d'.' | sed 's/\W//g'

殺死螢幕的 pid 也應該殺死螢幕內正在執行的任何東西

如果您確定分離螢幕的 pid 不足以讓您嘗試使用 pgrep 獲取 java 內容的 pid

引用自:https://serverfault.com/questions/646364