我的 inittab 中有一行如下所示:
# Put a getty on the serial port
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
Run Code Online (Sandbox Code Playgroud)
如果我尝试从ssh会话命令行执行类似的操作(这次是针对我拥有的 USB 串行适配器):
/sbin/getty -L ttyUSB0 115200 vt100
Run Code Online (Sandbox Code Playgroud)
我收到以下回复:
getty: setsid: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我是否可以从我的ssh会话启动getty进程并在 USB 串行适配器上显示一个串行终端?为什么这必须发生在 inittab 中?
我可以创建一个管道来在两个程序之间传输信息。我什至可以使用像pv这样的实用程序来查看通过管道的总数据的进度。就我而言,我使用的是命名管道。当数据写入管道时,它会一直留在那里,直到其他程序将其读出。
是否可以打印管道中的当前字节数而不实际读取它们?
更新:
发现这些文章很有用:
我有一个非常简单的 udev 规则/etc/udev/rules.d/sdcard.rules
:
KERNEL=="mmcblk1", SUBSYSTEM=="block", SYMLINK+="sdCARD"
Run Code Online (Sandbox Code Playgroud)
问题是符号链接不是在启动时自动为我创建的。我还有许多其他规则,它们在启动时都可以正常工作(我的符号链接已创建)。
但是,如果我运行它,则会创建符号链接:
udevadm test /block/mmcblk1
Run Code Online (Sandbox Code Playgroud)
这里会发生什么?为什么不是在启动时创建?该设备是否还不能使用?我怎么能查出来?
更新一
udevadm 的输出:
looking at device '/block/mmcblk1':
KERNEL=="mmcblk1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="3862528"
ATTR{stat}==" 9 0 74 0 1 0 8 0 0 0 0"
ATTR{range}=="8"
ATTR{discard_alignment}=="0"
ATTR{force_ro}=="0"
ATTR{ext_range}=="8"
ATTR{alignment_offset}=="0"
ATTR{inflight}==" 0 0"
ATTR{removable}=="0"
ATTR{capability}=="10"
Run Code Online (Sandbox Code Playgroud) 在向 udev system 进行查询时,可以显示的一个属性是urbnum
ie:
ATTRS{urbnum}=="538"
Run Code Online (Sandbox Code Playgroud)
我已经浏览了文档,但找不到任何提及。属性是否记录在其他地方?对术语执行谷歌查询会返回分散的结果。
是什么urbnum
?