2025年09月24日

組込用Ubuntuに入れておくべきツール

※以下、/path/to や your_program は環境や実行ファイル等にあわせて書き換えること

1)socat (SOcket CAT:標準出力をTCP接続へ渡す)
<使用例>
/path/to/your_program | tee -a output.log | socat - TCP4:127.0.0.1:12345
・your_program 実行して、
・標準出力を 画面に表示しつつ、 outlput.logに 追記
・標準出力を TCP 接続で 127.0.0.1 port 12345  に送信。

※補足
接続は色々設定できる。
標準出力 → TCP へ転送
your_command | socat - TCP:192.168.0.10:5000
標準出力 → ローカルで待ち受け(他プロセスに渡す)
your_command | socat - TCP-LISTEN:5000,reuseaddr,fork
標準出力 → UDP で転
your_command | socat - UDP:192.168.0.10:5000
シリアルコンソール → TCP/UDP へ転送(双方向対応)
socat -d -d /dev/ttyUSB0,b115200 TCP-LISTEN:5000,reuseaddr,fork
TCP → 標準出力(逆方向)
socat TCP-LISTEN:5000,reuseaddr,fork -

リアルタイム性が重要でバッファリングを避ける場合、コマンドにstdbuf -o0を付ける
stdbuf -o0 your_command | socat - TCP:192.168.0.10:5000

途切れ対策
reuseaddr 同じポートで再起動許可の指定
fork 複数クライアント対応(TCPの場合)
を付ける。両方付けた方が無難
なお、 - は標準入出力(コンソール)へ接続を示す

UDPで送出先のポートが閉じるとICMP Port Unreachable が発生して送出側が止まる
止まらなくするには
SEND-TOを使う
socat - UDP-SENDTO:192.168.0.10:5000
raw UDP をs使う
socat -T0 - UDP-SENDTO:192.168.0.10:5000


<決定版>
stdbuf -oL -eL /path/to/your_program | tee -a "logfilename" | socat - UDP-SENDTO:192.168.166.70:5000

2) valgrind (メモリリーク、未初期化メモリの使用、無効なメモリアクセスなどを検出するツール)
<使用例>
 sudo -S valgrind -s --log-file=/path/to/logfile.log --track-origins=yes --leak-check=full --show-leak-kinds=all /path/to/your_program
・管理者権限でyour_program 実行して、
・エラーレポートを標準エラー出力にも表示
・ログを指定ファイルに保存
・未初期化メモリの「発生源」を追跡
・メモリリークの詳細を完全に表示
・すべての種類のメモリリーク(確実、疑わしい、一時的)を表示

3)usbreset    USBデバイスをソフトウエア的にリセット
usbutils をインストールするとついてくる(Ubuntu22.04以降)

4)procinfo    軽量な診断ツール
・procinfo システム統計情報の表示
・lsdev  ハードウエアデバイス情報の取得
・socklist ソケット情報の表示(つかえない環境あり)

5)smartctl
smartmontools をインストールすると利用できる。
sudo smartctl -a /dev/sdX    sdXはsdaなど
•Reallocated_Sector_Ct  (代替セクタ数)
•Current_Pending_Sector(保留中の不良セクタ)     
•Offline_Uncorrectable(修復不能セクタ)     
それぞれが0でなければ交換検討対象

6)tio
シリアル通信専用計量ターミナル
使用例:
tio -t timestamp -l serial.log /dev/ttyUSB0 -b 115200

7)nmap
ネットワーク上の相手がどのポートで何を待っているかを外側から調べるツール
使用例:
nmap 192.168.0.10
出力例:
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8080/tcp closed http-proxy
443/tcp  closed https

8)netstat
「今この機器がどのポートで通信しているか」を一覧表示するネットワーク診断ツール。
特に “どのポートが LISTEN(待ち受け)しているか” を調べるための道具。
インストールは net-tools
sudo apt install net-tools

使用例: 
netstat -tlnp
オプションは
-tTCP だけ表示
-uUDP だけ表示
-lLISTEN 中のポートだけ表示
-n名前解決せず数値で表示(高速)
-pどのプロセスが使っているか表示


(順次追記予定)
posted by すら at 08:49| Ubuntu