usb bellek çıkartıldığında bilgisayarın kapanmasını istiyorum.

Başlatan ampirist, 07 Şubat 2020 - 22:27:23

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ampirist

usb bellek çıkartıldığında bilgisayarın kapanmasını istiyorum.
Örnek bash  kodu  yazabilir misiniz?

mimiksiz

usb bellek takılı değilse mesaj gösterip çıkar.
0'dan fazla usb bellek takılı ise takılı usb bellek sayısı 1 azalınca bilgisayar kapanır.

#!/bin/bash
plugged_disk_count=$(lsblk -o type,name,hotplug|grep disk|grep 1$|cut -d\  -f2|wc -l)
[ $plugged_disk_count -eq 0 ] && echo "usb takılı değildi." && exit 1 || bayrak=$((plugged_disk_count-1))
while [ $(lsblk -o type,name,hotplug|grep disk|grep 1$|cut -d\  -f2|wc -l) -gt $bayrak ]
do
# bu döngü takılı usb bellek adedinin azalmadığı sürece çalışır.
sleep 0.5
done
systemctl poweroff # kapatma komutu

Çalıştırmak için

chmod +x betik-adı.sh
sudo /konum/./betik-adı.sh #dmesg veya systemctl komutları için yönetici izni gerekebilir.

mhmtkrktr

[mention=651420]@ampirist[/mention]
Bunu yazarken amacın da ne olduğunu biraz bilmek gerekiyor.
Kısa süreli çalıştırmalar da @mimiksiz'in verdiği gibi veya herhangi bir betik belki ihtiyacını karşılayabilir fakat içinde ki döngüden dolayı bu, uzun vadede sistemin şişmesine sebep olacaktır.
Bu konuda en ideal çözüm Udev kuralı oluşturmak veya mevcut kuralı düzenlemek olacaktır sanıyorum.
https://wiki.archlinux.org/index.php/Udev

Senin sorunla ilgisi yok belki fakat ihtiyaca göre tersten de düşünülebilir. Usb belleği takmadan bilgisayar çalışmasın gibi.
Bunun için sistemi kurarken /boot bölümünü usb bellekte +-200 MB bir alan oluşturup, onun içine kurmak yeterli olur.
Bu durumda sadece bellek takılıyken bilgisayar açılabilir. Fakat açıldıktan sonra belleği söksen de, tekrar başlatana kadar çalışmaya devam eder.
( boot içinde ki dosyalar sadece, işletim sistemi başlarken kullanılır )