Po více než roce vývoje od vydání verze 5.40 byla vydána nová stabilní verze 5.42 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 64 vývojářů. Změněno bylo přibližně 280 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.
Byla vydána nová stabilní verze 7.5 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 138. Přehled novinek i s náhledy v příspěvku na blogu.
Sniffnet je multiplatformní aplikace pro sledování internetového provozu. Ke stažení pro Windows, macOS i Linux. Jedná se o open source software. Zdrojové kódy v programovacím jazyce Rust jsou k dispozici na GitHubu. Vývoj je finančně podporován NLnet Foundation.
Byl vydán Debian Installer Trixie RC 2, tj. druhá RC verze instalátoru Debianu 13 s kódovým názvem Trixie.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za červen (YouTube).
Libreboot (Wikipedie) – svobodný firmware nahrazující proprietární BIOSy, distribuce Corebootu s pravidly pro proprietární bloby – byl vydán ve verzi 25.06 "Luminous Lemon". Přidána byla podpora desek Acer Q45T-AM a Dell Precision T1700 SFF a MT. Současně byl ve verzi 25.06 "Onerous Olive" vydán také Canoeboot, tj. fork Librebootu s ještě přísnějšími pravidly.
Licence GNU GPLv3 o víkendu oslavila 18 let. Oficiálně vyšla 29. června 2007. Při té příležitosti Richard E. Fontana a Bradley M. Kuhn restartovali, oživili a znovu spustili projekt Copyleft-Next s cílem prodiskutovat a navrhnout novou licenci.
Svobodný nemocniční informační systém GNU Health Hospital Information System (HIS) (Wikipedie) byl vydán ve verzi 5.0 (Mastodon).
Open source mapová a navigační aplikace OsmAnd (OpenStreetMap Automated Navigation Directions, Wikipedie, GitHub) oslavila 15 let.
Vývojář Spytihněv, autor počítačové hry Hrot (Wikipedie, ProtonDB), pracuje na nové hře Brno Transit. Jedná se o příběhový psychologický horor o strojvedoucím v zácviku, uvězněném v nejzatuchlejším metru východně od všeho, na čem záleží. Vydání je plánováno na čtvrté čtvrtletí letošního roku.
ps
, který slouží k výpisu (stavu) běžících procesů, a program kill
sloužící k posílání signálů procesům.ps
je příkaz sloužící k výpisu informací o právě běžících procesech v systému. Název vychází z anglického process status, což znamená stav procesu.
Spustíte-li ps
jen tak (bez argumentů), vypíše pouze procesy, které mají stejný ovládací terminál jako daná instance ps
a zároveň stejné efektivní UID.
$ ps PID TTY TIME CMD 6091 pts/5 00:00:06 bash 29766 pts/5 00:00:00 ps
S přepínačem -a vypíše všechny procesy, které mají řídící terminál. Přepínač -A potom vypíše procesy úplně všechny, zrovna tak jako jeho ekvivalent -e. Podrobnější seznam procesů (s více informacemi) program vypíše, předáte-li mu přepínač -f. Pokud je vám i tohle málo, zkuste přidat ještě -l.
# vypíše detailní seznam všech procesů ps -ef # ještě detailnější seznam… ps -elf
Chcete-li vypsat seznam procesů pro dané skupiny či uživatele, potom vám poslouží přepínače -G a -U.
# vypíše seznam procesů skupiny „home“ ps -G home # vypíše detailní seznam procesů uživatele „dave“ ps -flU dave
ps
umožňuje sestavení vlastního formátu výpisu informací pomocí přepínače -o, tak to zkusme:
# vypíše seznam všech procesů a od každého procesu # UID, PID, využití RAM (RSS) a název příkazu (CMD) ps -Ao "uid pid rss cmd" # pokud se vám nelíbí hlavička, kterou ps na začátku # vypisuje, zadejte vlastní popisky ps -Ao "uid=Uživatel pid=Proces rss=RAM cmd=Příkaz" # pokud váš popisek obsahuje mezery, zadejte -o vícekrát ps -A -o "user=Uživatelské jméno" -o pid="Číslo procesu (PID)"
Kompletní seznam informací, které si můžete nechat vypsat, a jejich zkratky naleznete v manuálu. Můžete si nechat vypsat pouze zadaná UID:
ps -fl 1 2 F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 – 974 ? 03:35 ? 0:00 init [3] 1 S root 2 0 0 80 0 – 0 ? 03:35 ? 0:00 [kthreadd]
Doteď jsem popisoval verzi dle standardu, ovšem na GNU/Linuxu se obvykle setkáte s verzí z balíku procps
a BSD systémy mají také vlastní implementaci. Tyto implementace obsahují ještě další vymoženosti. Například podporují několik „přepínačů“, které nezačínají znakem „-“.
# vypíše seznam všech procesů (s více informacemi než -ef, ale méně než -el) ps axu # zajistí, aby se vypsal kompletní název příkazu i s argumenty ps axuww # přepínač „f“ slouží s výpisu stromu procesů ps faxu
Příkaz ps
se často používá v kombinaci s programem grep. Tato kombinace totiž umožňuje rychle zjistit, zda na systému běží určitý proces.
ps ax | grep lighttpd
Podobný příkaz na Windows je tasklist
, případně v PowerShellu je přímo alias ps
, který volá Get-Process.
kill
je nástroj sloužící k poslání signálu daným PID. Název programu je anglické slovo, které znamená „zabít“ (proces). V tomto kontextu je to myšleno jako „nuceně ukončit“ proces, což dělá pouze jeden ze signálů, které kill
může vyslat.
Signály jsou prostředek k jednoduché komunikaci mezi procesy na unixových systémech. Každému procesu lze poslat signál, přičemž máme-li dostatečné oprávnění, proces na něj zareaguje. Pomocí signálů lze proces ukončit, pozastavit, přerušit, atd. Ovšem signál může vyvolat i jinou akci – programátoři mají možnost signály ve svých programech obsluhovat nebo ignorovat. Například když programu přijde signál 15 (tj. TERM – ukončit), tak lze naprogramovat to, aby se nejdříve uložila načatá práce a teprve potom se program ukončil.
Jak jsem naznačil, signály mají přiřazená čísla i názvy. Signály jsme si kdysi pojmenovali nejen proto, abychom si nemuseli pamatovat čísla, ale také proto, že čísla se na různých systémech mohou lišit. Vyjmenujeme a popíšeme si několik používanějších signálů.
Číslo | Název | Zjednodušený popis |
1 | HUP (Hangup) | Tento signál proces obdrží tehdy, když je uzavřen jeho řídící terminál. |
2 | INT (Interrupt) | Toto je signál, který proces obdrží, když běží v terminálu a uživatel stiskne Ctrl+C. Obvykle ukončí proces. |
3 | QUIT | Ukončí proces a zapíše stav paměti, se kterou program pracoval (tzv. core dump). |
4 | ILL (Illegal instruction) | Tento signál posílá operační systém, když proces vyvolá neznámou instrukci. |
8 | FPE (Floating point exception) | Tímto signálem jádro trestá programy, které se snaží dělit nulou, atp. |
9 | KILL (Kill) | „Zabije“ proces (okamžitě). Nelze obejít. |
10 | USR1 (User-defined) | Uživatelsky definovaný signál. |
11 | SEGV (Segmentation fault) | Obvykle posílá operační systém programům, které chybně pracují s pamětí. |
15 | TERM (Terminate) | Ukončí proces. |
19 | STOP | Zastaví proces. Nelze obejít. |
20 | TSTP (Terminal stop) | Zastaví proces, ale lze obejít. Tento signál proces obdrží, když běží interaktivně v shellu a uživatel stiskne Ctrl+Z. |
18 | CONT (Continue) | Obnoví běh procesu po obdržení některého ze dvou předchozích signálů. |
Názvy signálů vždy začínají řetězcem „SIG“ (jako signál), takže chceme-li ukončit proces signálem, tak říkáme, že mu posíláme SIGTERM.
Nyní k samotnému programu kill
. Spustíme-li jej s přepínačem „-l“, vypíše všechny signály podporované danou implementací.
$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
Zadáme-li přepínači „-l“ jako argument celé nezáporné číslo, vrátí nám odpovídající název signálu. Zadáme-li jako argument název signálu (bez „SIG“), vrátí nám odpovídající číslo.
$ kill -l 1 HUP $ kill -l TRAP 5
Když programu předáme přepínač -s s číslem nebo názvem signálu a za něj přidáme jedno nebo více PID, kill
pošle daným PID daný signál. Totéž se stane, když místo přepínače -s zadáme číslo nebo název signálu rovnou za pomlčku.
# pošle signál SIGHUP procesu s PID 1 (tj. init) kill -s HUP 1 # totéž kill -HUP 1 # totéž kill -1 1
Podobná, ale nestandardní utilita killall
(z balíku psmisc
) slouží k témuž účelu jako kill
, ale místo PID jí předáváme název programu, kterému chceme poslat signál. Pozor, běží-li více instancí programu, signál se pošle všem, ke kterým máme příslušná oprávnění.
# zabije všechny instance programu "firefox" killall -s 9 firefox
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
ps -A | grep lighttpd
ps axu | grep proceskdyž chci vidět i jméno uživatele, s jehož právy proces běží.
pgrep
?
Tímto signálem jádro trestá programy, které se snaží dělit nulou, atp.:)
pstree
nebo ps fax
.
pgrep -P X
ps
) podívat a dát v ní vyhledat "PPID"? Nebylo by to jednodušší a rychlejší než psát dotaz?