udev: дождитесь установки разрешений устройства перед запуском скрипта

330
BadIdeaException

Я пытаюсь передать USB-устройства в работающий докер-контейнер с помощью udev. Тем не менее, сценарий вызывается до того разрешения, и группа собственности установлены правильно на устройстве, в результате чего все виды проблем разрешения в контейнере. Как я могу решить это?

Наиболее распространенный ответ, который я вижу в Google, включает sleepодин сценарий, вызывающий другой, но мне это кажется хакерским. Есть ли способ лучше?

Это соответствующая функция вызываемого скрипта для добавления устройства:

function add_device() { # Check that device exists and is a character device if [ ! -e $DEV ] || [ ! -c $DEV ] then exit 1 fi  MAJOR=$(echo $((0x$(stat -c "%t" "$DEV")))) # Get major number and convert to decimal with echo MINOR=$(echo $((0x$(stat -c "%T" "$DEV")))) # Get minor number and convert to decimal with echo MODE=$(stat -c "%a" "$DEV") # Get device file permissions GID=$(stat -c "%g" "$DEV") # Get device file group id  docker exec $CONTAINER /bin/bash -c "mkdir -p $(dirname $DEV) \ && mknod -m $MODE $DEV c $MAJOR $MINOR \ && chgrp $GID $DEV \ && echo $(date --rfc-3339=seconds): Character device $DEV created as (major:minor) $MAJOR:$MINOR with owner root:$GID and permissions $MODE >> /var/log/dynamic-devices.log" } 
0

0 ответов на вопрос

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