2017-07-18 28 views
1

從Jenkins中,基於ANT XML中存在的目標,我將調用該目標。該目標有SSHEXEC任務。SSHEXEC任務有一個腳本調用Ant中的命令,從Jenkins調用,在2小時後超時

在那個SSHEXEC任務中,命令調用腳本。

基本上腳本代碼都象下面這樣:

waitForAggregationJobCompletion() 
{ 
while [ 1 ] 
do 
# Checks for the condition 

if [ #Condition] ;then 
break; 
fi 

if [ #Different condition ]; then 
break; 
fi 

done 
waitForAggregationJobCompletion 

基本上一旦此功能「waitForAggregationJobCompletion」被調用時,它進入而[1]環&保持爲狀態檢查。一旦如果滿足「IF」條件下存在的條件,就應該中斷。

如果腳本運行1.5小時,則運行良好。但是如果腳本運行時間較長,在Jenkins中它會表示它仍在執行,但是在Linux服務器上它將不會運行。

是否由於sshexec ANT中的任務只能將腳本進程保存一段時間?或者我需要在sshd_config文件中添加任何參數,然後在[1]基於條件的腳本運行較長時間之前觸發此文件。

我已經把腳本中的日誌重定向&一個echo語句重新指向/dev/null,但它沒有解決。

當我保持日誌重定向時,它打印該日誌的日期爲關閉2.10小時&然後在該文件中沒有日誌記錄。

你能幫我嗎?

回答

0

您可以檢查是否在「SSH timeout prevention – keep SSH sessions alive」提到的比約恩·約翰森

在客戶端的提示,比如之一:

您可以在~/.ssh/config編輯SSH本地配置文件,並添加下面一行:

ServerAliveInterval 120 

這將發出一個在您的SSH連接上每120秒創建一個「空包」,以保持它們的活力。

在詹金斯上下文中,這將是對詹金斯從執行作業的用戶的~/.ssh/config


但是,如果你有機會/控制到服務器端:

以下內容添加到您的SSH守護程序配置在/etc/ssh/sshd_config您的服務器上,以防止客戶端超時 - 所以他們不」噸有修改其本地SSH配置:

ClientAliveInterval 120 
ClientAliveCountMax 720 

這將使服務器發送CLI每隔120秒發出一個「空包」,並且在客戶端以720個間隔(120秒* 720 = 86400秒= 24小時)不活動之前不斷開它們。

+0

目前,我在我的服務器上的/ etc/ssh/sshd_config中添加了客戶端參數。這是工作。謝謝。在客戶端,我..詹金斯方面,如果我添加ServerAliveInterval爲120,連接將永遠活着?我是否還需要添加ServerAliveCountMax,以便在一段時間後可以結束打開的ssh連接。 –

+0

@DheerajKumarY是的,ServerAliveCountMax可能會幫助客戶端。 – VonC