Linux
螢幕命令程序ID
首先抱歉我的英語不好,我是 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