Запишите файлы в usb когда подключение/etc/udev/rules.d/

Я пытаюсь записать некоторые файлы в usb когда подключение это в Linux..
На самом деле у меня есть файл в в /etc/udev/rules.d/ с:

ACTION=="add",  ENV{ID_FS_UUID}=="9FE8-99G3", RUN+="/usr/bin/sudo -u myuser /home/myuser/Scripts/mycrazy.sh"

В mycrazy.sh, Я имею:

## Path to mounted device
PATH_USB=/run/media/myuser/9FE8-99G3

mkdir $PATH_USB/some_folder

mkdir /home/myuser/Documents/another_folder

Первый mkdir, не делает работ. Но второе, работы.
Как я могу записать файлы в usb? Пропускает что-то в моем сценарии?

1
задан 8 July 2015 в 20:24

1 ответ

  • Какие работы для меня, добавляя задержку (sleep) и disown сценарий, который имеет задержку с помощью промежуточного сценария.

    RUN{type}

    ...
           This can only be used for very short-running foreground tasks.
           Running an event process for a long period of time may block all
           further events for this or a dependent device.
    
           Starting daemons or other long running processes is not appropriate
           for udev; the forked processes, detached or not, will be
           unconditionally killed after the event handling has finished.
    

    источник: man udev

  • Там подобный случай здесь: Почему мои правила udev работают, если я использую триггер udevadm, но НЕ во время начальной загрузки?. Ответ Fëamarto кажется лучше, чем мое решение здесь. Это ожидает, пока его файловая система не готова в rw режим. Можно дать ему попытку.

    Поскольку это - Карта памяти, она может быть удалена перед монтированием. Сценарий останется в живых, пока следующая перезагрузка или он не включаются снова (которые инициировали другой экземпляр), и смонтированный.

    Один способ зафиксировать, который должен проверить, если связано /dev/sdxY все еще существует. на каждом цикле.

  • Вот моя установка:

    1. /etc/udev/rules.d/99-sneetsher-tests.rules

      ACTION=="add", ENV{ID_FS_UUID}=="6664-B2DA", RUN+="/usr/bin/sudo -u user /home/user/mycrazy.sh"
      
    2. /home/user/mycrazy.sh

      #!/bin/sh
      
      /home/user/mycrazy2.sh & disown
      
    3. /home/user/mycrazy2.sh

      #!/bin/sh
      
      PATH_USB=/media/user/MYFLASH3
      sleep 5
      mkdir $PATH_USB/some_folder
      
1
ответ дан 7 December 2019 в 16:14

Другие вопросы по тегам:

Похожие вопросы: