У меня есть сценарий оболочки с именем media_change. sh он запускается ролью udev при изменении состояния устройства.
UDEV
ACTION=="change", ATTRS{idVendor}=="057b", ATTRS{idProduct}=="0000", ENV{DISK_MEDIA_CHANGE}=="1", RUN+="/home/pi/media_change.sh $env{DEVNAME}"
media_change. sh
#!/bin/bash
exec >> /home/pi/mount.log 2>&1
echo "$(date) Start."
echo "$(date) Media change detected on device $1"
device=${1##*/}
echo $(whoami)
lsblk | grep $device
if [ $? -eq 0 ]; then
echo "$(date) Device exists on machine."
echo "$(date) Mounting device $1 to /mnt/floppy."
sudo -u pi sh /home/pi/test.sh
else
echo "$(date) Device does not exist on machine."
fi
echo "$(date) End."
При этом выполняется другой сценарий оболочки, называемый test. sh, который просто запускает для меня сценарий nodejs
#!/bin/bash
echo $(whoami)
cd /home/pi/SpotifyDisk-node && node player.js file
Если я запускаю media_change. sh как пи Сценарий запускается как ожидалось
➜ ~ ./media_change.sh
Fri 6 Mar 13:57:23 GMT 2020 Start.
Fri 6 Mar 13:57:23 GMT 2020 Media change detected on device
pi
sda 8:0 1 1.4M 0 disk /mnt/floppy
Fri 6 Mar 13:57:23 GMT 2020 Device exists on machine.
Fri 6 Mar 13:57:23 GMT 2020 Mounting device to /mnt/floppy.
pi
DiskPlayer Not found in device list
Fri 6 Mar 13:57:27 GMT 2020 End.
Если я запускаю media_change. sh sudo, сценарий также выполняется должным образом -
Fri 6 Mar 13:57:50 GMT 2020 Start.
Fri 6 Mar 13:57:50 GMT 2020 Media change detected on device
root
sda 8:0 1 1.4M 0 disk /mnt/floppy
Fri 6 Mar 13:57:50 GMT 2020 Device exists on machine.
Fri 6 Mar 13:57:50 GMT 2020 Mounting device to /mnt/floppy.
pi
DiskPlayer Not found in device list
Fri 6 Mar 13:57:54 GMT 2020 End.
Но когда сценарий запускается при смене устройства через UDEV выдает следующую ошибку -
Fri Mar 6 14:02:27 GMT 2020 Start.
Fri Mar 6 14:02:27 GMT 2020 Media change detected on device /dev/sda
root
sda 8:0 1 1.4M 0 disk /mnt/floppy
Fri Mar 6 14:02:27 GMT 2020 Device exists on machine.
Fri Mar 6 14:02:27 GMT 2020 Mounting device /dev/sda to /mnt/floppy.
sudo: unable to resolve host DiskPlayer: Temporary failure in name resolution
pi
#
# Fatal error in , line 0
# Check failed: SetPermissions(buffer, allocated, PageAllocator::kReadExecute).
#
#
#
#FailureMessage Object: 0x7ec46800Illegal instruction
Fri Mar 6 14:02:27 GMT 2020 End.