我希望我的 RPi 2(使用MiniBian
(基于 Debian 的Raspbian
操作系统的最小版本)作为其操作系统)在检测到插入了 USB 闪存时执行脚本。所以这就是我所做的:
我/etc/udev/rules.d/10-usbstick.rules
用这些内容创建:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*" SYMLINK+="usbflash", RUN+="/path/to/myscript.sh"
Run Code Online (Sandbox Code Playgroud)
然后/path/to/myscript.sh
用这些内容创建:
#!/bin/bash
mount /dev/usbflash /mnt/
service omxd stop
rm -r /path/to/myfolder/*
cp -f /mnt/*.mp4 /path/to/myfolder/
cp -f /mnt/*.avi /path/to/myfolder/
sleep 1
umount /dev/usbflash
halt
Run Code Online (Sandbox Code Playgroud)
现在,当我插入 USB 闪存时,它会识别它,安装它,停止omxd
守护进程并删除所有旧文件。
但问题是它halt
在复制所有文件之前关闭 ( )。后来查了一下,发现只有1个文件被复制了,而且没有被正确复制,就像halt
在复制过程中执行了命令一样。
所以,我决定使用wait
command 来确保halt
命令只在最后执行。我编辑的/path/to/myscript.sh
文件是这样的:
#!/bin/bash
mount /dev/usbflash /mnt/
PID1 = $!
wait PID1
service omxd stop
rm -r /path/to/myfolder/* …
Run Code Online (Sandbox Code Playgroud) 我fbi
用来显示一些图像。fbi
有一些键盘控制,如+
,-
,Page Up
,Page Down
,等来控制图像。
我不想使用键盘,而是想通过 SSH 将这些控制命令发送到fbi
.
我已经尝试过以下方法:
mkfifo /tmp/mycmd
fbi /myfolder/*.jpg < /tmp/mycmd &
Run Code Online (Sandbox Code Playgroud)
这样做后,fbi
不启动。我尝试发送一些命令,例如echo . > /tmp/mycmd
,但它没有启动;并给出以下错误:
using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
Run Code Online (Sandbox Code Playgroud)
问题是什么?
如何fbi
通过 SSH发送命令!?
command ×1
cp ×1
fbi ×1
fifo ×1
framebuffer ×1
process ×1
raspberry-pi ×1
shell-script ×1
ssh ×1