端末を閉じても終了しないコマンドの実行

端末を閉じても終了しないコマンドの実行

MQTTを使用して通信しているリモート・デバイスにSSHを使用してログインしようとしていますが、コマンドの実行中に端末を開いたままにせずにリモートでデバイスにログインできるようにしたいです。現在、以下のようにコマンドを実行していますが、ラップトップを端末に接続したままにしないとコマンドを実行できません。

(nohup "command"&)の使用などの解決策について読みましたが、以下のコードで動作させることはできません。

mosquitto_sub -v -u Test -P Test123 -t '#' | while read -r line ; do
        echo -e "$(date "+%Y-%m-%d %H:%M:%S") $line"
done | tee -a MQTT.txt

要約すると、上記のコードを実行して端末からプロセスを切り離し、端末が接続されていない状態で実行を継続したいと思います。 nohupではこれが可能だと思いますが、メッセージをローカルファイルに書き込む必要があります。 、後でご検討いたします。このために上記のコードをどのように変更できますか?

ベストアンサー1

書くことができます

nohup bash -c 'mosquitto_sub -v -u Test -P Test123 -t "#" | while read -r line ; do
        echo -e "$(date "+%Y-%m-%d %H:%M:%S") $line"
done | tee -a MQTT.txt'

しかし、あなたが本当に欲しいのはscreenまたはですtmux。このプログラムを使用すると、コマンドを実行し、ログアウトし、ログインしてから以前の「閉じた」端末に接続できます。


あなたの例では、非常に基本的な画面セッションは次のとおりです。

screen

mosquitto_sub -v -u Test -P Test123 -t '#' | while read -r line ; do
    echo -e "$(date "+%Y-%m-%d %H:%M:%S") $line"
done | tee -a MQTT.txt

# Hit "Ctrl-a d", it will detach the screen

これで端末を閉じてログアウトした後、ログインして再度実行できますscreen -R

おすすめ記事