Podstawowe komendy w systemach Linux
Dla tych, którzy obawiają się pracy z linuxem przygotowaliśmy mały kurs, który pomoże zaznajomić się z podstawowymi komendami w Linux. Wydawanie poleceń w linuxie wcale nie jest trudniejsze niż w innych systemach operacyjnych. Tak naprawdę jest bardziej ustandaryzowane i zadbane – przez co de facto prostsze. Poznaj podstawowe komendy Linux i przekonaj się, że nie różnią się one tak bardzo od tych np. z Windows.
Zacznijmy od tego jak zdalnie zalogować się do konsoli naszego serwera z linuxem, aby móc wydawać komendy systemowe.
Logowanie
Aby zalogować się na serwer linux (np. VPS) z systemu Windows najlepiej zaopatrzyć się w klienta SSH. Osobiście preferuję PuTTy. W systemie macOS można użyć po prostu wbudowanego polecenia ’ssh’ w terminalu.
Wpisujemy IP serwera oraz port. Standardowy port to 22 ale równie dobrze może być to inny numer portu np. 1022 lub inny.
Następnie jedynie musimy kliknąć w w przycisk Open znajdujący się w dolnej części okienka.
Po uruchomieniu wyświetli nam się prośba o podanie loginu.
Standardowo po instalacji serwera dostajemy konto root (super użytkownika) lub inną nazwę użytkownika. Wpisujemy w polu login as: root i klikamy enter. Następnie wpisujemy hasło.
Uwaga: hasło nie wyświetla się w programie. Jest to spowodowane kwestiami bezpieczeństwa.
Po zalogowaniu jesteśmy już w „systemie” i możemy korzystać z naszego serwera.
Poruszanie się po katalogach
podstawowe komendy linux do poruszania się w systemie:
cd /home
– (/home – katalog) komenda ta służy do „wejścia” do danego katalogu. W tym przykładzie do katalogu /home.cd ..
– cofamy się o jeden katalog.pwd
– zwraca katalog, w którym obecnie się znajdujemydir
– wyświetla nam zawartość kataloguls
– j.w (ls -la
)
Przykład działania komend w linux:
root@srv1 ~]# cd /home [root@srv1 home]# cd .. [root@srv1 /]# pwd / [root@srv1 /]# dir [root@srv1 /]# ls
Tworzenie, edycja i kasowanie plików / folderów
mkdir <nazwa>
– tworzymy katalog.rm <nazwa>
– usuwamy plik.rm -rf <nazwa>
lub rmdir
– usuwamy katalog.cp <obecny-plik> <nowy-plik>
– kopiujemy plik.mv <obecny-plik> <nowy-plik>
– przenosimy plik (może również służyć do zmiany nazwy).touch <nazwa-pliku>
– tworzymy nowy plik tekstowy.
[root@srv1 /]# cd /root [root@srv1 ~]# pwd /root [root@srv1 ~]# mkdir temp [root@srv1 ~]# cd temp/ [root@srv1 temp]# touch plik.txt [root@srv1 temp]# ls plik.txt [root@srv1 temp]# mv plik.txt rzeczy.txt [root@srv1 temp]# ls rzeczy.txt [root@srv1 temp]#
Prawa do plików
chmod
xxx plik (xxx – cyfry) – zmiana praw do plików/katalogów (przykłady na końcu artykułu).chown
<user:grupa> <plik> – zmiana właściciela pliku / kataloguchgrp
<grupa> <plik> – zmiana grupy pliku / katalogu
Ciekawostki:chmod 777 *
– *-zastępuje nazwę pliku. Oznacza że komenda zostanie użyta dla wszystkich plików w danym katalogu.chmod 777 *plik
– komenda ta zastosuje się dla wszystkich plików / katalogów, których nazwa kończy się na „plik”. Początkowy człon nazwy może być dowolny. Można również stosować to do formatów plików. Np. *.zip, *.sql, *.rar.chown test katalog -R
– komenda ta zmieni właściciela katalogu „katalog” wraz z jego zawartością na użytkownika test.
Przykład poleceń w linux:
[root@srv1 temp]# ls -la total 4 drwxr-xr-x 2 root root 23 Jun 6 15:51 . dr-xr-x---. 16 root root 4096 Jun 6 15:50 .. -rw-r--r-- 1 root root 0 Jun 6 15:50 rzeczy.txt [root@srv1 temp]# chmod 600 rzeczy.txt [root@srv1 temp]# ls -la total 4 drwxr-xr-x 2 root root 23 Jun 6 15:51 . dr-xr-x---. 16 root root 4096 Jun 6 15:50 .. -rw------- 1 root root 0 Jun 6 15:50 rzeczy.txt
root@srv1:~# chown -R tomek:ekipa dane/
Tworzenie, edycja, kasowanie użytkowników
adduser
<nazwa> – tworzenie użytkownika z grupą, hasłem i katalogiem domowym.
root@srv1:~# adduser tomek Adding user `tomek' ... Adding new group `tomek' (1000) ... Adding new user `tomek' (1000) with group `tomek' ... Creating home directory `/home/tomek' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for tomek Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n]
useradd
<nazwa> – szybkie tworzenie użytkownika.
root@srv1:~# useradd monika root@srv1:~#
userdel
<nazwa> – kasowanie użytkownika.
root@srv1:~# userdel monika root@srv1:~#
passwd
<nazwa> – zmiana (nadanie) hasła użytkownika.
root@srv1:~# passwd tomek New password: Retype new password: passwd: password updated successfully root@srv1:~#
groupadd
<nazwa> – tworzenie grupy dla użytkowników.
root@srv1:~# groupadd ekipa root@srv1:~#
groupdel
<nazwa> – kasowanie grupy dla użytkowników.usermod
<opcje> – modyfikuje użytkownika, np dodaje do grupy.
root@srv1:~# usermod -g ekipa tomek root@srv1:~#
id
<nazwa> – wyświetla informacje o użytkowniku i grupach, do których należy
root@srv1:~# id tomek uid=1000(tomek) gid=1001(ekipa) groups=1001(ekipa)
su <nazwa-użytkownika>
– zmiana użytkownikawho
– sprawdzamy kto jest zalogowanywhoami
– sprawdzamy na jakie konto jesteśmy zalogowani
root@srv1:~# su tomek $ whoami tomek $
logout
lub exit
– wylogowujemy się
Inne komendy:
Czasami potrzebujemy zrestartować czy wyłączyć maszynę. W tym celu wydajemy odpowiednie polecenia dla systemy linux:shutdown
– wyłączanie systemu np. shutdown -h now
reboot
– restart systemu
Jeżeli nie jesteśmy zalogowani jako użytkownik 'root’ musimy użyć wcześniej sudo
.
*sudo jest to komenda pozwalająca wykonać zadanie z najwyższymi uprawnieniami użytkownika root, o ile dany użytkownik ma do tego nadane odpowiednie prawa w /etc/sudoers.
Aktualizacja systemu linux
Debian / Ubuntu
apt-get update (krócej: apt update
)
apt-get upgrade (krócej: apt upgrade
)
lub
sudo apt-get update
sudo apt-get upgrade
CentOS
yum update
Przykład polecenia aktualizacji w CentOS:
[root@srv1 temp]# yum update Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * base: centos.slaskdatacenter.com * epel: ftp.icm.edu.pl * extras: centos.slaskdatacenter.com * rpmforge: ftp.nluug.nl * updates: ftp.icm.edu.pl 4 packages excluded due to repository priority protections No packages marked for update [root@srv1 temp]#
Aktualizacja w Debian/Ubuntu:
root@srv1:~# apt update Hit:1 http://security.debian.org buster/updates InRelease Hit:2 http://ftp.debian.org/debian buster InRelease Hit:3 http://ftp.debian.org/debian buster-updates InRelease Reading package lists... Done Building dependency tree Reading state information... Done All packages are up to date. root@srv1:~#
root@srv1:~# apt upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. root@srv1:~#
Instalacja programów linux
Instalacja programów Debian/Ubuntu:
apt-get install <nazwa-programu>
sudo apt-get install <nazwa-programu>
Instalacja programów CentOS:
yum install <nazwa-programu>
Kasowanie programów Debian/Ubuntu:
apt-get remove <nazwa-programu>
sudo apt-get remove <nazwa-programu>
Kasowanie programów CentOS:
yum remove <nazwa-programu>
Podstawowe monitorowanie pracy serwera linux
(lista programów i komend. Niektóre mogą wymagać instalacji)
top
– program który pokaże nam zużycie procesora, pamięci ram oraz ilość procesów. Można również wyśledzić który proces pochłania nam najwięcej zasobów.htop
– nakładka graficzna na program top. Znacznie wygodniejszy w korzystaniu od programu top.df -h
– komenda ta pokaże nam ilość użytego/wolnego miejsca na dyskach.du -sh /katalog
– komenda podsumuje nam ile zajmuje dany katalogvmstat
– użycie pamięci, iowait, cpuvnstat
– program do monitorowania ruchu sieciowegoiftop
– pokazuje aktualne zużycie sieci oraz wszystkie połączenia
Przykład polecenia w linux:
[root@srv1 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 41G 3.8G 37G 10% / devtmpfs 24G 0 24G 0% /dev tmpfs 24G 0 24G 0% /dev/shm tmpfs 24G 289M 24G 2% /run tmpfs 24G 0 24G 0% /sys/fs/cgroup /dev/md0 202G 1.9G 190G 1% /home /dev/sde1 497M 251M 246M 51% /boot tmpfs 4.7G 0 4.7G 0% /run/user/1000 tmpfs 4.7G 0 4.7G 0% /run/user/0 [root@srv1 /]#
Diagnostyka sieciowa linux
ping
– program, którym testujemy czas odpowiedzi serwera. Pozwala zdiagnozować problemy z hostami, czasem odpowiedzi czy nawet statusem serwera. Jak sprawdzić połączenie internetowe – polecenie ping. | Jak to zrobić na hostingu? (hitme.pl)
[root@srv1 /]# ping google.com PING google.com (172.217.20.206) 56(84) bytes of data. 64 bytes from waw02s08-in-f206.1e100.net (172.217.20.206): icmp_seq=1 ttl=56 time=23.8 ms 64 bytes from waw02s08-in-f206.1e100.net (172.217.20.206): icmp_seq=2 ttl=56 time=22.7 ms 64 bytes from waw02s08-in-f206.1e100.net (172.217.20.206): icmp_seq=3 ttl=56 time=25.2 ms 64 bytes from waw02s08-in-f206.1e100.net (172.217.20.206): icmp_seq=4 ttl=56 time=22.8 ms ^C --- google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3016ms rtt min/avg/max/mdev = 22.722/23.688/25.246/1.021 ms [root@srv1 /]#
traceroute
– tym programem testujemy „ścieżkę” do serwera. Pozwoli zdiagnozować problemy „na trasie” do serwera. Jak sprawdzić połączenie internetowe – traceroute. | Jak to zrobić na hostingu? (hitme.pl)
mtr
– jest to program bardzo podobny do traceroute / tracert. Program cechuje się tym że pokazuje prócz ścieżki do serwera ilość pakietów oraz gdzie są wytracane (czy po drodze czy na serwerze końcowym)
dig
– odpytywanie serwerów nazw o domenę, np. dig hitme.pl
lub dig hitme.pl @dns3.hitme.net.pl
aby odpytać konkretny serwer DNS. Jest to odpowiednik polecenia nslookup z Windows. Bardzo przydatne przy analizowaniu problemów z DNS.
root@srv1:~# dig mojewp.hmcloud.pl @dns3.hitme.net.pl ; <<>> DiG 9.11.5-P4-5.1+deb10u9-Debian <<>> mojewp.hmcloud.pl @dns3.hitme.net.pl ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48919 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;mojewp.hmcloud.pl. IN A ;; ANSWER SECTION: mojewp.hmcloud.pl. 100 IN A 185.242.134.73 ;; AUTHORITY SECTION: mojewp.hmcloud.pl. 100 IN NS dns3.hitme.net.pl. mojewp.hmcloud.pl. 100 IN NS dns4.hitme.net.pl. ;; ADDITIONAL SECTION: dns3.hitme.net.pl. 3600 IN A 185.242.132.100 ;; Query time: 0 msec ;; SERVER: 185.242.132.100#53(185.242.132.100) ;; WHEN: Mon Dec 11 06:57:11 CET 2023 ;; MSG SIZE rcvd: 126 root@srv1:~#
whois
– aplikacja ta pozwala nam uzyskać informacje m.in. O serwerach DNS domeny, firmie która jest zarejestrowana oraz o firmie która jest właścicielem danego adresu IP.
root@srv1:~# whois hitme.pl DOMAIN NAME: hitme.pl registrant type: organization nameservers: dns1.rootvps.pl. [185.242.133.50] dns2.rootvps.pl. [193.178.43.60] created: 2007.07.30 09:46:39 last modified: 2022.07.22 20:37:01 renewal date: 2026.07.30 09:46:39 no option dnssec: Unsigned REGISTRAR: HitMe.pl Marek Bajerski ul. Wiczlińska 34 81-578 Gdynia +48.530630021 domeny@HitMe.pl www.hitme.pl
Jak widzisz podstawowe komendy linux nie są takie straszne i nie należy się ich bać. Jeśli jesteś zainteresowany bardziej zaawansowanymi operacjami i poleceniami linux przeczytaj dalej artykuł: Podstawowe operacje w systemach Linux dla początkujących