Tak už jsem to snad dal dohromady:
https://github.com/RadekRojik/conkysStačí stáhnout archív, rozbalit a spustit
sudo ./install.sh
Na příslušná místa se nakopírují soubory se správnýma právama a pak se načte konfigurace
udev a
systemd. Takže by nemělo být nutné PC restartovat. Odzkoušeno se čtyřma různýma diskama přez USB rozhraní. PATA disky mi
smartctl nechce pobrat. Ale je to možná dané HW bridgema co mám k dispozici. Jinak klasické USB SSD by měli být v poho. Šuplíkové nemám šanci odzkoušet (klidně se může někdo přidat). Pořešil jsem to tak, že na každý připojený disk se spustí obslužný skript. Ten vytvoří v RAM/SWAP
/dev/shm/conkys/pripojeny_disk/ adresář. A v něm tři soubory
PID,
activity a
temp. V PIDu je uložený PID obslužného skriptu. Activity má hodnotu 0|1 podle toho, jestli se disk točí, nebo ne. A v temp je teplota disku. Pokud je disk aktivní, je v něm teplota aktuální. Pokud je ve standby bude tam poslední naměřená teplota kdy byl aktivní. Skript si automaticky zjistí treshold. Při připojení disku projede databázi v
~/.conky/my_conf.conf. Pokud tam není disk zaregistrován, automaticky se zaregistruje. Soubor je popsaný a můžou se parametry pro každý registrovaný disk upravovat. Jak často má proběhnout načtení aktuálních údajů, po jaké době neaktivity se má disk uspat, a jako poslední treshold (na doladění). Pakliže se disk fyzicky odpojí,
udev hned spustí skript který
zabije ten obslužný. Pomocí
trap se smaže celá větev v RAM. V
~/.conky/conkys_data.conf.sh se dá zapnout/vypnout logování (kdy jaký disk se připojil/odpojil, přešel do standby a naopak) a přednastavit pár defaultních hodnot pro ještě neregistrované disky.
Celé to jde jednoduše odinstalovat:
sudo ./install.sh -u
V tomto případě, se všechny skripty/soubory smažou a obnoví se
udev a
systemd do původního stavu.
Celé jsem to odzkoušel na mém laptopu a potomkovo Zotacu. Jsem si vědom omezení jen na disky registrované v
/dev/. Což je ale základní nastavení ubuntu. Ten kdo si disky mapuje podle sebe, si jistě zvládne skripty poupravit.
Napsal jsem to v
bash aby to bylo co nejvíce univerzální. Musím říct, klobouk dolu před lidma, co jsou schopni v tom napsat velké projekty. Za
systemd bych Lennarta nejradši přibil na zeď krovákama. To když zkrátka udev spustí skript, ale systemd ho zabije po cca dvou minutách. To se pak hledá, píšou obslužné podprogramy co kde proč a jak jsem asi pos... A nakonec z logů najít problém.A pak nezbylo nic jiného, než si přečíst těch X stovek řádků dokumentace jak k udev tak potom k systemd. Abych zjistil, že systemd přebral vedení nad udevem v plné míře. Už to bylo dost mrzuté. Našel jsem hack jak to obejít, aby skript běžel dál. Ale bylo by to za cenu, že by si musel uživatel stáhnout další program. Tak jsem napsal pravidla která spouštěla ..... Zkrátka ani tohle
systemd nezvládl pořádně! Spouští se to přez něj a ukončuje na tvrdo po staru. Jinak to nešlo.
Podměty, připomínky, hlášení o funkčnosti ale i o nefunkčnosti vítány.
Ještě chci přidat dvě kolonky do databáze. Jedna na ignorování disku. To třeba když se klíčenka snaží chovat jako disk. A druhá na volné přidání parametrů pro
smartctl. Kdyby měl někdo disk jako @juwa2 a chtěl by ho automaticky umravnit.
EDIT: Poupraveny adresy k aktuálnímu stavu