SSH接続後にコマンドを実行する方法は?


2

リモートに接続するときは常に実行します

cd ~/w/logs
tail -f some_file.log

しかし、私がするとき

ssh host 'cd ~/w/logs; tail -f some_file.log'

すべては問題ありませんが、CTRL + Cの後、接続は失われます。(同様の質問ですが、CTRL + Cの問題はカバーしていません)

リモートログイン後にコマンドを実行するにはどうすればよいですか?

回答:


5

2つのことを行う必要があります。1つは、末尾が終了した後(bash最後に)インタラクティブbashを実行し、セッションがインタラクティブになるようにリモートTTYを割り当てる必要があります(-tスイッチ):

ssh -t host 'cd ~/w/logs; less +F some_file.log; exec $SHELL'

exec-コマンドを指定すると、シェルが置き換えられます。新しいプロセスは作成されません


いや。これは動作しません。Ctrlキーを押しながらCキーを押して「テール」コマンドを停止すると、接続が切断されます。((; "psgi.log -f幹部はbash -c尾-l CD〜/ログ/ W" `成功せず、` sshの-t SV:私はこれを試してきた
オイゲン・Konkov

OK、Ctrl + C、すべてのセッションを終了します。殺す必要のないコマンド(less)を考慮するとうまくいきます(答えが更新されます)。
-Jakuje

あなたはmispell持って、男が記述されていない-ttだけで、-t
オイゲンコンコフ

1
ログインシェルのプロファイルにコマンドを記述せず、リモートで実行するコマンドなしで単純なsshを開始するだけの理由がわかりません。
ゴンバイサンドル

1
なるほど、私は文字通り「リモートに接続するときはいつも走る...」を取りました。
ゴンバイサンドル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.