在Linux中,硬件端口(如串口/网络端口)通过设备文件访问,需结合权限管理(如
chmod
)和专用工具(如minicom
、socat
)操作。
理解Linux硬件端口类型
-
物理硬件端口
- 串口 (UART):
/dev/ttyS0
(COM1),/dev/ttyUSB0
(USB转串口) - 并口:
/dev/lp0
(打印机端口) - USB设备:
/dev/ttyACM0
(调制解调器) - 通过
ls /dev
查看设备节点。
- 串口 (UART):
-
网络端口
TCP/UDP端口(如80、22),通过IP协议通信。
打开物理硬件端口的步骤
识别设备文件
dmesg | grep tty # 查看串口设备日志 ls /dev/tty* # 列出所有串口设备
配置访问权限
- 临时授权:
sudo chmod 666 /dev/ttyS0 # 允许所有用户读写
- 永久方案(推荐):
创建udev规则文件/etc/udev/rules.d/99-serial.rules
:SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
重新加载规则:
sudo udevadm control --reload-rules
使用工具访问端口
- 终端工具:
screen /dev/ttyS0 115200 # 波特率115200 minicom -D /dev/ttyUSB0 # 交互式串口工具
- 编程访问(Python示例):
import serial ser = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) ser.write(b'Hello') # 发送数据 print(ser.readline()) # 读取数据 ser.close()
打开网络端口的步骤
检查端口状态
sudo netstat -tuln | grep :22 # 查看22端口是否监听
配置防火墙
- 允许端口(以UFW为例):
sudo ufw allow 22/tcp # 开放SSH端口 sudo ufw reload
绑定服务到端口
- Python简易HTTP服务:
python3 -m http.server 8000 # 监听8000端口
- 使用nc工具测试:
nc -l 1234 # 监听TCP 1234端口 nc 192.168.1.10 1234 # 从另一台机器连接
关键注意事项
-
权限安全
- 避免长期使用
chmod 777
,优先通过用户组授权:sudo usermod -aG dialout $USER # 将用户加入串口组
- 避免长期使用
-
端口冲突
- 确保端口未被占用:
sudo lsof -i :8000 # 检查8000端口进程
- 确保端口未被占用:
-
硬件兼容性
- USB转串口设备需内核驱动支持(如
ftdi_sio
、pl2303
),通过lsmod
确认。
- USB转串口设备需内核驱动支持(如
-
实时监控
- 使用
strace
跟踪系统调用:strace -e trace=open,read,write screen /dev/ttyS0 115200
- 使用
故障排除
- 设备未识别:
检查内核驱动:dmesg | grep -i usb
- 权限拒绝:
确认用户组:groups $USER
- 数据收发失败:
验证波特率/数据位(常用8N1:8数据位、无校验、1停止位)。
引用说明: 基于Linux内核文档(kernel.org)、Ubuntu官方指南(help.ubuntu.com)及man
手册页(如man udev
),硬件操作需遵循设备厂商规范,网络端口管理参考RFC标准。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4556.html