Shell Udev规则和脚本问题

Shell Udev规则和脚本问题,shell,usb,udev,Shell,Usb,Udev,所以我想做一个udev规则,当我把我的usb密钥连接到我的计算机上时,规则会挂载我的usb密钥,从我的计算机上获取一个文件,复制到我的usb密钥,然后卸载我的usb。 所以我就这样做了我的udev规则: ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/mount /d

所以我想做一个udev规则,当我把我的usb密钥连接到我的计算机上时,规则会挂载我的usb密钥,从我的计算机上获取一个文件,复制到我的usb密钥,然后卸载我的usb。 所以我就这样做了我的udev规则:

ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/mount /dev/sda1 /media/usb"
ACTION=="add" SUBSYSTEM=="BLOCK", ENV{ID_VENDOR_ID}=="0718", ENV{ID_MODEL_ID}=="0618", ENV{ID_SERIAL_SHORT}=="CB00524932077759", RUN+="/bin/ScriptCopy"
我在/bin中写了一个脚本,叫做ScriptCopy:

#!/bin/sh

cp /root/average.db /media/usb/database/average.db

ldconfig

echo "Done!"
exit 0
所以我的udev规则的第一部分起作用了,它挂载了usb密钥,但是我的脚本不起作用了,我真的不明白为什么。有人能给我解释一下吗?Thx

编辑1: 当我在终端中运行脚本时

./ScriptCopy
它起作用了!所以我的udev规则肯定有问题

编辑2: 我发现了一些非常奇怪的事情,至少我一点也不明白,如果我在我的香蕉皮上的GUI XFCE上插入USB密钥,我的规则就会起作用。但是我正在使用ssh,所以通常我不会打开GUI。我想做的是,用ssh运行一些命令,触发我的python脚本,然后每两天用我的usb密钥获取一次数据。但是当我使用ssh从另一台计算机触发脚本时,当香蕉皮不在GUI上时插入usb时,它不会将数据传输到我的usb密钥。我不知道这是否可以理解

编辑3:
好的,我的UDEV规则中有一个路径错误,因为在ssh上,我不是同一个用户。我正在结束主题。

我发现我的脚本/udev规则中有一个路径错误。

为什么用done语句结束脚本?据我所知,这定义了一个循环的结束,而你没有。使用退出0退出脚本。0定义了一个成功的执行。虽然这可能解决不了你的问题。是的,你说得对!我的问题不好,但它也不能解决我的问题。没有错误消息吗?还有,你能用吗/而不是在顶部的bin/bash?要查看调试模式,请在cp命令之前使用set-vx。您是否在USB上创建了数据库/目录?最后,如果您在MS Windows附近创建了脚本,请执行dos2unix ScriptCopy。祝你好运。我忘了说了,但我正在为香蕉皮制作巴拿尼亚debian。是的,我的USB上有这个目录。谢谢你的回答!