Jenkinsから、ANT XMLに存在するターゲットに基づいて、そのターゲットを呼び出します。そのターゲットにはSSHEXEC
のタスクがあります。SSHEXECタスクはJenkinsから呼び出されたAntのコマンド呼び出しスクリプトを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が "IF"状態にある条件を満たすと、それは中断するはずです。
これは、スクリプトを1.5時間実行した場合に良好に動作します。しかし、スクリプトが長い時間実行されている場合、Jenkinsでは、まだ実行中だが、Linuxサーバー上では実行されない場所があるという。
ANTのsshexec
タスクは、特定の時間だけスクリプトプロセスを保持できるためですか?または私はsshd_config
ファイルに任意のパラメータを追加する必要がありますか?[1]条件ベースのスクリプトは、より長い時間実行するためにこれをトリガする前に。
私はにリダイレクトするために& echoステートメントのスクリプトにロギングのリダイレクトを入れましたが、うまくいきませんでした。
私は再指向を続けていたときに、そのログを日付2.10時間で印刷しました。&そのファイルにはログがありません。
私を助けてもらえますか?
現在、私のサーバーで/ etc/ssh/sshd_configにクライアントパラメータを追加しました。それは働いている。ありがとう。クライアント側では、私は、ジェンキンスの側で、私が120としてServerAliveIntervalを追加すると、接続は永遠に生きていますか? ServerAliveCountMaxも追加する必要があるので、しばらくしてから開いたssh接続を終了できます。 –
@DheerajKumarYはい、ServerAliveCountMaxはクライアント側で役に立ちます。 – VonC