ウェブ上で同様の質問がありましたが、新鮮なリクエストによって回答が明らかになると思われる回答はありません。 リモートコマンドを実行した後でsshセッションが終了しない
は、私は、リモートサーバーに接続を維持された問題を行うことができますLinuxボックス上のリモートクエリを実行しようとしています。私はスクリプトに-xを設定しているので、出力を見ています。ウィンドウはその後、私の代わりに出て行くのリモートコンピュータ上のプロンプトを与えるしかし、私のスクリプトの 一部はスクリプトがある
ssh -tt $host.digital.domain.com << EOF
sudo su - foo
/apps/scripts/bar.sh
exit
EOF
を下回っていることは正しく
[[email protected] ~]$ [[email protected] ~]$ + rm -f '/tmp/files*'
を実行します。
[[email protected] ~]$
私はまた、いずれかのpidが、このdoesntの仕事を殺すためにしようとしたのttyエラー を得ていたように私は-ttスイッチを使用。 スクリプトを進める唯一の方法は、私が 'ctrl c'を使ってリモートセッションを終了することです。
私はおそらくsudoのために、私はわからないんだけど、1本のライン上のsshそれをすべて実行しているが、このdidntの仕事をしようとしています。
アドバイスは素晴らしいでしょう。
ありがとう
fbohorquezこんにちは、私はそのまだセッションを保持、これを試してみました。 SSH -tt $ host.digital.domain.com << EOF 須藤秀 - fooの /apps/scripts/copy_files.sh 終了 終了 終了 EOF + RM /アプリケーション/スクリプト/ files2copy +終了0 ます/ var/spool/mail/amsに新しいメールがあります。 [foo @ host〜] $ 2で殺されました。 – user3615267
これはスクリプトの実行と完了までの時間と関係があります。スクリプトを実行する必要がない場合、exitは完全に動作します。[user @ host1〜] $ [foo @ host1〜] $ [foo @ host1〜] $ [user @ host1〜] $ host1.digital.domainへの接続.comは閉じた。しかし、スクリプトが必要な場合、セッションは開いたままです。 [foo @ host2〜]だから私はスクリプトと終了コマンドを実行する間に遅延を働かせる必要があります – user3615267
スクリプトを実行して終了コマンド間の遅延のために "スリープ"を使用することができます。また、プロセスが終了するのを待つために「待機」を使用することもできます。 他のbashセッションで実行スクリプトに "setsid"を使用したり、終了時にSIGHUPシグナルを送信しないように "nohup"を使用できます。 – fbohorquez