複数のサーバーでリモートでクリーンアップコマンドを実行しようとしています。これはデバイスだからです。ローカルで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
これを実際に実行する役割を担います。