SSHEXEC タスクには、Jenkins から呼び出される Ant のコマンドを呼び出すスクリプトがあり、2 時間後にタイムアウトします

ディーラジクマールY

Jenkinsから、ANT XMLに存在するターゲットに基づいて、そのターゲットを呼び出します。そのターゲットにはSSHEXECタスクがあります。

そのSSHEXECタスクでは、コマンドにスクリプトの呼び出しがあります。

基本的に、スクリプトコードは次のようになります。

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

if [ #Condition] ;then
break;
fi

if [ #Different condition ]; then
break;
fi

done
waitForAggregationJobCompletion

基本的に、この関数 " waitForAggregationJobCompletion"が呼び出されると、while [1]ループに入り、条件をチェックし続けます。ifが「IF」条件に存在する条件を満たせば、それは壊れるはずです。

スクリプトが1.5時間実行される場合、これは適切に実行されます。ただし、スクリプトが長時間実行されている場合、Jenkinsではまだ実行中であると表示されますが、Linuxサーバーの場合と同様に実行されません。

それが原因にあるsshexecだけ一定時間スクリプトプロセスを保持することができANTタスク?または、sshd_configこのwhile [1]条件ベースのスクリプトをトリガーして長時間実行する前にファイルにパラメーターを追加する必要があります

スクリプトにロギングリダイレクトを入れ、リダイレクト先のエコーステートメントを1つ入れました/dev/nullが、うまくいきませんでした。

リダイレクトをログに記録し続けると、そのログが日付とともに 2.10 時間近く出力され、その後、そのファイルにはログが記録されません。

手伝ってくれませんか。

フォンC

BjørnJohansenによる「SSHタイムアウト防止–SSHセッションを存続させる」に記載されているヒントの1つが確認できます。

たとえば、クライアント側では次のようになります。

でローカルSSH構成ファイルを編集して~/.ssh/config、次の行を追加できます

ServerAliveInterval 120

これにより、SSH接続で120秒ごとに「ヌルパケット」が送信され、SSH接続が存続します。

Jenkinsのコンテキストでは、それは~/.ssh/configJenkinsスレーブでジョブを実行するユーザーのものになります。


ただし、サーバー側へのアクセス/制御がある場合:

/etc/ssh/sshd_configサーバーのSSHデーモン構成に以下を追加して、クライアントがタイムアウトしないようにします。これにより、クライアントはローカルのSSH構成を変更する必要がなくなります。

ClientAliveInterval 120
ClientAliveCountMax 720

これにより、サーバーは120秒ごとにクライアントに「ヌルパケット」を送信し、クライアントが720間隔(120秒* 720 = 86400秒= 24時間)非アクティブになるまでクライアントを切断しません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ