質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1732閲覧

mosquittoクライアントの標準出力をファイルへリダイレクトできない

mosa

総合スコア218

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2019/01/16 03:23

いつもありがとうございます。
mosquittoクライアントである mosquitto_sub をデバッグ出力オプション -d を付けて実行した際、画面に出力される情報をファイルにリダイレクトすることができません。
mosquitto関係あるのか、単に出力やリダイレクトに関して知識が誤っているのかはわかりません。

リダイレクトせずに実行した場合、

$ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d Client mosqsub|30056-deve sending CONNECT Client mosqsub|30056-deve received CONNACK (0) Client mosqsub|30056-deve sending SUBSCRIBE (Mid: 1, Topic: /hoge/, QoS: 0) Client mosqsub|30056-deve received SUBACK

画面にこのような表示が出力され続けます。
Ctrl+C で中断します。

ですが、これらの出力をリダイレクトしようと、

$ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d > hoge.log $ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d >> hoge.log $ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d > hoge.log 2>&1 $ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d >> hoge.log 2>&1 $ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d &> hoge.log $ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d | tee hoge.log $ mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d | tee hoge.log -a

を実行してみたのですが、画面にもファイルにも一切出力されません。
ファイルは作成されますが、中身が0バイトです。

標準エラー出力ではないので、

mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d 2> hoge.log mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d 2>> hoge.log

を実行すると画面には同じように出力されますが、ファイルには出力されません。

ls > hoge.log などの内容はファイルに出力されますので、パーミッションなどは問題ないと思います。

上記条件で画面に出力した情報をファイルに出力する方法をご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

標準出力が端末かどうかによって出力を変えているのかも知れません。
scriptコマンドを使って、

sh

1script -c 'mosquitto_sub -h 192.168.1.129 -t "/hoge/" -d' hoge.log

でどうしょうか?

投稿2019/01/16 05:48

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mosa

2019/01/17 01:10

ありがとうございます!意図した動作ができました。 https://linuxjm.osdn.jp/html/util-linux/man1/script.1.html 「標準出力が端末 (tty) でないと動作が変わってしまうプログラムの出力」そういうものがあるのですね。。知りませんでした。勉強になりました。
otn

2019/01/17 03:35

例えば、 /bin/ls と、 /bin/ls | cat や、/bin/ls > out.txt だと出力が違いますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問