2009-05-25 29 views
1

我覺得這有點愚蠢,但是我對Linux比較陌生(在經驗方面比在時間方面更多),而我一直想知道的一件事是如果我可以'重新加入'(我自己的術語)過程而它正在運行。例如,如果我將遊戲服務器或eggdrop IRC bot設置爲在後臺運行,是否有一條命令可以用來查看執行過程並查看它傳遞給控制檯的所有輸出?Linux - 與進程通信?重新加入流程?

我不是在討論使用'top'命令查看進程,而是實際鏈接到它,就好像我剛剛從命令行運行一樣。

謝謝。

回答

2

你能更具體?你只是在談論當前會話中的後臺進程,然後將其放回前臺。

例如爲:

doLongTask & 

# Later 

fg %3 

在這個例子中3 doLongTask該實例的作業號。您可以看到所有正在運行的作業:

jobs 

但請注意,這仍然只會讓您看到輸出到控制檯的內容。 I.E. stdout和stderr,減去任何重定向。

2

簡單的答案是:

>> ./runmyserver 
<press ctrl-z> 
>> bg 
>> ...do something else ... 
>> fg 

你也可以開始在背景:

>> ./runmyserver & 

對於更復雜的東西,像您的控制檯會話斷開服務器(所以它仍然在運行時你註銷)你真的想要屏幕。也許乞求他們,這不是一個真正的安全風險,它是一個有用的程序。

另請注意,ctrl-z將實際上暫停您的服務器,直到bg,所以如果人們在玩它可能會跳過一拍,最好快速完成。

最後,許多遊戲服務器都有遠程登錄這種東西,可以解決這些問題。在尋找替代品之前,確保您的遊戲和主機不支持這一點。

編輯:重新讀你的問題。這聽起來像你至少可以使用重定向到一個文件獲得輸出。這樣就不會讓你雖然增加更多的輸入:

./runmyserver > log.txt 
0

如果你提前知道要做到這一點,在屏幕會話中使用屏幕(1),並運行你的服務器在前臺的時間。你將能夠從你的屏幕會話中分離出來,並讓程序繼續運行。之後,您可以重新添加屏幕會話並查看自此之後所做的任何輸出,直至回滾緩衝區的大小。