You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将minicom/tmux的所有输出定向到journald

解决minicom/tmux日志记录与journald兼容问题

1. 给tmux输出添加时间戳并同步到journald

默认的tmux pipe-pane仅能追加日志,既无时间戳也无法接入journald,可通过以下方式改进:

方法一:用ts添加时间戳并写入journald

先安装moreutils包(提供ts命令),执行以下命令:

tmux pipe-pane -o 'ts "[%Y-%m-%d %H:%M:%S]" | logger -t minicom-tmux'
  • ts负责在每一行日志前生成标准时间戳
  • logger -t minicom-tmux将日志推送至journald,minicom-tmux作为日志标识,方便后续过滤查询

后续可通过journalctl -t minicom-tmux直接查看带时间戳的可读日志。

方法二:无ts时用awk生成时间戳

若未安装moreutils,可借助awk内置时间函数实现:

tmux pipe-pane -o 'awk "{print strftime(\"[%Y-%m-%d %H:%M:%S]\"), \$0}" | logger -t minicom-tmux'

2. 消除journalctl中的转义序列/Blob数据

服务进程调用minicom时出现的转义序列或Blob数据,源于minicom默认输出终端控制码,可通过两种方式解决:

方式一:让minicom输出纯文本

启动minicom时指定-t dumb参数,强制使用哑终端类型,大幅减少控制码输出:

minicom -D /dev/ttyUSB0 -t dumb

方式二:过滤已有的转义序列

安装ansi2txt包,用它过滤minicom输出中的终端控制码:

minicom -D /dev/ttyUSB0 2>&1 | ansi2txt

3. 服务化运行的完整配置(以systemd为例)

若要通过systemd服务运行minicom并接入journald,创建/etc/systemd/system/minicom.service文件:

[Unit]
Description=Minicom Serial Port Service
After=multi-user.target

[Service]
ExecStart=/bin/bash -c "minicom -D /dev/ttyUSB0 -t dumb 2>&1 | ansi2txt | logger -t minicom-service"
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

执行以下命令启动并启用服务:

systemctl daemon-reload
systemctl start minicom.service
systemctl enable minicom.service

后续通过journalctl -u minicom.service即可查看干净的带时间戳日志。

内容的提问来源于stack exchange,提问作者WindowsWeenie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:23:12