在备份过程中,程序必须将tar.gz
文件复制到已安装的 USB 闪存驱动器。程序 (nodeJS) 使用 APIchild_process.exec()
运行 shell 脚本。函数本身获取stdio
。
那么,使用 shell 脚本,我该如何检查 USBFlashDrive 是否已断开连接/拔出?
该设备通常显示为sd[a-z]1
- 请注意字符串中的正则表达式。
答案1
我建议
lsusb
据作者称,
lsusb
是一个用于显示系统中 USB 总线及其所连接设备的信息的实用程序。
一个例子:
hani@My-FRIEND:~$ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 005: ID 8087:07dc Intel Corp.
Bus 002 Device 004: ID 04f2:b3a3 Chicony Electronics Co., Ltd
Bus 002 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 002 Device 007: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Bus 002 Device 002: ID 0458:0185 KYE Systems Corp. (Mouse Systems)
Bus 002 Device 006: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
正如您所看到的,输出的第七行显示了有关当前插入计算机(通过 USB 端口)的闪存驱动器(USB 驱动器)的详细信息。
答案2
要检查已连接的 USB 磁盘,请查看/dev/disk/by-path/
ls -l /dev/disk/by-path/*usb* | grep -v "part" | awk '{print $NF}'| awk -F "/" '{print $NF}' | sort
上述命令的输出将仅列出 USB 磁盘。
grep -v "part"
- 排除分区。
sdb
sdc
然后lsblk
命令可以打印一些有用的信息,如模型和尺寸。
#!/bin/bash
for usb in $(ls -l /dev/disk/by-path/*usb* | grep -v "part" | awk '{print $NF}'| awk -F "/" '{print $NF}')
do
lsblk -n -d -o NAME,MODEL,VENDOR,SIZE,RM /dev/$usb
done
检查 USB 磁盘分区的挂载位置
#!/bin/bash
for usbp in $(ls -l /dev/disk/by-path/usb | grep "part" | awk '{print $NF}'| awk -F "/" '{print $NF}')
do
findmnt -rno TARGET /dev/$usbp
done
答案3
我不太了解 nodeJS(我是 C++ 人员)但你可以检查/dev/
文件夹中是否存在驱动器。
当我插入 U 盘时,我得到了文件/dev/sdc
。如果我拔掉它,它 /dev/sdc
就会消失。