Первый пост, так что терпите меня, если я не предоставлю достаточно информации в первый раз.

У меня есть сценарий, запускаемый при подключении любого из двух 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 из правила, но вы поняли идею.

Как я могу заставить этот скрипт запускаться только один раз, когда диск подключен, а не снова, пока диск не будет удален и снова подключен?

0