1

特定のパターンのリモート プロセスを強制終了し、スタートアップへのパスをプッシュしてスクリプトを実行する必要があります。私はこれまでに試しました

pid=$(ssh -q username@virt ps -ef|grep $APP|grep $PORT|awk '{print $2}')

ssh -q username@virt kill -9 $pid
ssh -q username@virt "find /shared/local/path1/app -name "start_app*" -exec grep -nl "9122" {} \;| xargs -0 -I '{}' bash -c 'pushd $(dirname {});bash {};'"

上記のコマンドを実行すると、kill 処理は正常に機能しています。scriptfile を検索し、フォルダーをパスにプッシュしてスクリプトを実行する最後のステップが機能していません。

何らかの理由で pushd が正常に機能していません。ローカルサーバー上のコマンドはうまく機能します

find /shared/local/path1/app -name "start_app*" -exec grep -nl "9122" {} \;| xarg -0 -I '{}' bash -c 'pushd $(dirname {});bash {};'

このタスクを達成するためのより効果的なソリューションを手伝ってください。

4

1 に答える 1

0

ここの引用符にエラーがあります:

ssh -q username@virt "find /shared/local/path1/app -name "start_app*" -exec grep -nl "9122" {} \;| xargs -0 -I '{}' bash -c 'pushd $(dirname {});bash {};'"

代わりにこれを試してください:

ssh -q username@virt "find /shared/local/path1/app -name 'start_app*' -exec grep -nl '9122' {} \;| xargs -0 -I '{}' bash -c 'pushd \$(dirname {});bash {};'"
于 2013-03-31T13:21:12.510 に答える