すべてのアクティブなプロセスをフェッチして強制終了するスクリプトがあります。 しかし、私は以下のエラーを取得しています何らかの理由:キルコマンドがエラーを起こしています
:: INFO :: /AA/AAA/AAA/AAA/AAA/AAA/AAA/AAA \ Servers.sh :: 2016から06 -26:04:00:04:プロセス FORCEのKILLING残りのサーバー
:: INFO :: /AA/AAA/AAA/AAA/AAA/AAA/AAA/AAA \ Servers.sh :: 2016- 06-26:04:00:04:force_stop_managed_servers kill:usage \:kill [-s sigspec | -n signum | -sigspec] pid | ジョブ仕様...または-l [sigspeの\ cを]殺す
私のスクリプトは、プロセスをkill強制するには、以下の機能を持っています。
function force_stop_managed_servers() {
printf "\n\n:: INFO :: $0 :: `date +%Y-%m-%d:%H:%M:%S` :force_stop_managed_servers called"
cd $SCRIPT_DIR
kill -9 $(ps -ef | grep SONARPOTY | grep $USER | grep -v "grep" | grep -v "StopManagedServers" | grep -v "controller"| awk '{ print $2 }')
printf "\n\n:: INFO :: $0 :: `date +%Y-%m-%d:%H:%M:%S` :force_stop_managed_servers done"
}
なぜこのエラーが発生するのか教えてください。
'set -x'で試してみてください。おそらく、' kill'が間違って呼ばれることがあります。 (また、http://www.shellcheck.netには他にもいくつかの潜在的なエラーがあることがわかります) – Biffen
'$ USER'が空でないかどうか、そしてbigコマンドの結果として返されるpidが1つだけであることを確認してください。 – Fazlin
@Fazlin:長いコマンドは単一のプロセスIDを返しません。複数のプロセスが返されます。複数のプロセスが返され、それを克服するための解決策がある場合は、何が欠点であるかをお聞かせください。 –