web-dev-qa-db-ja.com

プロセスIDを見つけてSSHでプロセスを強制終了します

スクリプトを作成して、スクリプトにコマンドを入力してプロセスを強制終了させます。

私はほとんど動作していますが、私の問題は現在、それを殺すために2回sshする必要があります1)プロセスIDを取得する2)プロセスを殺す-私は一度にこれを行うことを望み、私は試しました配管しますが、私はそれを動作させることができないようです。

ここに私の現在の作業バージョンがあります:

ProcessNumber=`ssh user1@server1 -p22222 ps -ef | awk '/[s]sh -f -N -T -R32400:localhost:32400 remote@remote/{print $2}'`
ssh user1@server1 -p22222 "kill $ProcessNumber"

そして、ここに、私が動かないスクリプトを示します。

ssh user1@server1 -p22222 kill `ps -ef | awk "/[s]sh -f -N -T -R32400:localhost:32400 remote@remote/{print $2}"`

2番目のものを一度に機能させるための提案はありますか?

3
denski

ps -efの出力の解析は少し注意が必要です。 pgrepを使用することをお勧めします

pgrep -f `ssh -f -N -T -R32400:localhost:32400 remote@remote`

または、単にpkillですべてを減らします:

ssh user1@server1 -p22222 "pkill -f 'ssh -f -N -T -R32400:localhost:32400 remote@remote'"
4

このいワンライナーのようなものがそれを行うことができます:

ssh user1@server1 -p22222 "kill \$(ps -ef | awk '/[s]sh -f -N -T -R32400:localhost:32400 remote@remote/{print \$2}')"

エスケープにはまだ調整が必要な場合があります(テストしませんでした)。

3
Jakuje