Первый пост, так что терпите меня, если я не предоставлю достаточно информации в первый раз.
У меня есть сценарий, запускаемый при подключении любого из двух USB-накопителей к моему серверу Ubuntu. У меня правильно установлены FSTAB для двух дисков, поэтому они будут монтироваться с помощью «mount -a». Мой скрипт настроен в правилах UDEV, так что при подключении дисков он будет монтировать и rsync данные на диск. Моя проблема в том, что скрипт, кажется, запускается снова и снова, постоянно создавая новый экземпляр.
Почему я так думаю, потому что rsync порождает до 60 процессов, которые, я уверен, не вижу при обычном использовании rsync.
Это также означает, что, поскольку накопитель всегда занят, я не могу размонтировать накопитель, чтобы удалить его.
Копия скрипта:
#!/bin/bash
makeAttached() {
sudo mount -a
}
removeAttached() {
sudo umount /media/StuffForDad/
sudo umount /media/StuffForDad2/
}
copyMovies() {
if mountpoint -q -- /media/StuffForDad/
then
sudo rsync -av --exclude-from '/home/usr/CurrentMovies.txt' /media/plexdrive/Videos/ /media/StuffForDad/
elif mountpoint -q -- /media/StuffForDad2/
then
sudo rsync -av --exclude-from '/home/usr/CurrentMovies.txt' /media/plexdrive/Videos/ /media/StuffForDad2/
fi
}
makeAttached;
copyMovies;
removeAttached;
Копия правила UDEV:
ACTION="add", ATTRS{idVendor}=="IDNO", ATTRS{idProduct}="IDNO", RUN+="/home/usr/firstscript.sh"
ACTION="add", ATTRS{idVendor}=="IDNO2", ATTRS{idProduct}="IDNO2", RUN+="/home/usr/firstscript.sh"
Я удалил ID NUMBERS из правила, но вы поняли идею.
Как я могу заставить этот скрипт запускаться только один раз, когда диск подключен, а не снова, пока диск не будет удален и снова подключен?