Tak doufám, že to nakonec povede ke zautomatizování celé záležitosti, protože já nejsem na takové úrovni, abych se hrabal v procesech a popravdě řečeno ani nechci. Nemám na to čas, chci prostě pracovat, ne štelovat. Jiné systémy takhle taky fungují.
jo? a ktere? treba XP? kdyz mas v pruzkumnikovi otevreno neco z flashky tak ji taky neodpojis…
To mate asi tak:
1.nefunguje odpojeni USB disku ve widlich, tak si s tim bude hrat do zblbnuti pripadne se pusti do reinstalace.
2. nefunguje odpojeni USB disku v linuxu ktery si nainstaloval pred 10 minutami, tak se pusti do formatovani disku a odstranovani linuxu.
MSfans nemaji soudnost.
Vo Viste nemusim mat nic nikde otvorene a aj tak mi obcas odmietne odpojit ext. disk.
Jo to sem si taky vsim :). Pokud je na disku NTFS, tak si Visty otevrou jurnal a clovek nema sanci bez restartu ten disk odpojit (myslim SW ovsem… kabel de vytrhnout vzdycky :) ).
ja chci a chci a chci a tak to vsichni musite udelat, jinak …
jo, tahle argumentace mi pripomina 4leteho synovce.
jo, ale lepsi je prvne zkouset jen force a pak lazy, kdyz ani force nepomuze
zase ti ale vzniknou chciply procesy, ne?
Moc problemu jsem s tim zatim nemel. Vetsinou takhle odpojuju jenom pripojene sshfs. Problem vznikne (alespon co vim) kdyz „chcipne“ program, ktery dane umisteni pak nadale blokuje. Stane se z nej pak zombie, ktera visi na nedokoncene IO operaci. Nevim presne, jak to funguje, ale kdyz jsem naposled takovou zombie proste ignoroval, tak po nejakem timeoutu ji system sam zlikvidoval… ;-) (ale mozna, ze si to jen namlouvam).
Proč tak komplikovaně. Něco takového pomůže prakticky vždy:
#!/bin/sh VOLUME="$1" # Pošli TERM blokujícím aplikacím. fuser -mk -TERM "/media/$VOLUME" # Dej čas na korektní ukončení. sleep 3 # Zlikviduj zbytek pomocí -KILL fuser -mk "/media/$VOLUME" # Odpoj zařízení if ! umount "/media/$VOLUME" ; then # A pokud zůstal nějaký proces zamčený v kernelu, udělej lazy umount. umount -l "/media/$VOLUME" fi
To je ovšem bomba, když tam bude nějaký zapomenutý proces, ve kterém máte neuložená data, tak si ho sejmete.
Skript pouštím, když chci médium odpojit, ne když na něm mám něco otevřeného.
Takový zapomenutý proces má prostě smůlu. Nemá co sahat na disk, který chci právě odpojit. Stejně to je většinou jen mc (ten to dělá často), zapomenutý shell nebo nějaký prohledávací démon.
Na každodenní používání je lepší desktopové odpojování nebo obyčejný umount. Toto je poslední záchrana, když se nechci zabývat, který z 10 puštěných mc je ten, co stojí v adresáři na flashce.
> Takový zapomenutý proces má prostě smůlu
To je pěkné, ale až si pustíte (třeba omylem) z toho mc nebo shellu openoffice nebo gimp, a třeba jimi pak budete editovat něco na disku, budete mít tu smůlu spíš vy.
Ne, kdyz to odpojim normalne, tak mi to nedovoli, takze ochrana tam je.
Pokud uz neco sestreluju, tak predpokladam, ze jsem inteligentni a vim co delam.
V opacnem pripade at uzivatel pouziva psaci stroj a ne tak komplexni vec jako PC.
> tak predpokladam, ze jsem inteligentni a vim co delam.
No, kropit procesy po dávkách bez toho, abych věděl, na které mířím, se s inteligencí skoro až vylučuje.
Pokud mám jakoukoliv pochybnost, tak si ten fuser -mv /media/něco pustím předem.
Také by se dal připsat do skriptu, a pak se zeptat.
Taky už se mi stalo :) .. konkrétně šlo o jackd, ale stávalo se to i jiným procesům. V dmesg nic zajímavého, dodnes nevím, co brání kernelu prostě zastavit přidělování CPU time danému procesu a uvolnit místo v paměti.
Ohledně mountu – nikdy jsem nepochopil, proč rm -rf /* jde tak snadno, ale věci jako umount (třeba NFS – dříve, teď už to jde) tak spolehlivé nejsou. Co když mě absolutně nezajímá, že je tam nějaký file deskriptor otevřený, že po super-force-unmountu ten process asi segfaultí nebo dostane I/O error (read/write vrátí –1), proč sakra nejde svazek odpojit.
Asi to bude filesystémem a nějakou souvislostí mezi fd a ním, nevím. Jen mi připadne, že přístup „neunmountneme to za žádnou cenu, protože nějaký směšný userspace process to využívá“ je stejně nesmyslné jako „nedovolíme to remountnout readonly, protože by to mohlo ublížit nějakému procesu“ (kde musím remount vynutit přes sysrq nebo vyvoláním chyby na filesystému), což mi přijde stejně, s prominutím, dementní, jako windows-like „soubor nemůže být smazán, protože jej něco využívá“.
Varování je dobré, ale neschopnost –force parametru ne ..
…prostě to neumíte a svádíte to na to že to je windows-like :)
Linux je jen tak dobry nebo debilni jaky lidi ho spravujou a vytvari... Kdyz ho vytvari lidi s pristupem ktery mate vy, pak by se nebylo opravdu cemu divit. Ale vy nejspis o Linuxu lautr hovno vite, tak jen melete.
Žádný takový neexistuje. SIGKILL nelze odchytávat, maskovat nebo ignorovat. Pokud proces v okamžiku signálu čekal v kernelu, stane se z něj zombie. Jedinou cestou k odpojení je pak potřeba lazy umount.
No me prijde „nejde zabit“ a „stane se z nej zombie“ jako jedno a to samy :).
Ale dik za odpoved, lazy umount sem neznal…
Pokud se z procesu stane zombie, tak už proces jako takový neexistuje, takže to není moc podobné „procesu který nejde zabít“, protože ten proces už byl zabit, akorát ve výpisu procesů ho ještě vidíte a navenek to pro uživatele „vypadá jako proces“.
Diky, sem zase chytrejsi. A kdyz se ten neexistujici proces jevi pro uzivatele jako proces, jak se jevi pro umount?