为什么我的 udev 规则在我的 Fedora PC 上不起作用?

为什么我的 udev 规则在我的 Fedora PC 上不起作用?

我想在插入外部硬盘时调用脚本并备份我的文件,但它不起作用。

首先我在终端输入命令udevadm info -a -n /dev/sdb

looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-3':
KERNELS=="3-3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="500mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="3202"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="3"
ATTRS{configuration}==""
ATTRS{devnum}=="3"
ATTRS{devpath}=="3"
ATTRS{idProduct}=="0578"
ATTRS{idVendor}=="152d"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="JMicron"
ATTRS{maxchild}=="0"
ATTRS{product}=="External Disk 3.0"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="removable"
ATTRS{rx_lanes}=="1"
ATTRS{serial}=="212355187228"
ATTRS{speed}=="480"
ATTRS{tx_lanes}=="1"
ATTRS{urbnum}=="11622"
ATTRS{version}==" 2.10"

我使用输出来编写我的 udev 规则。我在/etc/udev/rules.d一个名为该名称的文件中创建99-RsyncToUsb.rules并输入了以下命令 ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="152d", ATTRS{idProduct}=="0578", RUN+="/opt/sync_files_to_usb_disk.sh"

该脚本/opt/sync_files_to_usb_disk.sh有以下配置-rwxr-xr-x. 1 unix unix 744 May 7 23:47 sync_files_to_usb_disk.sh

但当我连接设备时仍然没有发生。

我的 Rsync 命令如下rsync -hvrstc --delete --exclude=".*/" --backup --backup-dir=Lost-Found --suffix=_dltdFile --times --progress /home/unix /run/media/unix/ExtDisk_1

有人可以帮助我吗?

答案1

我想经过一番搜索后我找到了解决方案。

首先,在udev中需要添加规则ATTR{partition}=="1"以避免脚本的多次调用。

第二个也是最重要的,在调用的脚本中,我有一个语法错误#/bin/bash是错误的,正确的是#!/bin/bash

相关内容