Итак, я хочу сделать правило udev, которое, когда я подключаю свой USB-ключ к своему компьютеру, правило монтирует мой USB-ключ, берет файл с моего компьютера, копирует его на мой USB-ключ, а затем отключает мой USB. Так что я сделал мое правило Udev подобным: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"
И я написал сценарий, в/бункере, называется ScriptCopy:
#!/bin/sh
cp /root/average.db /media/usb/database/average.db
ldconfig
echo "Done!"
exit 0
Так первая часть моего правила Udev работает, он монтирует usb, но тогда мой скрипт не работает, я действительно не понимаю, почему. Может кто-нибудь объяснить это мне? Thx
редактировать 1: , когда я бегу мой сценарий в терминале, делая
./ScriptCopy
это работает! поэтому у меня должна быть проблема в моем правиле udev.
Редактировать 2: Я узнал что-то действительно странное (по крайней мере, это я совсем не понимаю), мое правило работает, если я подключаю свой USB-ключ, когда я нахожусь в GUI (XFCE) на банане Пи. Но я работаю с ssh, поэтому я не открываю GUI. Я хочу сделать, чтобы запустить некоторые команды с помощью ssh, запустить мой скрипт python, а затем я беру данные с помощью своего USB-ключа один раз в два дня. Но когда я подключаю свой USB-накопитель, а банан-пи не входит в графический интерфейс (в то время как я запускал свой сценарий с другого компьютера с помощью ssh), он не переносит данные на мой USB-ключ. Я не знаю, было ли это понятно.
Редактировать 3: Хорошо У меня была ошибка пути в моем правиле UDEV, потому что на ssh я не был у одного и того же пользователя. Я закрываю тему.
Почему вы заканчиваете свой скрипт с помощью инструкции 'done'? Насколько я знаю, это определяет конец цикла, которого у вас нет. Выйдите из сценария, используя 'exit 0'. «0» определяет успешное выполнение. Хотя это, вероятно, не решит вашу проблему. – ShellFish
Да, ты прав! Мой плохой, но да, это не решает мою проблему. –
нет сообщений об ошибках? Кроме того, вы можете использовать '#!/Bin/bash' наверху вместо этого? Чтобы увидеть режим отладки, используйте 'set -vx' перед командой' cp'. И вы создали свой 'database /' dir на вашем USB? Наконец, если вы создали скрипт где-нибудь рядом с MS Windows, выполните 'dos2unix ScriptCopy'. Удачи. – shellter