C2110 Operační systém UNIX a základy programování 6. lekce -1C2110 Operační systém UNIX a základy programování Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno 6. lekce Linux aneb co se nevešlo do úvodu C2110 Operační systém UNIX a základy programování 6. lekce -2- Obsah ➢ Procesy • proces na pozadí a popředí, signály ➢ Souborový systém • kvóty, vyjímatelná media (USB disky), odkazy (links), sshfs ➢ Vzdálený přenos souborů • scp, WinSCP, wget C2110 Operační systém UNIX a základy programování 6. lekce -3- Procesy C2110 Operační systém UNIX a základy programování 6. lekce -4Procesy na popředí a pozadí Spouštění aplikací na popředí Spouštění aplikací na pozadí $ gimp & na konec (za argumenty a přesměrování) příkazu uvedeme ampersand $ gimp procesy běžící na popředí blokují terminál, protože používají jeho standardní vstup a výstup Ctrl+Z pozastaví běh procesu, další osud procesu lze kontrolovat pomoci příkazů: jobs vypíše procesy, které shell spravuje bg přesune proces do pozadí fg přesune proces do popředí disown zruší vazbu procesu na shell (proces není ukončen při ukončení shellu) Terminál (užitečné klávesové zkratky): procesy běžící na pozadí neblokují terminál C2110 Operační systém UNIX a základy programování 6. lekce -5Příklady, Cvičení I $ kwrite # spustí aplikaci kwrite na popředí ^Z # pozastaví aplikaci (Ctrl+Z) [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 & $ fg %1 # aplikaci 1 běžící na pozadí přesune do popředí kwrite # terminál je zablokovaný, nutno použít (Ctrl+Z) Specifikace úlohy: %n nebo %name (někdy stačí i samotné číslo úlohy) číslo nebo jméno z tabulky úloh (jobs) C2110 Operační systém UNIX a základy programování 6. lekce -6Signály a procesy číslo procesu, kterému se má signál zaslat (lze zjistit příkazem ps, top, pstree 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 Příkaz kill: $ kill [–signal] PID specifikace signálu: -N (číslo signálu), -NAME (jméno signálu), -SIGNAME (SIG+jméno signálu) Užitečné signály: TERM 15 žádost o ukončení (proces na signál může reagovat) INT 2 žádost o přerušení (ekvivalent Ctrl+C) (proces na signál může reagovat) KILL 9 ukončení (proces nemůže signál ignorovat, je násilně ukončen) STOP pozastaví proces (proces nemůže signál ignorovat) (ekvivalent Ctrl+Z) CONT obnoví běh pozastaveného procesu (proces nemůže signál ignorovat) C2110 Operační systém UNIX a základy programování 6. lekce -7Příklady, Cvičení II $ 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čí proces kwrite $ kwrite # spustí aplikaci kwrite na popředí [1]+ Stopped kwrite $ ps -u kulhanek PID TTY TIME CMD ... 8401 pts/1 00:00:00 kwrite $ kill –STOP 8401 # pozastaví kwrite jiný terminál C2110 Operační systém UNIX a základy programování 6. lekce -8- Příklady $ time kwrite real 0m3.188s user 0m0.349s sys 0m0.044s $ time sleep 10 real 0m10.002s user 0m0.000s sys 0m0.002s $ time sleep 0.01 real 0m0.012s user 0m0.000s sys 0m0.002s skutečná doba běhu procesu spotřebovaný strojový čas procesem spotřebovaný strojový čas procesem v systémových volání spuštění procesu má určitou režii C2110 Operační systém UNIX a základy programování 6. lekce -9Přehled příkazů 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) type vypíše cestu k standardní aplikaci/příkazu kill zašle signál procesu, lze použít k ukončení problematických programů 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í sleep spustí proces, který čeká po zadanou dobu disown odpojí proces od terminálu nohup spustí proces bez interakce s terminálem (C2115) wait čeká na dokončení procesů na pozadí (C2115) pro pokročilé C2110 Operační systém UNIX a základy programování 6. lekce -10Cvičení III 1. V prvním terminálu spusťte program vmd. 2. V druhém terminálu zobrazte strom procesů (pstree) včetně PID, zjistěte číslo procesu aplikace a pokuste se jej ukončit signály TERM a KILL. 3. Cvičení opakujte s cílem pozastavit běh aplikace signálem STOP. Běh aplikace poté obnovte signálem CONT. 4. Spusťte aplikaci gimp na popředí. Bez jejího ukončení její běh přesuňte do pozadí. C2110 Operační systém UNIX a základy programování 6. lekce -11Souborový systém C2110 Operační systém UNIX a základy programování 6. lekce -12- Kvóty Pro vaše domovské adresáře jsou nastaveny kvóty na využití diskového prostoru na diskovém oddílu wolf.ncbr.muni.cz:/home/. Aktuální stav zaplnění a nastavení kvót lze zjistit příkazem quota: [kulhanek@wolf ~]$ quota -vs Disk quotas for user kulhanek (uid 18773): Filesystem blocks quota limit grace files quota limit wolf.ncbr.muni.cz:/home/ 1550M 1954M 2051M 20453 0 0 Aktuální využití Kvóta, kterou lze dočasně překročit. Tvrdý limit, který již nelze překročit. Překročení kvóty může vést k nefunkčnímu přihlášení pomocí grafického rozhraní. V tomto případě se přihlaste v textovém terminálu (např: Ctrl+Alt+F1) a přesuňte soubory na jiný diskový oddíl (např. dočasně do adresáře /scratch/username nebo smažte nepotřebné soubory). C2110 Operační systém UNIX a základy programování 6. lekce -13Diskové zařízení Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/server1-root ext4 15G 8.4G 5.5G 61% / none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup udev devtmpfs 3.9G 4.0K 3.9G 1% /dev tmpfs tmpfs 793M 888K 792M 1% /run none tmpfs 5.0M 0 5.0M 0% /run/lock none tmpfs 3.9G 952K 3.9G 1% /run/shm none tmpfs 100M 36K 100M 1% /run/user /dev/mapper/server1-vbox ext4 64G 52G 9.5G 85% /win /dev/mapper/server1-scratch ext4 598G 2.8G 565G 1% /scratch wolf.wolf.inet:/software/ncbr nfs4 197G 156G 33G 83% /software/ncbr wolf.wolf.inet:/home/ nfs4 493G 371G 98G 80% /home zařízení typ souborového systému přípojný bod Přehled o využití souborových systémů, o diskových zařízeních a jejich přípojných bodech poskytuje příkaz df. ext3,ext4 third / fourth extended filesystem (nativní souborový systém linuxu) nfs3, nfs4 network filesystem vfat Virtual File Allocation Table (souborový systém používaný MS Windows) ntfs New technology File System (vyvinul Microsoft pro svoje operační systémy) Typy souborových systémů: !!! nejsou case-sensitive!!! – pozor při kopírování souborů lišících se velikostí znaků C2110 Operační systém UNIX a základy programování 6. lekce -14USB disky [kulhanek@wolf01 ~]$ df -Th Filesystem Type Size Used Avail Use% Mounted on ................................................................................ wolf.ncbr.muni.cz:/home nfs4 280G 164G 102G 62% /home /dev/sdg1 vfat 962M 841M 122M 88% /media/kulhanek/B19A-1CA2 USB disky se připojují automaticky v grafickém prostředí do svazku /media/username. [kulhanek@wolf01 ~]$ umount /media/kulhanek/B19A-1CA2 Disk lze odpojit v grafickém prostředí nebo příkazem umount. Argumentem příkazu je přípojný bod zařízení. Disk lze odpojit pouze pokud není využíván (nesmí být otevřen žádný soubor, žádný proces nesmí mít jako pracovní adresář nastaven (pod)adresář z přípojného bodu včetně přípojného bodu). Přehled procesů využívajících daný adresář (přípojný bod) lze získat příkazem lsof (nebo fuser). [kulhanek@wolf01 ~]$ lsof /media/kulhanek/B19A-1CA2/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 31521 kulhanek cwd DIR 8,97 4096 518 /media/kulhanek/B19A-1CA2/GoslarFinal bash 31893 kulhanek cwd DIR 8,97 4096 518 /media/ kulhanek/ B19A-1CA2/GoslarFinal vi 32011 kulhanek cwd DIR 8,97 4096 518 /media/ kulhanek/ B19A-1CA2/GoslarFinal C2110 Operační systém UNIX a základy programování 6. lekce -15Odkazy (links) Odkazy: ➢ Pevné odkazy (hard links) ➢ Symbolické odkazy (soft links) Symbolické odkazy (soft links) lrwxrwxrwx 1 root root 21 Oct 5 21:06 krb5.conf -> /etc/krb5.conf.EINFRA -rw-r--r-- 1 root root 4848 Oct 5 20:37 krb5.conf.EINFRA symbolický odkaz reálný soubor cíl odkazu Vlastnosti symbolických odkazů: • obsahují informace o cestě k cílovému objektu (soubor, adresář, …) • z hlediska systému se chovají jako cílový objekt • přístupová práva se odvozují od cílového objektu • cílový objekt nemusí existovat • vytváří se příkazem ln s volbou –s, příklad: ln –s /etc/krb5.conf.EINFRA krb5.conf C2110 Operační systém UNIX a základy programování 6. lekce -16Přehled příkazů Souborový systém: cd změní aktuální pracovní adresář pwd vypíše cestu k aktuálnímu pracovnímu adresáři ls vypíše obsah adresáře mkdir vytvoří adresář rmdir smaže adresář (musí být prázdný) cp zkopíruje soubor či adresář mv přesune soubor či adresář rm odstraní soubor či adresář find vyhledává soubory či adreáře id vypíše zařazení uživatele do skupin getent vypisuje informace o uživatelích, skupinách uživatelů a další informace chmod změní přístupová práva k souboru či adresáři chown změní vlastníka souboru či adresáře chgrp změní přístupovou skupinu souboru či adresáře umask výchozí přístupová práva pro nově vytvářené soubory či adresáře základní operace přístupová práva C2110 Operační systém UNIX a základy programování 6. lekce -17Přehled příkazů Souborový systém (pokračování): quota vypíše informace o nastavených kvótách pro přípojné body du vypíše velikost adresáře nebo souborů stat vypíše podrobné informace o souboru či adresáři df vypíše informace o připojených diskových oddílech lsof vypisuje procesy, které mají otevřeny soubory/adresáře na přípojném bodu (adresáři) sshfs připojí vzdálený souborový systém do lokálního adresářového stromu pomocí ssh protokolu mount připojí zařízení do lokálního adresářového stromu, popř. vypíše seznam připojených zařízení (připojení datových úložišť z Metacentra – C2115) link vytvoří odkaz na soubor nebo adresář unlink zruší odkaz na soubor nebo adresář pokročilé funkce C2110 Operační systém UNIX a základy programování 6. lekce -18Vzdálený přenos souborů ➢ scp ➢ WinSCP ➢ wget (domací úkol) C2110 Operační systém UNIX a základy programování 6. lekce -19Vzdálené kopírování $ scp [-r] zdroj cil Příklady použití: Syntaxe: [] - možno vynechat Zdroj a cíl může být soubor nebo adresář. V případě kopírovaní adresářů je nutno použít volbu –r (recursive). Vzdálený cíl nebo host se identifikuje názvem stroje odděleného od jména souboru či adresáře dvojtečkou. [user@]hostname:[cesta/]soubor $ scp pokus.txt wolf01.ncbr.muni.cz:/scratch/kulhanek $ scp wolf01.ncbr.muni.cz:/scratch/kulhanek/pokus.txt . Ke vzdálenému kopírovaní slouží příkaz scp. C2110 Operační systém UNIX a základy programování 6. lekce -20Cvičení IV 1. Vytvořte kopii adresáře ~/Documents do adresáře /scratch/username (ujistěte se, že v adresáři Documents máte nějaké soubory, např. prezentace k cvičení). 2. Překopírujte obsah adresáře /scratch/username/Documents na vzdálený stroj dle vašeho výběru do adresáře /scratch/username/wolfXX, kde wolfXX je číslo zdrojového stroje. Ke kopírování použijte příkaz scp. 3. Smažte adresáře /scratch/username/Documents a /scratch/username/wolfXX použijte dva terminály C2110 Operační systém UNIX a základy programování 6. lekce -21- WinSCP WinSCP http://winscp.net/eng/docs/lang:cs Program pro přenos souborů mezi MS Windows a počítači podporující SFTP či SCP protokoly (převážně unixového a linuxového typu). lokální stroj vzdálený stroj C2110 Operační systém UNIX a základy programování 6. lekce -22Textové soubory MS Win  Linux Textové soubory vytvořené pod MS Windows a Linuxem nejsou zcela kompatibilní, protože každý operační systém používá jiné kódování konce řádku. Linux: \n (line feed 0x0A) MS Windows: \r+\n (carriage return 0x0D, line feed 0x0A) Ke konverzi souborů lze použít programy d2u a u2d (na klastru WOLF). 1) Aktivace modulu cats $ module add cats 2) Konverze MS Windows => Linux $ d2u soubor.com 3) Konverze Linux => MS Windows $ u2d soubor.log Doplňující informace: http://en.wikipedia.org/wiki/Newline C2110 Operační systém UNIX a základy programování 6. lekce -23Cvičení V 1. Z adresáře /home/kulhanek/Documents/C2110/Lesson06/ si překopírujte do vašeho domovského adresáře soubor 1SS9.pdb. 2. Spusťte virtuální stroj s MS Windows XP (/win/win). 3. Spusťte aplikaci WinSCP. 4. Do virtuálního stroje stáhněte soubor 1SS9.pdb z vašeho domovského adresáře. Soubor otevřete v programu Poznámkový blok (Notepad). Zobrazí se obsah souboru správně? 5. Opravte kódování konců řádků v souboru 1SS9.pdb pomocí příkazu u2d (modul cats) a soubor znovu otevřete ve virtuálním stroji v programu Poznámkový blok. Zobrazí se obsah souboru správně? C2110 Operační systém UNIX a základy programování 6. lekce -24Domácí úkoly C2110 Operační systém UNIX a základy programování 6. lekce -25Stahovaní souborů z webu Ke stahovaní souborů z webu lze využít příkaz wget. Vzdálené stroje musí soubory poskytovat pomocí protokolu ftp, http nebo https. $ wget [-O output_name] url url (uniform resource locator) www identifikátor souboru Příklady použití: $ wget http://www.rcsb.org/pdb/files/1SS9.pdb PDB kód struktury velké O C2110 Operační systém UNIX a základy programování 6. lekce -26Cvičení I 1. Pomocí příkazu wget stáhněte PDB struktur 1SS9 do souboru s názvem struktura.pdb 2. Soubor struktura.pdb otevřete v programu VMD. 3. Do scratch adresáře stáhněte pomocí příkazu wget instalační obraz (iso soubor) pro Ubuntu Server 16.04. Příkazem md5sum ověřte jeho kontrolní součet. C2110 Operační systém UNIX a základy programování 6. lekce -27- sshfs SSHFS neboli SSH File System slouží k připojení vzdáleného souborového systému do lokálního adresářového stromu prostřednictvím šifrovaného spojení SSH. Na serveru není nutné kromě SSH nic dalšího konfigurovat. Na klientovi je třeba nainstalovat balíček sshfs. www.wikipedia.org wolf01 /scratch/username/wolf04 wolf04 /scratch/username Připojení: $ mkdir /scratch/username/wolf04 $ sshfs wolf04:/scratch/username /scratch/username/wolf04 Odpojení: $ fusermount -u /scratch/username/wolf04 vytvoření přípojného bodu (měl by být prázdný adresář) vzdálený souborový systém lokální přípojný bod vzdálený systémlokální systém C2110 Operační systém UNIX a základy programování 6. lekce -28Cvičení II 1. Běžte do adresáře /scratch/username 2. Vypište jeho obsah 3. Smažte soubor pokus.txt vzdálený systémlokální systém jako vzdálený systém použijte sousední stanici použijte dva terminály 1. Běžte do adresáře /scratch/username 2. Vytvořte adresář "remote" 3. Do adresáře připojte vzdálený souborový systém /scratch/username 4. Zkontrolujte připojení příkazy df a mount 5. Běžte do adresáře "remote" 6. Vytvořte v něm soubor pokus.txt 7. Vypište obsah adresáře, jakou velikost má soubor pokus.txt? 8. Odpojte vzdálený systém C2110 Operační systém UNIX a základy programování 6. lekce -29MS Windows jako klient - přehled Přihlašování do Unixu z MS Windows (textový terminál): putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/) ssh (např. z prostředí Cygwin; http://www.cygwin.com/) Windows Subsystem for Linux (WSL) Kopírování dat mezi Unixem a MS Windows: WinSCP (http://winscp.net) scp (např. z prostředí Cygwin; http://www.cygwin.com/) Export displeje z Unixu do MS Windows (X11 server): Xming (http://sourceforge.net/projects/xming/) cygwin (http://www.cygwin.com/) Přihlašování z Unixu do MS Windows (vzdálená plocha): rdesktop