2. cvičení
Systém procesů, úvod do shellu (Bash)
- Výpis a ukončení procesů
- Řízení úloh
- Expanze jmen souborů a adresářů
- Přesměrování vstupu a výstupu, roura
Výpis a ukončení procesů
Výpis procesů
// UNIX přepínače, -e
// BSD přepínače, aux
// Vypíše procesy které ovládá terminál
roman@virtual ~ $ ps
// Vypíše procesy vlastněné uživatelem
roman@virtual ~ $ ps x
// Procesy vlastněné uživatelem vyjidacek
roman@virtual ~ $ ps -u vyjidacek
// Procesy vlastněné uživatelem vyjidacek se zobrazenými sloupci pid, s, cmd
roman@virtual ~ $ ps -u vyjidacek -o pid,s,cmd
// Vypíše všechny procesy
roman@virtual ~ $ ps ax/ps -e
// Všechny procesy v užitelsky přívětivém formátu
roman@virtual ~ $ ps aux/ps -ef/ps -eF ()
// Vypíše všechny procesy ve stromové struktuře
roman@virtual ~ $ ps auxf/ps -efH
// Vypíše jen určité sloupce
roman@virtual ~ $ ps axo pid
roman@virtual ~ $ ps -eo pid
// Vypíše proces na základě jména
roman@virtual ~ $ ps -C bash
// Vypíše strom procesu
roman@virtual ~ $ pstree
// Vypíše strom společně s argumenty
roman@virtual ~ $ pstree -a
// Vypíše strom společně s PID
roman@virtual ~ $ pstree -p
Ukončení procesu
// Spustíme libovolný program
roman@virtual ~ $ gedit
// Získáme PID
roman@virtual ~ $ ps x
// Ukončí aplikaci
roman@virtual ~ $ kill pid (TERM)
// Znovu spustíme aplikaci gedit
roman@virtual ~ $ gedit
// Zastaví aplikaci
roman@virtual ~ $ kill -STOP pid
// Probudí aplikaci
roman@virtual ~ $ kill -CONT pid
// Ukončí proces okamžitě
roman@virtual ~ $ kill -KILL pid
// Seznam všech signálů
roman@virtual ~ $ kill -l
// Znovu spustíme aplikaci gedit
roman@virtual ~ $ gedit
// Ukončí všechny instance programu gedit
roman@virtual ~ $ killall gedit
// Ukončí terminál i se všemi potomky
roman@virtual ~ $ kill -KILL pid_terminalu
Řízení úloh
// Spuštění úlohy na pozadí
roman@virtual ~ $ gnome-calculator &
[1] 4468
// Vypíše bežící procesy
roman@virtual ~ $ jobs
[1]+ Running gnome-calculator &
// Vypíše běžící procesy společně s PID
roman@virtual ~ $ jobs -l
[1]+ 4468 Running gnome-calculator &
// Spustíme program gucharmap
roman@virtual ~ $ gucharmap
// Pomocí Ctrl + z jej zastavíme
^Z
[2]+ Stopped gucharmap
// Přenesení na pozadí
roman@virtual ~ $ bg
[2]+ gucharmap &
// Přenesení posledního programu na popředí
roman@virtual ~ $ fg
gucharmap
// Přeneseme gucharmap na pozadí
// Přeneseme gnome-calculator na popředí
roman@virtual ~ $ fg 1
gnome-calculator
// Pomocí Ctrl + c ukončíme gnome-calculator
// Pomocí Ctrl + d ukončíme terminál a gucharmap stále běží
Expanze jmen souborů a adresářů
roman@virtual ~ $ echo ~
/home/roman
roman@virtual ~ $ echo *
Desktop Documents Downloads fontconfig Music passwords
Pictures pokusy Public public_html Templates Videos
roman@virtual ~ $ echo p*
passwords pokusy public_html
roman@virtual ~ $ ls p*
passwords
pokusy:
soubor.txt text.txt
public_html:
index.html
roman@virtual ~ $ echo pokus?
pokusy
roman@virtual ~ $ echo p[a-o]*
passwords pokusy
roman@virtual ~ $ echo \*
*
roman@virtual ~ $ echo '*'
*
roman@virtual ~ $ echo "*"
*
roman@virtual ~ $ echo \'
'
roman@virtual ~ $ echo \\
\
roman@virtual ~ $ echo &
[1] 8389
roman@virtual ~ $ echo \&
&
roman@virtual ~ $ echo a
a
roman@virtual ~ $ echo ' a'
a
Přesměrování vstupu a výstupu
notace | význam |
---|---|
< soubor | standardní vstup je přeměrován ze souboru |
> soubor | standardní výstup je přeměrován do souboru |
2> soubor | standardní chybový výstup je přeměrován do souboru |
&> soubor | oba standardní výstupy jsou přeměrovány do souboru |
>> soubor | standardní výstup je připojen na konec souboru |
2>> soubor | standardní chybový výstup je připojen na konec souboru |
Tabulka byla převzata z [1]
roman@virtual ~ $ cd pokusy/
// Získání obsahu souboru způsobem který už známe
roman@virtual ~/pokusy $ cat text.txt
Hello world!!
// Obsah souboru za pomoci přesměrování vstupu
roman@virtual ~/pokusy $ cat < text.txt
Hello world!!
// Přesměrování výstupu
roman@virtual ~/pokusy $ echo Ahoj > text.txt
roman@virtual ~/pokusy $ cat text.txt
Ahoj
// Přesměrování výstupu na konec souboru
roman@virtual ~/pokusy $ echo Nazdar >> text.txt
roman@virtual ~/pokusy $ cat text.txt
Ahoj
Nazdar
// Presměrování vstupu i výstupu
roman@virtual ~/pokusy $ cat < text.txt > kopie.txt
roman@virtual ~/pokusy $ cat kopie.txt
Ahoj
Nazdar
// Přesměrování vstupu i výstupu do stejného souboru
roman@virtual ~/pokusy $ cat < text.txt > text.txt // text.txt bude prázdný
// Uložení výstupu programu ps do souboru
roman@virtual ~/pokusy $ ps aux > procesy.txt
roman@virtual ~/pokusy $ cat procesy.txt
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 119824 5984 ? Ss 14:16 0:00 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 14:16 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 14:16 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 14:16 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 14:16 0:00 [rcu_sched]
// Roura
roman@virtual ~/pokusy $ ps aux | less
Reference
[1] Vychodil Vilém, Linux: Příručka českého uživatele, ISBN 80–7226–333–1, 260 stran, Compuer Press, Brno, 2003
Úkoly
-
Vytvořte soubor
datum.txt
obsahujicí řádek “datum”. -
Vytvořte soubor
datum2.txt
obsahuji dva řádky. Na prvním je text “Datum:” a na druhém bude aktuální datum. -
Vytvořte soubor s názvem
me.txt
který bude vypadat nasledovně:Domovsky adresar: /home/parallels Obsah domovskeho adresare: total 60 drwxr-xr-x 2 parallels parallels 4096 Jan 24 13:39 Desktop drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Documents drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Downloads -rw-r--r-- 1 parallels parallels 8980 Jan 11 2017 examples.desktop -rw-rw-r-- 1 parallels parallels 0 Feb 26 10:42 gucharmap drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Music drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Pictures drwxrwxr-x 2 parallels parallels 4096 Feb 26 11:05 pokus drwxrwxr-x 2 parallels parallels 4096 Feb 26 10:47 pokus2 drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Public -rw-r--r-- 1 parallels parallels 5357 Feb 26 10:14 q drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Templates drwxr-xr-x 2 parallels parallels 4096 Jan 11 2017 Videos Aktualne bezici procesy USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND paralle+ 2733 0.0 0.4 22368 4876 pts/17 Ss 11:17 0:00 bash
-
Spusťte si v terminálu libovolný proces (například kate) přesunte jej na pozadí. Pak spusťte další program gucharmap a také jej přeneste do pozadí. Následně do souboru jobs.txt vypiště bežící úlohy a ukončete program gedit. Dále přeneste gucharmap do popředí a ukončete terminál ve kterém tento program běží.