Portál AbcLinuxu, 7. května 2025 01:01
Řešení dotazu:
/etc/resolv.conf
napíšeš 127.0.0.1
.
journalctl --vacuum-time=1d
a smazalo to logy asi od T-15 hodin, takže jsem přišel i o část dne, co jsem chtěl zachovat.
Další problém systemd-journald je, že je úplně absurdně velký a pomalý. Zkus si třeba journalctl | wc -c
(na náhodně zvoleném počítači mi to teď vypíše 29 milionů) a du -sh /var/log/journal/
(152 MB). Čili ty slavné binární logy, u kterých se jako jedna z výhod uváděla velikost, ve skutečnosti zabírají 5x víc než textové, a to ještě nemluvím o možnosti textové gzipovat (tam pak ten poměr vychází někdy i 100x!). Stejně tak s pomalostí: napíšeš journalctl
(nebo journalctl -u unita
), zmáčkneš End protože tě zajímají poslední, a pokud je tam více než blbých ~20k řádek (podle výkonu počítače), tak čekáš. Když to je v textovém souboru, tak less
provede seek na konec klidně gigabajtového souboru a zobrazí poslední řádky okamžitě.
S tím souvisí nedostatek základního toolingu - třeba i debilního prohlížítka. Když otevřu less /var/log/syslog
a zmáčknu End, tak to dojede na konec. Když pak zmáčknu znova End (nebo snad i PageDown), tak to konec přenačte a ukáže mi to nové řádky. Nebo můžu zmáčknout F (follow, podobné jako tail -f) a ten less
začne nové řádky automaticky scrollovat. Přitom ale stále můžu pomocí Page nebo šipek listovat, tj. není to ekvivalentní s journalctl -f
, který jenom vytiskne posledních N řádek bez pageru.
Další nesplněné volební sliby o snazší archivaci a dalších věcech snad ani nemá cenu zmiňovat (extrahovat podžurnál pořádně nejde a není pořádně čím prohlížet).
Vůbec nechápu, kdo tohle proboha navrhoval a programoval, a jestli to ti tvůrci používají - vždyť z toho musí naprosto vylítnout z kůže. Já když jsme v našem stacku měli podobná vysírátka, tak mě to vždycky tak vytočilo, že jsem se pak jednou zavřel a několik dní jsem to zbytku týmu celé fixoval, aby to šlo používat. To ti lidi nepoužívají less? Jak se má journal používat, abych docílil výše uvedených věcí? Nebo lidi už lokální logy vůbec nečtou, všichni mají nějaké buzzwordy ELK, a čtou si to v tom?
Za mě by mnohem použitelnější bylo logovat do textových souborů, co unita to soubor(!), a toto rotovat logrotate. Asi někdy doladím nastavení aby to přesně tohle dělalo, nebo nevím…
/etc/rc.local
má defaultně nulový (nekonečný) timeout. Jenže dokud nedoběhne, tak to nespustí getty. Takže když v něm (nebo libovolné jiné službě, která musí naběhnout před targetem, který spouští getty) uděláte omylem nekonečnou smyčku, tak už se do systému nikdy nepřihlásíte. Nepodařilo se mi zjistit, jak udělat, aby se getty spustilo dříve.
Když už jsme u toho failování na základě selhaných FS, co jsem psal výše: taky jsem až udeřením reality zjistil, že nofail ve fstabu není nofail, unity furt mají depencence na tmp.mount atd. a když to selže tak nenaběhnou. Navíc to říká jenom "Dependency failed for OpenVPN tunnel" a ne která dependency, člověk musí mít doktorát ze systemd a vědět že má udělat systemctl list-dependencies openvpn-client
.
Další zábavu s mountováním jsem řešil tady. Vypadá to, že v podstatě nejde dělat změna fstabu/mount unit za běhu a následně počkat na reboot aby se to aplikovalo.
systemctl status foo-bar.service
neskutocne dlho.
Aplikacne logy sme potrebovali uchovavat dlhsie (4 tyzdne) a systemove kratsie (2 tyzdne). Nejde to. Teda vraj ano - vytorenim novej instancie journald - dakujem, neprosim.
Skusal som teda logy rotovat na zaklade casu a nie velkosti - nefungovalo - teda chvilu ano a potom si to uz robilo, co chcelo.
Potom som skusal rotovat logy na zaklade casu, ale s obmedzenim velkosti - nefungovalo vobec.
A vzdialene logovanie...? To asi sudruh z M$ v zivote realne nepouzival...
1) Pokud ti nevyhovuje logování systemd, můžeš přeposílat logy jinam a tam si s nimi hrát.Vzpomněl jsem si na video, kde se reportér ptá lidí, co se jim líbí na jejich městské části, na Zličíně mu řeknou, že se jim líbí autobusový terminál s dobrým spojením do celých západních Čech, a reportér odtuší „na Zličíně je nejlepší, že z něj můžete odjet pryč“.
2) "/etc/rc.local" nechápu. Ta unita u mě nikdy neexistovala a vždy jsem si jí vytvářel a pak záleží, jak si jí člověk nastaví.Debian ji má default,
/lib/systemd/system/rc-local.service
.
3) Pokud chci upravovat unity, tak "systemctl edit <service-name>" nebo "systemctl edit --full <service-name>" a neřešit nějakou kopii apod.Tohle nechápu na co reaguje a jak souvisí s tím co píšu.
4) Po úpravě "/etc/fstab" je třeba provést "systemctl daemon-reload", aby se vzalo v potaz nové nastavení. Mně na to můj OS upozorňuje.Ale já jsem řešil přesný opak, že chci při příštím bootu mít /tmp v tmpfs, ale samozřejmě ne teď hned když se staré /tmp používá. Každopádně je dobré že už upozorňuje (mně už také), před 8 lety tomu tak nebylo a pamatuju si, jak jsem narazil na to, že ruční mount namountoval něco podle starého fstabu.
5) nofail = mělo by fungovat, ale jen v případě, že se pro ten mountpoint nevztahují nějaké další dependency, což jsi v tvém případě nesplnil, takže se není čemu divit, že na to systemd upozornil.Cool ale neřeší popsané problémy :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.