Portál AbcLinuxu, 30. dubna 2025 15:27
checkrestart
?
checkrestart
nikdy neslyšel, takže děkuji. Určitě se na něj podívám, zkusím prozkoumat, jak to řeší oni.
Potom, BP pochází z RedHatu a jejich požadavkem bylo, aby ten nástroj byl funkční i na Fedoře. Což checkrestart
nejspíš nesplňuje.
PS: Zrovna jsem to nainstaloval, vyzkoušel a subjektivně si myslím, že nemají příliš user-friendly výstup.
...v kvetnu jsem v nem opravovalo...Melo to byt "v kvetu se v nem opravovalo...", ja sam je neopravoval, jen jsem na jednu z nich narazil.
needs-restarting
vím. Jako problém vidím to, že není user-friendly (stejně tak jako checkrestart
pro debian, zmíněný výše. Už jen první pohled
[frostyx@localhost ~]$ sudo needs-restarting 1385 : gvim -f 961 : xfce4-terminal --geometry=80x24 --display :0.0 --role=xfce4-terminal-1404752667-2093205702 --show-menubar --show-borders --hide-toolbar --working-directory /home/frostyx --window --geometry=135x32 --display :0.0 --role=xfce4-terminal-1404680775--1537418211 --show-menubar --show-borders --hide-toolbar --working-directory /home/frostyx/dotfiles --tab --working-directory /home/frostyx/dotfiles/.vim/bundle/YouCompleteMe --sm-client-id 2163acf15-c689-4f32-b713-6d1b1c824234Oproti
[frostyx@localhost ~]$ sudo tracer gvim xfce4-terminalNavíc tracer umožňuje definovat pravidla pro konkrétní procesy. Takže mu můžu říci, že mě s nějakými polkit, udisks a gvfs procesy nemá otravovat, protože je stejně nemůžu restartovat. To je samozřejmě řízeno daty, takže v současné době existuje systémový soubor, který bude brzy obohacen o uživatelsky definovaný soubor někde v /etc případně /home. Taky si hlídám to, že nějaký proces spustil jiný a měl by být restartován za pomocí toho nadřazeného. Například jsem aktualizoval flash player, tak nechci aby se vypsal flash player, protože je ve skutečnosti potřeba restartovat chromium, aby se změna projevila.
Na openSUSE je 'zypper ps', který vypíše seznam programů a knihoven, jež se dotkl upgrade/dist-upgrade a je dobré je restartovat.
Manjaro (Archlinux)
, tak nemůžu ozkoušet, ale co pro tento proces:
/usr/bin/python2 /usr/share/system-config-printer/applet.py
upozorní mě to při povýšení system-config-printer
, že mám restartovat system-config-printer-applet
?
Pokud je některá z knihoven, nebo samotná aplikace po dobu jejího běhu aktualizována...
Eeeee?
Když spustíme aplikaci, do paměti se načtou knihovny a soubory potřebné k jejímu běhu. Pokud je některá z knihoven, nebo samotná aplikace po dobu jejího běhu aktualizována, ...Po dobu běhu té aplikace ... nevím, mě to zní normálně. Je to špatně?
Pokud jsou soubory některé z knihoven nebo samotné aplikace po dobu jejího běhu aktualizovány, ...Jde o to, že ty staré soubory mohou stále být na disku dokud jsou otevřené (platí automaticky pro binárku i knihovny běžícího procesu), protože soubor je smazaný až tehdy, když počet referencí na něj klesne na nulu. Běžící proces může s takovým souborem víceméně normálně pracovat, ale pro ostatní procesy je normálnímy prostředky nedostupný. PS: Je možné udělat takovýto program i bez podpory balíčkovacího systému, pokud by prolezl všechny procesy v
/proc
a kouknul se, jesli některý nemá smazanou binárku nebo knihovnu (skrz soubor exe
a maps
), případně jestli nedrží otevřené soubory, které jsou smazané (symlinky v adresáři fd
). Jen je třeba dát pozor na vlákna jádra, protože ty žádnou binárku nemají, ale není problém je poznat, protože nemají nic namapovaného a nemají nastavené prostředí. Jediná nevýhoda by byla, že by vypsal jen procesy, ale ne aplikace/služby. nicméně pokročilému uživateli by to nejspíš nevadilo ...
Jde o to, že ty staré soubory mohou stále být na disku dokud jsou otevřené (platí automaticky pro binárku i knihovny běžícího procesu), protože soubor je smazaný až tehdy, když počet referencí na něj klesne na nulu. Běžící proces může s takovým souborem víceméně normálně pracovat, ale pro ostatní procesy je normálnímy prostředky nedostupný.Já myslel, že ten proces má všechny soubory potřebné k běhu načtené v paměti a přistupuje k nim do paměti, ne na disk. Z hlediska implementace na tom stejně nezáleží, ale až budu psát dokumentaci k BP, tak si k tomu rozhodně něco přečtu, ať tam nenapíšu hlouposti. Díky.
Je možné udělat takovýto program i bez podpory balíčkovacího systému, pokud by prolezl všechny procesy v /proc a kouknul se, jesli některý nemá smazanou binárku nebo knihovnuTakže vlastně
lsof |grep deleted
, najít cesty do souborového systému a ty procesy vypsat? To zní až moc jednoduše IMHO bude potřeba zkombinovat oba přístupy – předmětem aktualizace můžou být i datové soubory nebo třeba skript, který se jednou načte a pak už se jako otevřený soubor nedrží.
alias vyhnite='lsof | grep '\''DEL.*lib'\'' | cut -f 1 -d '\'' '\'' | sort -u'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.