我希望我的 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在复制过程中执行了命令一样。
所以,我决定使用waitcommand 来确保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