Estou trabalhando com o Raspberry Pi. Anteriormente, eu usei udev rule
para executar um script quando uma memória flash usb foi conectada. O seguinte foi o conteúdo de /etc/udev/rules.d/10-usbstick.rules
file:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1" SYMLINK+="usbflash", RUN+="/path/to/myhup.sh"
E, em seguida, em myhup.sh
:
#!/bin/sh
nohup /path/to/myscript.sh
Este método funcionou bem. Quando uma memória flash usb foi conectada, ela automaticamente começou a executar o arquivo myscript.sh
.
No entanto, depois de atualizar para Jessie, não funciona. Ao conectar uma memória flash USB, ele apresenta os seguintes erros:
[ 2026.652130] sd 0:0:0:0: [sda] No Caching mode page found
[ 2026.652238] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 2029.532163] ntfs: (device sda1): check_mft_mirror(): $MFT and $MFTMirr (record 0) do not match. Run ntfsfix or chkdsk.
[ 2029.532355] ntfs: (device sda1): load_system_files(): $MFTMirr does not match $MFT. Mounting read-only. Run ntfsfix and/or chkdsk.
Eu decidi usar o método systemd service
. Então eu mudei o udev rule
para:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1" SYMLINK+="usbflash", RUN+="systemctl start myusb.service"
E criou o myusb.service
com o seguinte conteúdo:
[Unit]
Description=run myscript
[Service]
Type=oneshot
ExecStart=/path/to/myscript.sh
[Install]
WantedBy=multi-user.target
E então:
sudo chmod 644 /lib/systemd/system/myusb.service
sudo systemctl daemon-reload
sudo systemctl enable myusb.service
sudo reboot
Desta vez, não funcionou novamente e deu os seguintes erros:
[ 2026.652130] sd 0:0:0:0: [sda] No Caching mode page found
[ 2026.652238] sd 0:0:0:0: [sda] Assuming drive cache: write through
Então, como posso executar um script automaticamente quando uma memória flash USB é conectada (em Jessie)?