3

http://mywiki.wooledge.org/ProcessManagementおよびhttp://mywiki.wooledge.org/BashFAQ/068Myからさまざまな手順を試し ましたが、特定の時間間隔の後に tail -f コマンドを強制終了する方法を達成できません。

私のスクリプト:

#!/bin/bash

function strt ()
{
command 1..
command 2..
}

export -f strt
su user -c 'set -e && RUN_Server.sh > server.log && tail -f server.log & pid=$! { sleep 20; kill $pid; } && strt'

exit 0.

tail -f server.log の pid を強制終了して、jboss サーバーが起動しているかどうかを確認するための小さな関数である「strt」に進みます。

実行するとエラーが発生します

bash: -c: 0 行目: 予期しないトークン `{' の近くで構文エラーが発生しました。

4

4 に答える 4

3

これを試して

timeout 20 tail -f server.log
于 2012-08-03T22:38:26.247 に答える
0
pid=$! { sleep 20 ; kill $pid; }

あなたは何をしようとしているのですか?前にセミコロンを追加するだけで{役立つ場合がありますか?

于 2012-05-03T16:01:53.640 に答える
0

あなたが抱えている問題は、slee.p コマンドを強制終了するまで実行されないことですtail

コマンド構造:

command1 && command2

実行するcommand1ように指示し、 の終了コードで終了する場合は0、実行しますcommand2。これは次と同等です:

if command1
then
     command2
fi

私は少し前にこれに似た状況にありました。Weblogic サーバーを起動し、サーバーが起動するまで待ってから、サーバー上で何かを行う必要がありました。

これを行うために、名前付きパイプ(方向)を使用することになりました。この名前付きパイプを介して Weblogic サーバーを起動するコマンドを実行しました。次に、別のプロセスにパイプを読み取らせ、起動文字列を確認すると、ループから抜け出し、プログラムを続行しました。

上記のリンクは、まさにそれを行うための完全な指示を提供するはずです.

于 2012-05-03T19:40:23.187 に答える