gnu screen:尋找哪個螢幕視窗有給定的正在運行的進程或變數?

gnu screen:尋找哪個螢幕視窗有給定的正在運行的進程或變數?

我想找出我的大約 50 個 gnu 螢幕視窗中的哪個進程運行著其中定義的特定變數。例如,大約一周前,我這樣做了:

id=ABC123456; ~/run_long_process $id

它在我的 ~50 個 gnu 螢幕視窗之一中運行,並且產生大量 STDOUT/STDERR,但是,除了向後滾動每個視窗或 Ctrl+Z 並恢復每個視窗之外,有沒有辦法找出哪個視窗是一個嗎?有什麼建議麼?

答案1

如果這是 Linux,您可以遵循類似這樣的過程。作為“長時間運行的進程”的範例,我將使用“perl -e sleep”,它將永遠休眠:

$ id=ABC123456; perl -e sleep $id

現在,我們需要找到正在運行的進程:

$ ps -Af | grep [A]BC123456
user  30579 22013  0 09:32 pts/10   00:00:00 perl -e sleep ABC123456
#           ^^^^^ parent PID

現在我們有了父進程的 PID,我們可以窺探它的環境,並在其中screen設定一個WINDOW變數:

$ tr '\0' '\n' < /proc/22013/environ | grep WINDOW
WINDOW=3

哪個是對的。我在螢幕視窗 3 中運行了它exec()。 。

相關內容