Podstawowe komendy w systemach Linux

Obrazek dla Podstawowe komendy 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.

putty
Okno programu PuTTy. Ustawienia sesji.

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.

ssh putty2
Wprowadzanie hasła użytkownika w konsoli Linux.

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ę znajdujemy
dir – wyświetla nam zawartość katalogu
ls – 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 / katalogu
chgrp <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żytkownika
who – sprawdzamy kto jest zalogowany
whoami – 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 katalog
vmstat – użycie pamięci, iowait, cpu
vnstat – program do monitorowania ruchu sieciowego
iftop – 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