2014-06-08 129 views
1

我將MATLAB與COMSOL連接起來,COMSOL是一臺服務器作爲我的計算服務器的科學軟件。獲取服務器正在監聽的端口號?

我啓動COMSOL後,默認開始端口2036。如果端口繁忙,則監聽端口2037,依此類推。然後,在MATLAB中,我必須指定端口號,以便MATLAB可以將自己連接到COSMOL。

問題是學校HPC是共享的,這意味着我不能總是得到端口2036.更糟糕的是,我實際上不知道COMSOL目前正在監聽哪個端口。 COMSOL不提供解決方案。

所以我希望在shell/linux上有一個通用的方法,我可以獲取COMSOL正在監聽的端口號。

回答

1

使用ps -ef | grep <process_name>找到您的COMSOL應用程序的進程ID。然後,運行:

netstat -anp | grep -w <process_id> 

這將顯示正在使用該進程的所有端口,你將能夠看到哪些端口它聽。

+0

非常感謝!但是,我們能否進一步使它不需要人類智能?我需要做批處理作業。所以我幾乎不可能「找到進程ID」。謝謝! –

+0

@FarticlePilter它可以使用'lsof'以批處理格式執行此操作,但我不確定如何將其自動化。 –

1

我喜歡約翰的回答是最好的,但什麼樣可怕的事情:

for portnumber=2036:3000 
    try 
     mphstart(portnumber); 
     break 
    catch 
     fprintf('\n continue'); 
    end 
end 
+0

這是matlab正常啓動的時候,因爲順便沒有用Matlab點擊Comsol。 – Snickers3192