C2110 Operační systém UNIX a základy programování 5. lekce -1C2110 Operační systém UNIX a základy programování Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská 2, CZ-61137 Brno CZ.1.07/2.2.00/15.0233 5. lekce C2110 Operační systém UNIX a základy programování 5. lekce -2- Obsah  Průběžný test  Textové editory • vi, vim, nano • grafické textové editory (kwrite, gedit, kate)  Procesy II • příkazy • spouštění příkazů a aplikací • ukončovaní příkazů a aplikací C2110 Operační systém UNIX a základy programování 5. lekce -3Průběžný test I C2110 Operační systém UNIX a základy programování 5. lekce -4Průběžný test I  Test prostřednictvím odpovědníku v IS Student – Odpovědníky – C2110 – Průběžný test I Délka 20 minut. Je možné sestavit pouze jednu sadu otázek. Používejte průběžné uložení. Vyhodnocení je možné pouze jednou. Je povoleno a doporučeno: • Testovat příkazy v terminálu. • Prohledávat manuálové stránky, svoje zápisky a prezentace předmětu. • Při nejasnostech se přihlaste. Není povoleno • Komunikovat s další osobou mimo vyučujícího. C2110 Operační systém UNIX a základy programování 5. lekce -5Textové editory  vi, vim, nano  grafické textové editory (kwrite, gedit, kate) C2110 Operační systém UNIX a základy programování 5. lekce -6vi/vim, nano Editor vi / vim je standardním textovým editorem v operačních systémech UNIXového typu. Pracuje pouze v textovém módu a jeho používání je netriviální. • Je vhodné se naučit, jak otevřít soubor, přejít do editačního módu, upravovat text, uložit provedené změny a editor ukončit. • Umožňuje skriptování (použití proměnných, cyklů, polí, asociativních polí) např. pro vytvoření automatických textů z načtených dat. • Přestože v učebně budete spouštět příkaz vi, automaticky se spustí program vim (Vi IMporoved) • Mezi původním vi a vim je rozdíl v ovládání. Editor nano je výchozím textovým editor v některých distribucích (UBUNTU). • Méně univerzální než vim • Přímočařejší ovládání C2110 Operační systém UNIX a základy programování 5. lekce -7vi – základy Pracovní módy editoru rozšířený příkazový mód příkazový mód vkládací mód EscEnter a, c, i, o, s, A, C, I, O, R, S: Změny souboru i text bude vkládán od pozice kurzoru a text bude vkládán za pozici kurzoru Spuštění editoru Ukončení editoru $ vi start editoru $ vi filename start editoru a otevření souboru filename :q ukončení editoru :q! ukončení editoru bez uložení změn :w uložení souboru :w filename uložení souboru po jménem filename :wq ukončení s uložením souboru C2110 Operační systém UNIX a základy programování 5. lekce -8- nano Přímočařejší ovládání – menu v dolní části napovídá možné akci. Pro volbu akce slouží kombinace nebo samostatná písmena ^písmeno – např. ^X je kombinace Ctrl + X M-písmeno – např. M-M je kombinace Alt+M Spuštění editoru $ nano start editoru $ nano filename start editoru a otevření souboru filename C2110 Operační systém UNIX a základy programování 5. lekce -9- kwrite Rozšířená funkcionalita: kate C2110 Operační systém UNIX a základy programování 5. lekce -10- gedit C2110 Operační systém UNIX a základy programování 5. lekce -11- Cvičení 1. V editoru vi napište text, který bude obsahovat deset řádků. Na každém řádku budou dvě a více slov. Text uložte do souboru mojedata.txt 2. Příkazem wc ověřte, že soubor mojedata.txt má skutečně deset řádků. 3. Za použití rour(y) napište sekvenci příkazů, které na obrazovku vypíší pouze počet slov v souboru mojedata.txt 4. V grafickém textovém editoru (dle vašeho výběru) vytvořte soubor, který bude obsahovat deset slov, každé slovo na novém řádku. Text uložte do souboru druha_data.txt 5. Pomocí příkazu paste vytvořte soubor vsechna_data.txt , který bude obsahovat obsah souborů mojedata.txt a druha_data.txt vedle sebe. 6. Příkazem wc ověřte, že soubor vsechna_data.txt obsahuje právě deset řádků. 7. Soubor vsechna_data.txt otevřete v grafickém textovém editoru a jeho obsah ověřte vizuálně. 8. Otevřete soubor vsechna_data.txt v editoru nano a uložte pod jiným názvem ve formátu mac. Analyzujte oba soubory příkazem wc a vypište jejich obsah příkazem cat. Čím se liší vytvořený soubor od původního? C2110 Operační systém UNIX a základy programování 5. lekce -12Procesy II  příkazy  spouštění úloh  ukončovaní úloh C2110 Operační systém UNIX a základy programování 5. lekce -13- Příkazy top průběžně zobrazuje procesy setříděné podle zátěže procesoru (ukončení klávesou q) ps vypíše procesy běžící v daném terminálu nebo podle zadaných specifikací (ps -u user_name) pstree vypíše procesy (stromový výpis) kill zašle signál procesu, lze použít k ukončení problematických programů nohup spustí proces bez interakce s terminálem sleep spustí proces , který čeká po zadanou dobu wait čeká na dokončení procesů na pozadí time vypíše délku běhu procesu ssh spustí příkaz na vzdáleném počítači jobs vypíše procesy na pozadí fg převede proces do popředí bg převede proces do pozadí disown odpojí proces od terminálu C2110 Operační systém UNIX a základy programování 5. lekce -14Spouštění příkazů a aplikací Příkazy a systémové aplikace Uživatelské programy a skripty $ ls -l $ cp soubor.txt soubor1.txt $ ./muj_script $ ~/bin/my_application Spouštění aplikací na pozadí Zrušení výpisu do terminálu $ kwrite &> /dev/null zadáváme pouze jméno příkazu nebo aplikace jméno programu nebo skriptu udáváme včetně cesty (absolutní nebo relativní) příkaz argumenty příkazu (mění chování příkazu nebo tvoří vstupní informace pro zpracování) přesměrování výstupu uvádíme na konec příkazu (za argumenty) $ gimp & na konec (za argumenty a přesměrování) příkazu uvedeme ampersand C2110 Operační systém UNIX a základy programování 5. lekce -15Spouštění příkazů a aplikací, II Terminál (užitečné klávesové zkratky): Ctrl+C běžícímu procesu zašle signál SIGINT (Interrupt), proces je ve většině případů násilně ukončen Ctrl+D zavře vstupní proud spuštěného procesu Ctrl+Z pozastaví běh procesu, další osud procesu lze kontrolovat pomoci příkazů bg, fg, disown Kde se nachází systémový příkaz: type vypíše cestu k systémovému příkazu nebo programu Příklady: $ type ls ls is /bin/ls $ type pwd pwd is a shell builtin příkaz pwd je implementován jako vnitřní příkaz shellu C2110 Operační systém UNIX a základy programování 5. lekce -16- Příklady $ ps -u kulhanek PID TTY TIME CMD ... 5440 pts/8 00:00:00 bash 5562 pts/8 00:00:00 kwrite 5566 pts/8 00:00:00 ps $ kill 5562 # ukončí aplikaci kwrite $ kwrite # spustí aplikaci kwrite na popředí ^Z # pozastaví aplikaci [1]+ Stopped kwrite $ jobs # vypíše aplikace na pozadí nebo # pozastavené aplikace [1]+ Stopped kwrite $ bg 1 # pozastavenou aplikaci 1 spustí na pozadí [1]+ kwrite & $ jobs [1]+ Running kwrite & C2110 Operační systém UNIX a základy programování 5. lekce -17- Cvičení 1. Prakticky si vyzkoušejte příklady uvedené na předchozí stránce. 2. Změřte délku běhu procesu sleep 0.003, jak dlouho program běží? Proveďte celou řadu experimentů s různou hodnotou času v rozmezí od 0.0001 do 10 sekund. Zdůvodněte pozorované rozpory pro malé hodnoty času. 3. Zjistěte jméno procesu s číslem 1, jaký uživatel je jeho vlastníkem? 4. Zkuste tento proces ukončit. Z jakého důvodu není operace povolena? 5. Spusťte program VMD. Jaký má jeho proces PID? Program násilně ukončete příkazem kill.