Apakah ada cara untuk menjalankan skrip ketika perangkat USB tertentu dipasang?
Saya menyimpan video saya di USB terpisah dan ingin menjalankan skrip yang akan memasang folder video di perangkat USB ke yang ada di folder rumah.
Ada banyak solusi yang lebih baik dengan systemd sekarang. Anda membuat layanan yang tergantung dan diinginkan oleh media Anda mis:/etc/systemd/system/your.service
[Unit]
Description=My flashdrive script trigger
Requires=media-YourMediaLabel.mount
After=media-YourMediaLabel.mount
[Service]
ExecStart=/home/you/bin/triggerScript.sh
[Install]
WantedBy=media-YourMediaLabel.mount
Maka Anda harus memulai / mengaktifkan layanan:
sudo systemctl start your.service
sudo systemctl enable your.service
Setelah mount, systemd akan mengaktifkan skrip trigger Anda. Keuntungan dari aturan udev adalah skrip benar-benar aktif setelah mount, bukan setelah menambahkan perangkat sistem.
Gunakan case : Saya memiliki partisi crypted yang ingin saya backup secara otomatis. Setelah menambahkan perangkat saya harus mengetikkan kata sandi. Jika saya mengaitkan skrip cadangan ke udev, skrip mencoba untuk menjalankan pada saat saya mengetik kata sandi, yang akan gagal.
Sumber: Scripting dengan udev
Catatan: Anda dapat menemukan unit perangkat Anda dengan:systemctl list-units -t mount
systemctl enable your.service
. File skrip harus dapat dieksekusi.Requires=
,After=
danWantedBy=
garis-garis baik denganmedia-bb.mount
danmedia-BB.mount
karena Nautilus menunjukkan saya volume sebagai "BB", bukan "bb". Pesan kesalahan yang sama, kecuali untuk kapitalisasi. Apa yang salah? Apakah saya harus membuatmedia-<something>.mount
layanan itu?Mulailah dengan menemukan perangkat Anda
lsusb
. Catat ID (mis.0a81:0101
)Buat file aturan udev baru di
/etc/udev/rules.d/
viasudoedit /etc/udev/rules.d/100-mount-videos.rules
dan plonk aturan baru di sana seperti ini:Perhatikan bagaimana saya menggunakan ID dari
lsusb
.Maka Anda hanya perlu menulis skrip untuk melakukan pekerjaan. Perintah mount sederhana harus bekerja. Anda mungkin memerlukan
sleep 5
perintah di sana untuk menunggu inisialisasi sistem file (jika Anda membiarkan gnome untuk melakukan pemasangan utama - tetapi Anda bebas untuk memasangnya terlebih dahulu dan kemudian Anda mungkin tidak perlu tidur).Tambahan dari Allan: Skrip yang berjalan lama mungkin memblokir "semua acara lebih lanjut untuk ini atau perangkat yang tergantung". Halaman buku Mint saya lebih lanjut menyatakan "Tugas yang sudah berjalan lama harus segera dilepaskan dari proses acara itu sendiri." Tidak ada tip yang diberikan tentang tempat untuk mendapatkan keterampilan untuk melakukan ini.
Balas dari Oli: Bungkus seperti ini: https://askubuntu.com/a/106359/449
sumber
/root/
atau di suatu tempat di mana hanya root yang dapat mengeditnya.Cara lain untuk mendapatkan nilai untuk ATTRS {idVendor} dan ATTRS {idProduct} (diuji di Ubuntu 12.04) adalah:
Temukan di mana usb Anda terpasang:
ini menunjukkan sesuatu seperti berikut:
Gunakan udevadm untuk mendapatkan info perangkat itu:
outputnya harus seperti:
Sekarang gunakan id model untuk ATTRS {idProduct} dan id vendor untuk ATTRS {idVendor}
sumber
Dalam Nautilus di bawah Edit> Preferensi> Media Anda dapat memilih "tindakan lain" dan daripada "perintah costum". untuk berbagai jenis media yang akan dieksekusi. Pada saat itu, drive usb sudah terpasang, tetapi saya kira Anda masih bisa menautkannya (dengan perintah costum) ke folder tempat Anda ingin drive tersebut muncul. Saya tidak tahu apakah ini lebih mudah atau lebih baik daripada menggunakan udev.
sumber
Jika Anda tidak ingin mengganggu kontrol filemanager Anda (nautilus, konquerer, gnome, dll.) Atas pemasangan dan pelepasan perangkat Anda, saya sarankan untuk tidak pergi ke rute udev.
Alih-alih, gunakan udisks-lem jika sistem Anda menggunakan udisks (hampir semuanya).
Setelah menginstal, cukup buat file config
~/.udisks-glue.conf
di direktori home Anda seperti ini.Contoh berikut saya memperbarui data GPS-Assist di kamera saya setiap kali saya mencolokkan SD-card.
Setelah itu pastikan lem-udisks mulai ketika Anda boot atau masuk. Yaitu melalui aplikasi startup gnome
sumber
gunakan udev
http://archive.atomicmpc.com.au/forums.asp?s=2&c=16&t=4775
sumber
Jawaban @ sumid memiliki masalah. Anda tidak boleh memulai layanan. Anda hanya perlu mengaktifkannya.
mengajukan:
/etc/systemd/system/your.service
Kemudian aktifkan layanan:
Itu saja.
Catatan: Anda dapat menemukan label medial Anda dengan:
sudo systemctl list-units -t mount
Note2: Jika layanan gagal entah bagaimana (misalnya, skrip tidak dapat dieksekusi), titik pemasangan Anda akan berubah ke
<old_mount_point_name>1
waktu berikutnya Anda memasang perangkat usb. Untuk memperbaiki masalah ini, Anda hanya perlu mengeksekusisudo systemctl reset-failed
sumber