SUSE exercises
ctrl + C //signal interrupt
ctrl + D //signal quit (ze sudo su, ssh připojení, ...)
ctrl + Z //pauses the task
ctrl + L //clears the screen
YaST
virtual machine manager
# virt-manager
# zypper -- jako apt
# zypper in tree //tree file system view - stromová struktura
# tree -
# df //zobrazí volné místo na disku (zastaralé, v kB)
# df -h //zobrazí human readable
NÁPOVĚDA
# man
# info
# whatis
# hwinfo //info o hardwarových zařízeních (všech)
# hwinfo --short //přehlednější
# info coreutils //dobré pro zorientování se jaké příkazy potřebuji pro specifickou věc co dělám
# uname -r //verze jádra a distro
# lsmod//list modules
# cd /usr/share/doc/packages //soubory které můžou ale nemusí obsahovat dokumentaci
stránky - documentation.suse.com -> SUSE Enterprise server - obsahuje online různé příručky pro to co chci se systémem dělat
# alias df="df -h" //vytvoří alias, při napsání df se nyní spustí df -h
# unalias df //vrátí zpět
# history clear
# ![číslo příkazu] //spustí příkaz specifikované číslo
# echo $HISTSIZE [size(number)] //echo vrátí hodnotu proměnné, která musí být označena dolarem na začátku
# ls *.conf //vypíše všechny (*) soubory které končí .conf
# set //zobrazí proměnné a funkce
# set | less //zobrazí proměnné
# echo $PROMĚNNÁ //vrátí proměnnou
//exportování proměnných - zobrazí se i v dalších shellech
# declare -x PROMĚNNÁ="hodnota" //export hodnoty
# echo Dnes je 13.5.2024 //fixované
# date //zobrazí datum
# date "+%d.%m.%Y" //zobrazí datum ve formátu
# echo Dnes je $(date "+%d.%m.%Y") //spustí příkaz uvnitř příkazu
# date "+%Y%m%d" //časové známky pro soubory
# DATUM=$(date "+%Y%m%d") //uložení do proměnné
# echo $DATUM //vrátí z proměnné datum
# echo $(( B + 3 ))
# echo $? //návratový kód
# mail //simple mail
# cat //text editor
# dmesg //ukáže posledních 64 řádků syslogu
# dd //bitová kopie soborů/zařízení
# dd if=/dev/random bs=1 count=8 2>/dev/null
# dd if=/dev/random bs=1 count=8 2>/dev/null | base64| cut -c 1-10
//přeloží řetězec do znakové sady base64 a omezí na určité znaky = proces používá pipe - funkce si předávají data
# ls -l | tr -s " " |cut -f 5,9 -d " " | sort -n
//translate - tr, -s =squeeze, pak vyber 5 a 9 pole, sort podle numeric
# id | tee id.txt //rozdvojka, jednak vypíše výstup a druhak vloží stejný výstup do souboru id.txt
# id;uptime //oddělení pro více příkazů na jeden řádek
// &&- spustí další příkaz pokud ten předtím dopadne dobře = return value je 0
// ||- spustí další příkaz pokud ten předtím dopadne chybně = return value je cokoliv kromě 0
********************************
PŘÍKAZY
# pwd //print working directory - ukáže kde aktuálně jsem
# cd //change directory - buťo zadávám absolutní cestu, nebo relativní (. nebo ..)
# ls //list - zobrazí co je
# cp //copy - je třeba přidat -r (přidá rekurzivitu)
# mv //move - move zdroj cíl
# rm //remove - je třeba přidat -rf (rekurzivita a f (force))
// pozor na příkaz "rm -rf /" - smaže vše v kořenovém adresáři, tj celý systém
# mkdir //make directory - vytvoří složku - pokud třeba
//mkdir a/b/c tak se snaží vytvořit složku c ve složkách které neexistují, proto přidáváme -p (parental)
# rmdir //odstraní složku, používat spíš rm
# touch //vytvoří prázdný nový soubor; hodnota za rw-r--r-- [1] říká kolikrát je soubor v systému referencován
# ln soubor.txt hardlink.txt //místo kopie lze dělat pouze hardlinky
# ln -s //symlink (jméno které míří na jiné jméno, většinou hardlink)
VIEW FILE CONTENT
# cat [file] //concatenate - výpis kratších souborů -prohlížeč
# less [file] //rozdělí soubor na stránky -prohlížeč
# tac //reverse cat - zobrazí soubor od posledního řádku k prvnímu
# head //zobrazí prních 10 řádků
# tail //zobrazí posledních 10 řádků
# tar //tape archiver - archivní nástroj
# tar -cvzf archiv.tar.gz // -c create; -z komprimovat; -f filename, -v verbose;
# tar -xf //-x extract
# rsync //kopíruje jen deltas mezi dvěma složkami, většinou po síti;
//synchronizuje jen změny v souboru který chceme mít stejný na dvou zařízeních; funguje pomocí kontrolního součtu
# rsync -av /etc pc301:/tmp/ // -a archive -v verbose; používá SSH, lze zapnout komprese
# dd if=/dev/zero of=/image.img bs=1M count=100 //if - imput file of - output file; lze třeba udělat bitovou kopii jakéhokoliv souboru někam
# free //zobrazí vyrovnávací paměť
# find [path] [criterium] //hledání ve složkách dle jména či jiných parametrů - #find -size +100M //najde všechny soubory větší než 100M
# which [passwd] //který příkaz se spustí když zadám passwd
# type [ls] //ukáže co spouštím, zda jsou tam aliasy atd
# grep //prohledávání obsahu souborů
# grep [text] //najde jen specifikovaný text
# lsmod | grep e100 - vyhledá jen ovladač který má v názvu e100
# lsusb //zobrazí zařízení na USB
# lspci //zobrazí zařízení na na PCI, přes parametr -v (verbose) zobrazí více informací
# file /usr/bin/bash //vypíše o jaký soubor se jedná, v tomto případě je to cesta
# ssh uživatel@pocitac //ssh into PC
# logout //ukonceni
# scp /etc/motd uzivatel@pocitac:/etc/ //
# scp uzivatel@pocitac:/etc/motd /etc/ //
# sftp //
# rlogin
# rcp
NASTAVENI SSH
/.ssh/ //skyrtý adresář
# ssh-keygen -t rsa
SECURE GRUB WITH A PASSWORD
# sudo su
# grub2-mkpasswd-pbkdf2 //zahesluje grub, bez zadání hesla pak nejde spustit ani grub
# vim /etc/grub.d/40_custom //otevře v text editoru soubor ze kterého si bere grub nějaké věci
vložit tam:
set superusers="jmeno"
grub2-mkpasswd-pbkdf2 jmeno heslo //replace jmeno tim co chci a heslo taky tím co chci (heslo vkládat jako hash, vygenerováno v předchozím kroku!)
# grub2-mkconfig -o /boot/grub2/grub.cfg //uloží změnu
//když se to pokazí - spustit systém z jiného média, mountnout disk a upravit /boot/grub2/grub.cfg
SYSTEMCTL
# systemctl <start/stop/restart/reload/status> <služba>
# systemctl list-units -t //typ unit souboru
# systemctl list-dependencies //zobrazí výchozí stavy a seznam služeb které jsou potřeba pro dostání se do cílového stavu
//je možnost i měnit cílové stavy
PROCESY
# ps uax | head -5 //vlastník procesu, PID, využití procesoru %, virtual memory %, resources,
//TTY (teletype, řídící terminál (systémové procesy mají ?)),
//status (r-running, s-sleeping, t-zastavený, d-nepřerušitelný spánek, z-zombie (návratová hodnota není potvrzena rodičem, tudíž proces se nemůže ukončit))
# ps lax | head -5
# ps -ef | head -5
# ps -lu [user] //zobrazí procesy spuštěné specifikovaným userem
# gnome-system-monitor //spustí system monitor, uspím ho z terminálu ctrl + z
# jobs //vypíšu info o jobech v pozadí - vidím uspaný gnome-system-monitor
# ps -l //zobrazím si joby, vidím info o procesech
# bg 1 //znovu spustím monitor, v tomto případě proces 1 na listu
# pstree -up
#top //ukáže něco jako task manager
//hi - hardware interrupt, si - software interrupt
//výchozí výpis je průměr ze všech jader - klávesou "1" - výpis ze všech jader (pro kontrolu zda např aplikace neběží jednovláknově když nemá)
//swap - stránkovací soubor, když dojde RAM tak se do tohoto souboru přelijou data odtamtud
// - počítač se ale třeba milionkrát zpomalí, pravidlo dvojnásobek RAM má být swap už dávno neplatí
//nově se používá zram - komprese a dekpmrese, alternativní swap, zpomalení je třeba "jen" 10x
//buff/cache se nepřemazává, data tam zůstávají načtena "lenivý přístup", available memory - reálně volná paměť kterou může systém poskytnout
//řadí dle cpu% defaultně; lze měnit doleva/doprava poumocí "<" a ">"
# kill
# kill -l //vypíše signály - používáme 15)SIGTERM (signal terminate) 9)SIGKILL (zavoláme aby proces zabilo jádro); pak 18) a 19)
# kill <PID> [signal]
# renice [číslo priority] jmenoprocesu //mění prioritu procesů
# jobs //zobrazí procesy co běží
# screen //více oken terminálu - spustím, ctrl + a a ctrl + c - vytvoří další okno; ctrl + a a " - vybírám si z otevřených oken; ctrl + d - detach screen;
//sezení screenu přežije odhlášení (musím dát ctrl + d a když se přihlasuji znovu, dám screen -d; screen -list zobrazí sezení)
# crontab //cronos - čas; plánování procesů
//"when" pole - ***** - pozice každá minuta,každá hodina,každý den,každý měsíc,každý den v týdnu; např.: 02**1-5 - od pondělí do pátku vždy ve 2 ráno;
# crontab [when] [who][what] //system cron jobs /etc/crontab (někde tam)
# anacron //plánování úloh které se opakují po nějakém čase, anarchystic cron
# at //schedule a task
UID a GID
# id //zobrazí current UID atd
# whoami
# getent //vypíše seznam všech entit
# getent passwd //
# getent group // vypíše skupiny a sekundární členství ve skupinách
# useradd
# usermod -m jmeno //vytvoří uživatele jmeno i s domovskou složkou
# passwd jmeno heslo //vytvoří mu heslo
# userdel //smaže uživatele
# groupadd [jmenoskupiny] //založí novou skupinu
# getent group //zobrazi skupiny
# usermod -a -G [jmenoskupiny] [uzivatel] //přiřadí uživatele do skupiny
PRÁVA
# chmod //
# chmod +x [soubor] //přidá executable
# chmod 700 [soubor] //full práva má jen root
# chown //change ownership, změní vlastníka/vlastnickou skupinu
# chgrp //změní vlastnickou skupinu
skript - v linuxu textový soubor s příkazy, nastavíme mu spustitelnost
# umask //reguluje práva na nově vzniklé soubory
# setfacl //nastavení ACL, parametr -R zajistí rekurzivitu
# setfacl -m u:uživatel:rw file //nastaví konkrétní práva uživateli k souboru file
# setfacl -d -m u:uživatel:rw file //nastaví dědičnost ACL u dalších souborů vytvořených pod file (složky etc.)
# setfacl -x u:uživatel file //odebere ACL pro konkrétního uživatele
# setfacl -b file //odebere všechna ACL
# getfacl //zobrazí stav ACL
# visudo // otevře /etx/sudoers
//zde zakomentovat Defaults targetpw a ALL ALL=(ALL) ALL
//definovat User_Alias POWERUSERS = user1, user2, atd.
//Cmnd_Alias KPROCS = /bin/kill, /usr/bin/killall, další příkazy které chceme aby mohli uživatelé spouštět
//Host_Alias HOSTS = server1, zařízení na kterých cheme aby pracovali
// nyní pomocí aliasů definujeme co chceme aby kdo mohl dělat - POWERUSERS HOSTS = (root) KPROCS
# ls -l test.txt
# setfacl -m u:uzivatel:rw test.txt //místo u - g group
# ls -l test.txt //v příkazu se ve trojici skupiny už vypisují práva masky, jak je vidět v následujícím příkazu
# getfacl test.txt
# su user //switch user
# su -c "grep geeko /etc/shadow" //spustí jeden specifikovaný příkaz pod rootem (-c)
# newgrp //změní primární skupinu
# sg //změní primární skupinu
# getfactl rfkill //zobrazí přístupová práva (ACLka) pro rfkill
# sudo //switch user do;
# visudo //vzměny ve složce "/etc/sudoers" | geeko ALL = /sbin/shutdown - uživatel geeko může spouštět /sbin/shutdown
# pkaction //zpbrazí registrované actions v pKitu, teď úplně nevím co to znamená (kdyžtak dohledat)
BALÍČKY
# rpm -i <package>.rpm //instalace (-i) rpm balíčku; (-v - verbose; -h - progressbar); --nodeps - ignoruje dependencies; --force - přepíše existující soubory
# rpm -i -v -h --nodeps --force <package>.rpm
# rpm -U <package>.rpm //update
# rpm -e <package>.rpm //erase, --nodeps
# rpm -qa | wc -l //word count, vypíše počet nainstalovaných balíčků
# rpm -qi <package> //query info
# rpm -ql <package> //zobrazí list souborů které nahrál specifický balíček
# rpm -qld <package> //dokumentace
# rpm -qlc <package> //konfigurace
# rpm -qf /absolutnícesta //zobrazí zda je soubor součástí nějakého balíčku,
# rpm --checksig <package>.rpm //zkontroluje kontrolní součet balíčku před stažením
# rpm -V <package>.rpm//zkontroluje zda se balíček nezměnil po instalaci
# wget //webget, pro stahování z webu
# zypper lr //list repozitářů které máme nakonfigurované
# zypper ref 1 //refresh repozitářů
# cat openSUSE-Leap-15.4-1.rep //zobrazí info o repozitáři
# zypper ar <uri> <alias> //přidá repozitář
# zypper rr //odebere repozitář
# zypper se <package> //hledá balíček v repozitáři
# zypper if <package> //info o balíčku
# zypper in <package> //instaluje balíček
# zypper --non-interactive in <package> //instaluje balíček bez toho aby uživatel něco potvrzoval, užitečné ve skriptech
# zypper rm <package> //odstraní balíček
# zypper up //aktualizuje vše, co je možné aktualizovat - systém i všechny balíčky
# zypper lp //list ??
# zypper pchk //check for patches
# zypper patch //nainstaluje patche
# zypper dup //distribution update, za běhu systému
# zypper pt //list patternů
- Přidání disku s repozitáři
# mount -o loop /cestakzarizeni /mnt //mount zařízení do /mnt
# zypper ar /mnt nazev //přidání repozitáře
NETWORK MANAGEMENT
# ping <dest> //ping na destinaci, po cestě můžou být ale problémy a neznamená to že zařízení na druhé straně je nedostupné
// -c count; -I interface; -i seconds (intervaly mezi pakety); -f (pakety se posílají jak nejrychleji to jde); -I preload (posílá bez čekání na odpověď)
// -n numerický output IP adres, etc.
# traceroute <destination> //používá UDP datagramy, mění v nich TTL; parametr -n zobrazí IP adresy místo FQDN
# hostname <hostname> //změna hostname PC (dočasná)
# hostnamectl hostname <hostname> //změna hostname PC trvalá, lze to ale dělat i přes konfigurák v /etc/hostname
# ifup eth0 //zapne nakonfigurovaný interface
# ifdouwn eth0 //vypne nakonfigurovaný interface
# ifrenew eth0 //renew DHCP IP address
# ifstatus eth0 //display interface status
# ip <IP> //nastavení IP
# ip addr show //display IP address
# ip addr add 10.0.0.10/24 brd + dev <interface> //přidá IP na interface
# ip route show //zobrazí routovací tabulku
# ip route add <ip> dev <device> //přidá cestu do routovací tabulky
# ip link show //linková tabulka
# ip link set eth0 up //zapnutí konfigurace na linkové vrstvě na interface eth0 (netuším přesně k čemu to patří????)
// vi /etc/hosts - IP adrese můžu přiřadit více hostname, na ty pak reaguje ping
# ethtool eth0 //settings for eth0
# wicked show all //zobrazí všechna network nastavení
# wicked show <interface> //zobrazí nastavení konkrétního interfacu
# wicked show-xml all //zobrazí všechna network nastavení v xml
# wicked show-xml <interface> // to samé, v xml
# systemctl status firewalld //info o procesu
# firewall-cmd //info o firewalld
# firewall-cmd --runtime-to-permanent //zapíše konfiguraci do permanent paměti, musí následovat reload
# firewall-cmd reload //reload firewallu z permanent konfigurace
# firewall-cmd --list-all //zobrazí nastavení konkrétní zóny
//list ports a list services -- musíme kontrolovat obojí, nemusí být stejné při změně
# firewall-cmd --list-all --zone= //ukáže více informací
# firewall-cmd //lockdpown
# firewall-cmd Lockdown, Panic //zavře systém
# firewall-config
# firewall-cmd --state //check status firewallu
# firewall-cmd --get-zones //check jaké jsou všechny možné zóny
# firewall-cmd --get-default-zone //check jaká je defaultní zóna
# firewall-cmd --get-active-zone //check aktivních zón; úpravy zón je možno dělat /etc/firewalld/
# firewall-cmd --zone=public --list-interfaces --permanent //check zda eth0 je permanentně přidělené do public zóny, pokud není nastaveno tak je v té defaultní
# firewall-cmd --reload //reload runtime z permanentní konfigurace
# firewall-cmd --zone=public --add-interface=eth0 --permanent // permanentně přidá eth0 do zóny public
# firewall-cmd --zone=public --list-all (--permanent) // zobrazí konfiguraci specifikované zóny, pozor, je to různé od (--permanent); pod services jsou povolené služby
pozn.: dělat to jako u CISCO switchů, změny se projeví až po reloadu z permanentní konfigurace
STORAGE ADMINISTRATION
# parted //spustí parted
# select <device>
# mkpart <part-type> [<file-system>] <start> <end> //vytvoří oddíl můžou vznikat mezery mezi oddíly, nemusí na sebe navazovat
# rm <part-nuber> //smaže oddíl
# fdisk -l //zobrazí všechny oddíly
# fdisk /dev/sda //spustí průvodce vytvořením oddílu sda
# lsblk //list blokových oddílů
# mkfs -t <type> //vytvořím file system určitého typu
# mkfs. //zobrazí dostupné file systémy pro vytvoření - ne všechny, pouze ty nainstalované
# mk2fs //
# mkfs.ext4 /dev/sdc1 //vytvořím ext4 na specifikovaném místě
# mount <co chceme připojit> <kam to chceme připojit> //připojí oddíl
# umount <adresář nebo místo> //odpojí oddíl
# mount -o remount <parametry> //připojí disk jiným způsobem než je aktuálně připojený, např.: při bootu; parametry rw - read write; ro - read only
# mount -o // options: rw, ro; atime, notime - access time do souboru je/není updatovaný; nodev, dev - zda umožníme reprezentaci zařízení jako souborů
// výchozí rw, suid, dev, exec, auto, nouser, async
# df //seznam souborových systémů připojených, -h - human readable
# du //kolik místa zabírají jednotlivé adresáře na disku; použití s parametrem -d [depth]
# du -hd 1 / //list rootovské složky
# lsof //ukáže, kolik souborů je otevřených
# fuser //máme soubor na disku, zajímá nás kdo používá tento soubor (např když nejde odpojit flashdisk)
# fsck //check file system
# tune2fs //ladění parametrů souborového systému
# resize2fs //změna velikosti souborového systému
LVM
1) Physical Volume
#pv //physical volume
2) Volume Group
# vgcreate <jmeno> </fyzickýsvazek>
# vgs
# vgdisplay
# vgscan
# vgextend
3) Logical Volume
# lvcreate -L <size in MB> -n <lv_name> <vg_name>
# lvcreate -L 300M -n zaloha <vg_name>
# lvs
- pak až to mountnout, přidat do /etc/fstab pro mermanentní připojení
RAID
# mdadm //konfigurace a sestavování RAID
# smartctl
BTRFS
# btrfs //ovládání btrfs
# btrfs subvolume //ovládání btrfs podsvazku
# btrfs filesystem usage / //nástroj pro zobrazení odhadu btrfs, kolik místa je na disku volných
NFS
# systemctl status nfs.service //balíček serveru se jmenuje nfs-kernerl-server
# exportfs -o ro,root_squash,sync 192.168.0.0/24:/software //vyexportuje složku software pro všechny počítače ze sítě 192.168.0.0/24
# exportfs //dočasně vyexportuje ihned, jinak až po restartu
client:
# mount
# rcrpcbind start
# vim /etc/fstab //přidat řádku, například - server1:data/ISOe /import/IOS nfs4 defaults 0 0
# mount - remount /mountpoint //zapsat změnu
# mount -a //obnoví vše z /etc/fstabu
# rpcinfo -p //info o rpcbind
NTP
# systemctl status chronyd
# chronyc sources //ukáže které servery máme nakonfigurované, jejich stratum, Poll - dvojková mocnina intervalu po kterém se ptá na server; LastRX - poslední update
//hvězdičkou je označený ten který je aktuálně vybrán, je nejpřesnější pro nás
# chrony
NFS
# systemctl stop firewalld
# mkdir -p /export/documentation
# setfacl -m g:users:rwx /export/documentation
# setfacl -d -m g:users:rwx /export/documentation
# cd /export/documentation
# cp -r /usr/share/doc/release-notes/* .
# zypper in yast2-nfs-server
# yast nfs_server &
- v NFS Server Configuration - NFS Server pane - radio button has Start selected, enable NFSv4 checkbox, NFSv4 domain name - suse.com
- přidat adresář /export/documentation do exportovaných
# showmount -e localhost
# cat /etc/exports
client:
# systemctl stop firewalld
# mkdir -p /import
# yast2 nfs &
přidat hostname: <hostname>
remote directory /export/documentation
NFSv4 share: select
mount point /import/docs