Podstawowe
polecenia
dr inż. Ireneusz Mrozek
dr inż. Andrzej Chmielewski
Wydział Informatyki
Politechniki Białostockiej
Historia poleceń
Podstawowe
polecenia
Polecenie: history oraz plik ~/.history
W terminalu historię poleceń można przewijać korzystając z klawiszy strzałek.
Skrócona lista plików z bieżącego katalogu
$
history
1504 ethtool i
1505 ethtool
1506 ethtool eth0
1507 lspci | grep network
1508 lspci
1509 lspci | grep i network
1510 man ethtool
Polecenie bazuje na zawartości pliku
.bash_history
w katalogu domowym
użytkownika
$ cat ~/.bash_history
vi known_hosts
wc l known_hosts
dpkgquery l | grep i ssh
vi /etc/ssh/ssh_config
Poruszanie się po systemie plików
Podstawowe
polecenia
Polecenia: pwd, cd
Bieżący katalog
$
pwd
/home/student
Przejście do katalogu domowego
$ cd
Przejście do katalogu domowego użytkownika student (jeśli prawa na to pozwalają)
$ cd ~student
Ścieżka względna
$ cd ../../var/log
Ścieżka bezwzględna
$ cd /var/log
Listowanie zawartości katalogów
Podstawowe
polecenia
ls
Skrócona lista plików z bieżącego katalogu
$ ls /etc
gconf obexdataserver UPower
gdb ODBCDataSources upstartxsessions
gftp odbc.ini usb_modeswitch.conf
ghostscript odbcinst.ini usb_modeswitch.d
Szczegółowa lista plików z bieżącego katalogu
$ ls l /etc
drwxrxrx 11 root root 4096 lut 17 18:28 X11
drwxrxrx 5 root root 4096 sie 16 2014 xdg
drwxrxrx 3 root root 4096 sie 16 2014 xml
drwxrxrx 2 root root 4096 sty 16 23:40 xulext
Łącznie z plikami ukrytymi
$ ls al /tmp
rw 1 student student 4149 lut 26 18:57 .bamficon55YLUX
rw 1 student student 4149 lut 26 18:25 .bamficonJZK4TX
rw 1 student student 0 lut 26 17:39 configerrSMccgT
Tworzenie i usuwanie katalogów
Podstawowe
polecenia
mkdir, rmdir, rm
Tworzenie katalogu
$ mkdir tmp
Tworzenie katalogu wraz z podkatalogami
$ mkdir p tmp/student/oceny
Usuwanie pustego katalogu
$ rmdir tmp
Usuwanie katalogu wraz z zawartością
$rm fr tmp
Tworzenie i usuwanie plików
Podstawowe
polecenia
touch, echo, rm
Tworznie pliku
$ touch plik.txt
Tworzenie pliku wraz z zawartością. Jeśli plik istnieje, zostanie nadpisany.
$ echo 'content' > plik.txt
Dodanie treści do pliku. Jeśli plik nie istnieje zostanie utworzony.
$ echo ”content” >> plik.txt
Usuwanie
pliku
$ rm plik.txt
Wolna przestrzeń na dysku
Podstawowe
polecenia
df, dh
Wolna przestrzeń na dysku
$ df h
/dev/sdb7 156G 20G 128G 14% /
none 4,0K 0 4,0K 0% /sys/fs/cgroup
udev 3,9G 4,0K 3,9G 1% /dev
tmpfs 792M 1,5M 791M 1% /run
none 5,0M 0 5,0M 0% /run/lock
/dev/sdb3 228M 154M 58M 73% /boot
Ile przestrzeni zajmuje dany katalog z podkatalogami?
$ du sh /home
18G
/home
Domyślne prawa tworzonych zasobów
Podstawowe
polecenia
Decyduje o tym wartość zmiennej umask
$ umask
0002
Prawa do pliku:
666 – 'umask'
czyli w naszym przypadku 664
Prawa do katalogu:
777 – 'umask'
czyli w naszym przypadku 775
Operacje na plikach
Podstawowe
polecenia
Wyświetlanie zawartości plików:
Wyświetlenie całego pliku
$ cat plik.txt
Gdy plik nie mieści się na ekranie
$ cat plik.txt | more
$ more plik.txt
$ less plik.txt
- możliwość przewijanie do góry i w dół
$ head plik.txt
- wyświetlenie 10 początkowych linii
$ head n 20 plik.txt
- wyświetlenie 20 początkowych linii
$ tail plik.txt
- wyświetlenie 10 ostatnich linii
$ tail n 20 plik.txt
- wyświetlenie 20 ostatnich linii
$ tail f /var/log/syslog
- wyświetlanie w konsoli zmian w pliku na bieżąco
Linkowanie plików
Podstawowe
polecenia
Dowiązania twarde (hard link) oraz symboliczne (symbolic link)
Dowiązanie twarde – tworzy dodatkowe dowiązanie (referencję) do pliku lub
katalogu (dodatkowy i-węzeł). Skasowanie pliku następuje po usunięciu
wszystkich dowiązań. „.” oznacza utworzenie dowiązania o tej samej nazwie.
$ ln <existing_file> <hard_link_file>
Przykład:
$ echo 'test' > file.txt
$ ls al file.txt
rwrwr 1 student student 5 lut 27 19:01 file.txt
$ ln file.txt filehrd.txt
$ ls al file.txt filehrd.txt
rwrwr 2 student student 5 lut 27 19:01 filehrd.txt
rwrwr 2 student student 5 lut 27 19:01 file.txt
$ rm file.txt
$ ls al file.txt filehrd.txt
ls: nie ma dost?pu do file.txt: Nie ma takiego pliku ani katalogu
rwrwr 1 student student 5 lut 27 19:01 filehrd.txt
Linkowanie plików
Podstawowe
polecenia
Dowiązanie symboliczne – dowiązanie na nazwę pliku, w przeciwieństwie do
twardego, które tworzy dowiązanie do pliku. Skasowanie pliku nie usuwa
dowiązania, które dalej wskazuje na nieistniejący plik. Skasowanie symlinku nie
usuwa pliku. „.” oznacza utworzenie dowiązania o tej samej nazwie.
$ ln s <existing_file> <sym_link_file>
Przykład:
$ ls al /tmp/file.txt
rwrwr 1 student student 5 lut 27 19:01 /tmp/file.txt
$ ln s file.txt filesym.txt
$ ls al /tmp/file.txt filesym.txt
lrwxrwxrwx 1 student student 13 lut 27 21:29 filesym.txt >
/tmp/file.txt
rwrwr 1 student student 5 lut 27 21:29 /tmp/file.txt
$ rm /tmp/file.txt
$ ls al /tmp/file.txt file.txt
ls: nie ma dost?pu do /tmp/file.txt: Nie ma takiego pliku ani katalogu
lrwxrwxrwx 1 student student 13 lut 27 21:29 filesym.txt >
/tmp/file.txt
Dowiązania twarde (hard link) oraz symboliczne (symbolic link)
Linkowanie plików
Podstawowe
polecenia
Dowiązanie symboliczne – dowiązanie na nazwę pliku, w przeciwieństwie do
twardego, które tworzy dowiązanie do pliku. Skasowanie pliku nie usuwa
dowiązania, które dalej wskazuje na nieistniejący plik. Skasowanie symlinku nie
usuwa pliku. „.” oznacza utworzenie dowiązania o tej samej nazwie.
$ ln s <existing_file> <sym_link_file>
Przykład:
$ ls al /tmp/file.txt
rwrwr 1 student student 5 lut 27 19:01 /tmp/file.txt
$ ln s file.txt filesym.txt
$ ls al /tmp/file.txt filesym.txt
lrwxrwxrwx 1 student student 13 lut 27 21:29 filesym.txt >
/tmp/file.txt
rwrwr 1 student student 5 lut 27 21:29 /tmp/file.txt
$ rm /tmp/file.txt
$ ls al /tmp/file.txt file.txt
ls: nie ma dost?pu do /tmp/file.txt: Nie ma takiego pliku ani katalogu
lrwxrwxrwx 1 student student 13 lut 27 21:29 filesym.txt >
/tmp/file.txt
Dowiązania twarde (hard link) oraz symboliczne (symbolic link)
Linkowanie plików
Podstawowe
polecenia
$ ln [s] <existing_file> <link_file>
$ unlink <existing_file>
lub
$ unlink <link_file>
Inną opcją jest skasowanie dowiązania za pomocą poleceń:
rm
lub
rmdir
(w
przypadku katalogów).
Usuwanie dowiązań: unlink, rm (rmdir)
Wyszukiwanie plików oraz poleceń
Podstawowe
polecenia
which oraz locate (slocate, rlocate)
which przeszukuje ścieżki określone zmienną środowiskową PATH. Wyszukuje
polecenia o określonej nazwie
$ which vi
/usr/bin/vi
locate korzysta z usługi updatedb. Wyszukuje pliki zawierające wskazany ciąg
$ locate vi
/lib/nvidia331
/lib/crda/pubkeys/linville.key.pub.pem
/lib/firmware/ticonnectivity
…
Wyszukiwanie plików
Podstawowe
polecenia
name <nazwa>
- pozycje o podanej nazwie (można także stosować operatory
uogólniające)- rozróżniana jest wielkość liter
iname <nazwa>
- pozycje o podanej nazwie (można także stosować operatory
uogólniające)- brak rozróżniania wielkości liter;
size <rozmiar><jednostka>
- pozycje o określonym rozmiarze; możliwe są
następujące określenia jednostek: c-bajty, k-kilobajty, w-dwubajtowe słowa, brak
jednostki oznacza 512-bajtowe bloki; przed rozmiarem można podać znaki + lub -,
oznaczają one wówczas odpowiednio: pozycje o rozmiarze większym/mniejszym
niż podany;
atime <dni>
- pozycje, na których była wykonywana jakaś operacja podaną
liczbę dni temu; przed ilością dni można podać znaki + lub -, oznaczają one
wówczas odpowiedni o: pozycje, na których była wykonywana jakaś operacja
więcej/mniej dni temu;
mtime <dni>
- pozycje, na które były modyfikowane podaną
liczbę dni temu; przed ilością dni można podać znaki + lub -,
oznaczają one wówczas odpowiednio: pozycje, na które były
modyfikowane więcej/mniej dni temu;
Polecenie find: zaawansowane wyszukiwanie plików na podstawie
nazwy, rozmiaru, daty modyfikacji, daty ostatniego użycia, etc.
Wyszukiwanie plików
Podstawowe
polecenia
ctime <dni>
- pozycje, których i-węzeł był modyfikowany podaną liczbę dni
temu; przed ilością dni można podać znaki + lub -, oznaczają one wówczas
odpowiednio: pozycje, których i-węzeł był modyfikowany więcej/mniej dni
temu;
type <typ>
- określenie jakie pozycje mają zostać odnalezione: f-pliki zwykłe,
d-katalogi, l-dowiązania symboliczne, c-urządzenia znakowe(niebuforowane), b-
urządzenia blokowe (buforowane), p-kolejki FIFO;
exec <polecenie> [{}]\;
- wykonuje dowolne polecenie; polecenie może
zostać wykonane na odszukanych pozycjach; wówczas należy zastosować jako
argument polecenia znaki {}.
Polecenie find: zaawansowane wyszukiwanie plików na podstawie
nazwy, rozmiaru, daty modyfikacji, daty ostatniego użycia, etc.
Wyszukiwanie plików
Podstawowe
polecenia
Wyszukanie wszystkich plików i katalogów o nazwie
abc.txt
, które
znajdują sie w katalogu domowym użytkownika (oraz podkatalogach);
$ find ~ name abc.txt
Wyszukanie wszystkich plików i katalogów o nazwie z rozszerzeniem „.txt”, które
znajdują się w bieżącym katalogu (oraz jego ewentualnych podkatalogach)
$ find . name "*.txt"
Wyszukanie wszystkich plików zwykłych w katalogu
/tmp
oraz jego
podkatalogach), na których nie były wykonywane żadne operacje w ciągu
ostatnich 48 godzin oraz usunie wszystkie odnalezione pliki; dodatkowy
przełącznik
powoduje, że zostaną wyświetlone nazwy odnalezionych
plików, pomimo wykonania na nich dodatkowej operacji (tutaj
rm
)
$ find /tmp type f atime +2 exec rm {}\; print
Polecenie find. Przykłady.
Operacje na plikach
Podstawowe
polecenia
Operacje na plikach
Liczba linii w pliku:
$ wc l plik.txt
$ wc l /etc/passwd
43 /etc/passwd
Liczba słów w pliku:
$ wc w plik.txt
$ wc w /etc/passwd
68 /etc/passwd
Operacje na plikach
Podstawowe
polecenia
Wycinanie fragmentu pliku: cut
-d określenie separatora, domyślnie spacja
-f zakres kolumn, można podawać zakresy po przecinku
n-m kolumny od n-tej do m-tej
-m kolumny od pierwszej do m-tej
n- kolumny od n-tej do ostatniej
$ cut d : f 34,6 /etc/passwd
13:13:/bin
33:33:/var/www
34:34:/var/backups
38:38:/var/list
39:39:/var/run/ircd
41:41:/var/lib/gnats
Operacje na plikach
Podstawowe
polecenia
Wycinanie fragmentu pliku: cut
-c liczba znaków od n-tej do m-tej pozycji
n-m pozycja od n-tej do m-tej
-m pozycja od pierwszej do m-tej
n- pozycja od n-tej do ostatniej
-b liczba bajtów od n-tego do m-tego
$ cut c 212 /etc/passwd
tp:x:116:12
shd:x:117:6
rchestra:x:
ostfix:x:11
nsmasq:x:12
vidiapersi
Użytkownik w systemie
Podstawowe
polecenia
Użytkownik reprezentowany jest 32 bitową wartością nazywaną user id
Każdy proces działa w kontekście jakiegoś użytkownika
Każdy zasób (np. plik) ma właściciela (określonego użytkownika)
Główne informacje o użytkownikach przechowywane są w pliku /etc/passwd
Hasła (w postaci zaszyfrowanej) przechowywane są w pliku /etc/shadow
Niektóre konta użytkowników w systemie są kontami systemowymi i nie odnoszą
się do konkretnych osób
Użytkownik w systemie
Podstawowe
polecenia
Użytkownik reprezentowany jest 32 bitową wartością nazywaną user id
Identyfikator o wartości 0 jest identyfikatorem specjalnym i jest przeznaczony dla
administratora systemu. Użytkownik z userid równym 0 nosi zawsze nazwę root.
Każdy proces działający w systemie jest wykonywany w kontekście jakiegoś
użytkownika. Pozwala to określić systemowi prawa dostępu do zasobów (np.
plików). Wyjątkiem są procesy działające w kontekście użytkownika z userid
równym 0. Procesu takiego nie dotyczą ograniczenia związane z prawami
dostępu.
Użytkownik w systemie
Podstawowe
polecenia
Główne pliki z informacjami o użytkowniku
/etc/passwd – wszystkie dane, oprócz hasła
student:x:1000:1000:student,,,:/home/student:/bin/bash
/etc/shadow – pliki z hasłami użytkowników
student:$6$PhquTvdk$GsZ1zhK89pu1Vxh6.:16102:0:99999:7:::
/etc/group – definicja grup oraz ich członków
student:x:1000:
sudo:x:1000:student
Zmiana użytkownika
Podstawowe
polecenia
Polecenie su
Przejście na użytkownika root
$ su
$ su
Przejście na użytkownika <user>
$ su <user>
$ su <user>
„-” spowoduje załadowanie nowych zmiennych środowiskowych
Polecenia z uprawnieniami root
Podstawowe
polecenia
Polecenie sudo; plik konfiguracyjny /etc/sudoers
sudo
zwykle nie jest domyślnie skonfigurowane na dystrybucjach
serwerowych. Jeśli jest zdefiniowana grupa sudo, wówczas zwykle
wystarczy dodać użytkownika do tej grupy (polecenie
usermod
)
$ sudo ls al
[sudo] password for student:
student nie wyst?puje w pliku sudoers. Ten incydent zostanie
zgłoszony.
Składnia:
$ sudo <polecenie>
$ sudo cat /etc/shadow
Polecenie id
Podstawowe
polecenia
Informacje o użytkownikach oraz grupach, do których należy
Pobranie informacji o aktualnym użytkowniku (joe)
id lub id joe
uid=1000(joe) gid=1000(joe) groups=24(cdrom), 29(audio), 44(video),
1000(joe)
Pobranie informacji o innym użytkowniku
$ id root
uid=0(root) gid=0(root) groups=0(root)
Grupy do których należy użytkownik
$ groups
joe cdrom audio video
Procesy
Podstawowe
polecenia
Polecenie ps
$ ps aux
USER
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 24592 2508 ? Ss 11:48 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 11:48 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 11:48 0:00 [ksoftirqd/0]
root 6 0.0 0.0 0 0 ? S 11:48 0:06 [migration/0]
root 7 0.0 0.0 0 0 ? S 11:48 0:00 [watchdog/0]
root 37 0.0 0.0 0 0 ? S< 11:48 0:00 [cpuset]
…......................................
Inna popularna kombinacja opcji:
ps fax
Dodatkowe opcje można podać za pomocą klucza
o
Nawiasy w kolumnie COMMAND oznaczają, że lista
argumentów programu nie jest dostępna.
Procesy
Podstawowe
polecenia
Polecenie kill oraz killall
Można jedynie zabijać procesy, do których mamy uprawnienia.
$ kill <signal> <PID>
$ ps fax | grep thunderbird
3478 ? Sl 1:22 /usr/lib/thunderbird/thunderbird
7770 pts/11 S+ 0:00 grep --color=auto thunderbird
$ kill -9 3478
$ killall thunderbird
UWAGA: Procesu init (PID=1) nie można zabić.
Procesy
Podstawowe
polecenia
Polecenie: top. Informacja o obciążeniu systemu.
top 22:16:01 up 1 day, 4:37, 3 users, load average: 0,34, 0,28, 0,34
Tasks: 290 total, 2 running, 288 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3,8 us, 2,8 sy, 0,0 ni, 93,0 id, 0,3 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 8106596 total, 5220272 used, 2886324 free, 51752 buffers
KiB Swap: 16129016 total, 0 used, 16129016 free. 1949628 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1676 root 20 0 717132 489048 118448 S 13,3 6,0 30:04.38 Xorg
4154 student 20 0 2000580 874200 62064 S 11,9 10,8 73:29.68 firefox
4334 student 20 0 1167272 139016 35812 S 10,9 1,7 28:37.18 plugincontaine
3681 student 20 0 680800 23796 14024 S 4,6 0,3 0:24.91 gnometerminal
3286 student 20 0 657792 169200 43324 S 2,7 2,1 7:25.29 compiz
1099 student 20 0 27788 1840 1176 R 0,7 0,0 0:00.22 top
562 root 51 0 0 0 0 S 0,3 0,0 0:51.92 irq/51iwlwifi
909 root 20 0 0 0 0 S 0,3 0,0 0:00.81 kworker/0:0
Pamięć
Podstawowe
polecenia
Polecenie free – informacja o pamięci wolnej i używanej oraz
pamięci buforów wykorzystywanych przez jądro systemu
$ free
total used free shared buffers cached
Mem: 8106596 5156420 2950176 89472 53200 1949872
/+ buffers/cache: 3153348 4953248
Swap: 16129016 0 16129016
Informacja o dostępnej pamięci RAM dostępna jest również w pliku:
/proc/meminfo
$ cat /proc/meminfo
MemTotal: 8106596 kB
MemFree: 2946028 kB
Buffers: 54004 kB
Cached: 1950336 kB
SwapCached: 0 kB
Active: 3372728 kB
Inactive: 1118480 kB
...
Usługi
Podstawowe
polecenia
Różne schematy: System V init, systemd, upstart
System V init
Usługi znajdują się w katalogu:
/etc/init.d
Zarządzanie usługami:
$ service <nazwa_uslugi> <start|stop|restart|status>
lub
$ /etc/init.d/<nazwa_uslugi> <start|stop|restart|status>
$ service apache2 restart
$ /etc/init.d/postfix start
Pakiety
Pakiety
Większość oprogramowania rozpowszechniana jest w dwóch postaciach:
źródeł i pakietu instalacyjnego.
Instalacja programu
Z pakietu instalacyjnego
Ze źródeł
Instalacja ze źródeł
Pakiety
Instalacja ze źródeł → kompilacja zoptymalizowana pod
konkretne urządzenie
Rozpakowanie
$ tar -zxvf gettheport.tar.gz
$ gunzip plik.tar.gz
$ bunzip2 plik.tar.bz2
./configure – sprawdza, czy w systemie zainstalowane są wymagane
biblioteki lub programy, co ustrzeże Cię przed błędami kompilacji.
Makefile przeprowadza cały proces kompilacji programu. Dzieli się
przeważnie na trzy części:
make – sekcja kompilująca źródła
install – sekcja instalująca skompilowane pliki
uninstall – sekcja odinstalowująca pliki zainstalowane
$ ./configure
$ make
# make install
Pakiety
Pakiety
Dwa typy pakietów: rpm oraz deb
openssh
-
3.5p1
-
107
.
i586
.rpm
Nazwa
Wersja
Numer wydania
Architektura
xtartan
_
2.3
-
11
_
i386
.deb
Instalacja pakietu znajdującego się na dysku lokalnym
# rpm ivh openssh3.5p1107.i586.rpm
# dpkg i xtartan_2.311_i386.deb
Deinstalacja pakietu
# rpm e openssh
# dpkg r xtartan
Pakiety
Pakiety
Dwa typy pakietów: rpm oraz deb
Lista zainstalowanych pakietów
$ rpm qa
$ dpkgquery l
Lista plików dostarczanych z pakietem
$ rpm ql openssh
$ dpkgquery L xtartan
Pakiety
Pakiety
Instalacja pakietów z użyciem yum oraz apt
Instalacja za pomocą narzędzi yum (rpm) oraz apt (deb)
# yum install openssh
# aptget update
# aptget install openssh
Wyszykiwanie pakietów
$ yum search ssh
$ aptcache search ssh
OpenSSH
OpenSSH
Projekt:
Pakiety (Debian): openssh-server oraz openssh-client
Dostępny na platformy: Linux, BSD, Windows (CygWin)
SSH zapewnia szyfrowane, a zatem bezpieczne, połączenia pomiędzy
urządzeniami.
Narzędzia dostarczane z pakietami:
ssh – klient
sshd – demon serwera ssh
ssh-keygen - generowanie kluczy
ssh-keyscan – odczyt hostkey z klucza
ssh-agent – przechowuje odszyfrowany klucz prywatny w pamięci
Logowanie
OpenSSH
ssh user@hostname
ssh hostname
ssh user@hostname
lub
ssh l username hostname
ssh o User=username hostname
ssh student@192.168.1.67
Gdy serwer nasłuchuje na innym porcie:
ssh user@hostname p port
xterm
bash
ssh
ls
csh
sshd
tcp/22
Kopiowanie plików
OpenSSH
scp – narzędzie do szyfrowanego przesyłania plików pomiędzy
urządzeniami
Na urządzeniu <host> musi być uruchomiony serwer ssh
$ scp <plik_lokalny> <user>@<host>:<sciezka>
$ scp <user>@<host>:<sciezka_do_pliku> <plik_lub_katalog_lokalny>
$ scp /etc/hostname student@www.test.org:/tmp/
$ scp student@www.test.org:/etc/hostname .
Polecenia na zdalnym urządzeniu
OpenSSH
Podając jako ostatni parametr polecenie, będzie ono wykonane
i automatycznie nastąpi zamknięcie sesji
ssh <user>@<hostname> <polecenie>
$ ssh student@10.0.0.45 ls al
Wykonywanie sekwencji komend:
$ ssh
<user>@<hostname>
$(<lista_komend.txt)
lub
ssh
<user>@<hostname>
"`cat lista_komend.txt`"