リモートでコマンドを開始し、接続を閉じます。

リモートでコマンドを開始し、接続を閉じます。

複数のサーバーでリモートでクリーンアップコマンドを実行しようとしています。これはデバイスだからです。ローカルでcronジョブなどの項目を変更すると、サポートが中断されます。

私はこれをしようとしています:

ssh [email protected] "nohup fstrim /data &"

コマンドは実行されますが、問題はnohupなどにもかかわらず、セキュリティシェルが開いていることです。 sshにコマンドを削除してすぐに終了するように強制できますか?

私はちょうどGoogleを通して同様の要求を見つけました。そこで解決しました

screen -d -m ./script

残念ながら、端末に画面がありません。

答え1

screenリモートサーバーにインストールした場合は、スタンドアロンfstrimセッションscreenでコマンドを実行するこの方法を試してください。現時点ではssh即時終了のようです。

ssh [email protected] screen -S fstrim -md fstrim /data

次のコマンドを使用してセッションに再接続できます。

ssh -tt [email protected]. screen -r fstrim

そして再び切断するCtrl a(Ctrl) d

初期コマンドが機能しない理由は、次のものが表示されるためnohupです。標準出力端末ではなく、書き込みのために記述子を開いたままにしておきます。 (使用している場合は、ssh -ttリモート側に擬似デバイスが作成され、端末が表示されますnohup。)リダイレクトを介して標準出力特に、期待どおりにプロセスがバックグラウンドで実行されるようにすることができます。

ssh -fn [email protected] "nohup fstrim /data >nohup.out &"

今、これに関する残酷な詳細を読んで、何を探しているのかを知るman nohupことができます。

答え2

大丈夫です。解決策を見つけたと思います。

ssh [email protected] "nohup fstrim /data > /dev/null &"

答え3

atdデバイスで実行されていますか?その場合は、atすぐに作業スケジュールを計画できます。

ssh [email protected] "echo 'fstrim /data' | at now"

リモートセッションはジョブのスケジュールのみを実行するため、すぐに終了します。デーモンはatdこれを実際に実行する役割を担います。

関連情報