Linuxi pÔhikÀsud testijatele ja mitte ainult

EessÔna

Tere kÔigile! Mina olen Sasha ja olen rohkem kui kuus aastat tegelenud tagaplaani testimisega (Linuxi teenused ja APId). Artikli idee tekkis pÀrast jÀrjekordset palvet tuttavalt testijalt, et anda soovitusi, mida lugeda Linuxi kÀskude kohta enne tööintervjuud. Tavaliselt eeldatakse QA inseneri kandidaatidelt pÔhiliste kÀskude tundmist (loomulikult, kui töö hÔlmab Linuxit), kuid kuidas mÔista, millistest kÀskudest tasub intervjuuks ettevalmistamisel lugeda, kui kogemus Linuxiga on vÀike vÔi puudub tÀielikult?

SeetĂ”ttu, kuigi sellest on juba palju kirjutatud, otsustasin ma siiski kirjutada veel ĂŒhe artikli „Linux algajatele“ ning loetleda here pĂ”hikomandod, mida on vaja teada enne igasugust vestlust osakonda (vĂ”i ettevĂ”ttesse), kus Linuxi kasutatakse. MĂ”tlesin, milliseid kĂ€ske ja tööriistu ning milliste parameetritega kasutan kĂ”ige sagedamini, kogusin kolleegide tagasisidet ja kokkupanin selle kĂ”ik ĂŒheks artikliks. Artikkel jaguneb tinglikult kolmeks osaks: kĂ”igepealt lĂŒhike teave Linuxi terminali sisendi ja vĂ€ljundi pĂ”hialuste kohta, siis ĂŒlevaade kĂ”ige pĂ”hjalikumatest kĂ€skudest ning kolmandas osas kirjeldatakse, kuidas lahendada tĂŒĂŒpilisi ĂŒlesandeid Linuxis.

Iga kĂ€su puhul on palju valikuid, siin ei loetleta neid kĂ”iki. Alati saab sisestadamanvĂ”i—help, et saada rohkem teavet kĂ€su kohta.

NĂ€ide:

[user@testhost ~]$ mkdir --help
Kasutus: mkdir [OPTION]... KATALOOG...
Loo KATALOOG(id), kui need ei ole juba olemas.

Pika variandi kohustuslikud argumendid on kohustuslikud ka lĂŒhikeste variantide puhul.
  -m, --mode=MODE   mÀÀrake faili reĆŸiim (nagu chmod), mitte a=rwx - umask
  -p, --parents     ei teata viga, kui on olemas, tehke vanemad kataloogid vajadusel
  -v, --verbose     printige iga loodud katalooge kohta sÔnum
  -Z                   seadistage iga loodud katalooge SELinuxi turbe kontekst
                         vaikimisi tĂŒĂŒbiks
      --context[=CTX]  nagu -Z, vÔi kui CTX on mÀÀratud, seadistage SELinux vagy SMACK turbe kontekst CTX-ks
      --help     kuvada see abi ja lÔpetada
      --version  vÀljund versiooni teavet ja lÔpetada

GNU coreutils veebiallikas: 
TÀielikuks dokumentatsiooniks kÀivitage: info coreutils 'mkdir rakendamine'

Kui mÔni kÀsk kestab liiga kaua, saate selle lÔpetada, vajutades konsolis Ctrl+C (protsessile saadetakse signaal SIGINT).

Veidi kÀskude vÀljundist

Kui protsess Linuxis kĂ€ivitatakse, luuakse selle protsessi jaoks 3 standardset andmevoogu: stdin, stdout ja stderr. Need on numbriga 0, 1 ja 2 vastavalt. Kuid meid huvitavad praegu stdout ja vĂ€hemal mÀÀral, stderr. Nimetustest ei ole raske Ă€ra arvata, et stdout kasutatakse andmete vĂ€ljundiks, ja stderr — veateadete vĂ€ljundiks. Vaikimisi, kui kĂ€ivitate Linuxis kĂ€su stdout ja stderr kann kogu teabe konsoolile, kuid kui kĂ€su vĂ€ljund on suur, vĂ”ib olla mugav suunata see faili. Selleks vĂ”ib nĂ€iteks kasutada:

[user@testhost ~]$ man signal > man_signal

Kui me vaatame faili sisu man_signal, nÀeme, et see on identne sellega, mis oleks, kui kÀivitada kÀsk `man signal`.

Suunamisoperatsioon `>` kasutab vaikimisi stdout. Saame suunamise mÀÀrata stdout selgelt: `1>`. Samuti saame mÀÀrata suunamise stderr: `2>`. Need operatsioonid saab kombineerida, et eraldada kÀsu tavaline vÀljund ja veateated:

[user@testhost ~]$ man signal 1> man_signal 2> man_signal_error_log

Suunata ja stdout, ja stderr ĂŒhte faili saab jĂ€rgmiselt:

[user@testhost ~]$ man signal > man_signal 2>&1

Suunamisoperatsioon `2>&1` tÀhendab suunamist stderr seal, kuhu suunatakse stdout.

Veel ĂŒks mugav tööriist sisend-vĂ€ljundi töötamiseks (teisisĂ”nu, see on mugav protsessidevaheline suhtlemise vahend) — pipe (vĂ”i toru). Torusid kasutatakse sageli mitme kĂ€su ĂŒhendamiseks: stdout kĂ€sk suunatakse stdin jĂ€rgmiseks, ja nii edasi kettina:

[user@testhost ~]$ ps aux | grep docker | tail -n 2
root     1045894  0.0  0.0   7512  3704 ?        Sl   16:04   0:00 docker-containerd-shim -namespace moby -workdir \/var\/lib\/docker\/containerd\/daemon\/io.containerd.runtime.v1.linux\/moby\/2fbfddaf91c1bb7b9a0a6f788f3505dd7266f1139ad381d5b51ec1f47e1e7b28 -address \/var\/run\/docker\/containerd\/docker-containerd.sock -containerd-binary \/usr\/bin\/docker-containerd -runtime-root \/var\/run\/docker\/runtime-runc
531      1048313  0.0  0.0 110520  2084 pts\/2    S+   16:12   0:00 grep --color=auto docker

Linuxi pÔhilised kÀsud

pwd

Kuvage praegune (töötav) kataloog.

[user@testhost ~]$ pwd
\/home\/user

date

Kuvage sĂŒsteemi praegune kuupĂ€ev ja kellaaeg.

[user@testhost ~]$ date
Mon Dec 16 13:37:07 UTC 2019
[user@testhost ~]$ date +%s
1576503430

w

See kĂ€sk nĂ€itab, kes on sĂŒsteemis sisse logitud. Lisaks kuvatakse ekraanile ka uptime ja LA (koormuse keskmine).

[user@testhost ~]$ w
 05:47:17 up 377 days, 17:57,  1 user,  load average: 0,00, 0,01, 0,05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user     pts\/0    32.175.94.241    05:47    2.00s  0.01s  0.00s w

ls

Kuvage katalooge sisu. Kui te pole teed edastanud, kuvatakse praeguse katalooge sisu.

[user@testhost ~]$ pwd
\/home\/user
[user@testhost ~]$ ls
qqq
[user@testhost ~]$ ls \/home\/user
qqq
[user@testhost ~]$ ls \/
bin  boot  cgroup  dev  etc  home  lib  lib64  local  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  swap  sys  tmp  usr  var

Isiklikult kasutan sageli valikuid -l (pikad loendivormingud — failide kohta lisainfot veerus) -t (faili/direktori viimase muutmise jĂ€rgi sortimine) ja -r (tagurpidi sortimine — koos -t kĂ”ige „karmimad” failid saavad olema all):

[user@testhost ~]$ ls -ltr /
total 4194416
drwxr-xr-x    2 root root    4096 Jan  6  2012 srv
drwxr-xr-x    2 root root    4096 Jan  6  2012 selinux
drwxr-xr-x    2 root root    4096 Jan  6  2012 mnt
drwxr-xr-x    2 root root    4096 Jan  6  2012 media
drwx------    2 root root   16384 Oct  1  2017 lost+found
drwxr-xr-x    2 root root    4096 Oct  1  2017 local
drwxr-xr-x   13 root root     4096 Oct  1  2017 usr
drwxr-xr-x   11 root root     4096 Apr 10  2018 cgroup
drwxr-xr-x    4 root root    4096 Apr 10  2018 run
-rw-------    1 root root 4294967296 Sep 10  2018 swap
dr-xr-xr-x   10 root root     4096 Dec 13  2018 lib
drwxr-xr-x    6 root root    4096 Mar  7  2019 opt
drwxr-xr-x   20 root root     4096 Mar 19  2019 var
dr-xr-xr-x   10 root root   12288 Apr  9  2019 lib64
dr-xr-xr-x    2 root root    4096 Apr  9  2019 bin
dr-xr-xr-x    4 root root    4096 Apr  9  2019 boot
dr-xr-xr-x    2 root root   12288 Apr  9  2019 sbin
dr-xr-xr-x 3229 root root          0 Jul  2 10:19 proc
drwxr-xr-x   34 root root     4096 Oct 28 13:27 home
drwxr-xr-x   93 root root     4096 Oct 30 16:00 etc
dr-xr-x---   11 root root     4096 Nov  1 13:02 root
dr-xr-xr-x   13 root root         0 Nov 13 20:28 sys
drwxr-xr-x   16 root root     2740 Nov 26 08:55 dev
drwxrwxrwt    3 root root    4096 Nov 26 08:57 tmp

On 2 spetsiaalset kausta nime: „.» ja «..«. Esimene tĂ€histab praegust katalooge, teine aga vanemat katalooge. Neid on mugav kasutada erinevates kĂ€sklustes, sealhulgas ls:

[user@testhost home]$ pwd
/home
[user@testhost home]$ ls ..
bin  boot  cgroup  dev  etc  home  lib  lib64  local  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  swap  sys  tmp  usr  var
[user@testhost home]$ ls ../home/user/
qqq

Samuti on kasulik valik peidetud failide, mis algavad «.«) — -a:

[user@testhost ~]$ ls -a
.  ..  1  .bash_history  .bash_logout  .bash_profile  .bashrc  .lesshst  man_signal  man_signal_error_log  .mongorc.js  .ssh  temp  test  .viminfo

Ja veel saab kasutada valikut -h — vĂ€ljund inimloetavas formaadis (pane tĂ€hele failide suurusi):

[user@testhost ~]$ ls -ltrh
total 16K
-rwxrwx--x 1 user user   31 Nov 26 11:09 temp
-rw-rw-r-- 1 user user 6.0K Dec  3 16:02 1
drwxrwxr-x 2 user user 4.0K Dec  4 10:39 test

cd

Muuda praegust katalooge.

[user@testhost ~]$ pwd
/home/user
[user@testhost ~]$ cd /home/
[user@testhost home]$ pwd
/home

Kui katalooge nime argumendina ei edastata, kasutatakse keskkonna muutujaid $HOME, st kodukatalooge. Samuti vĂ”ib olla mugav kasutada `~` — erimĂ€rk, mis tĂ€hendab $HOME:

[user@testhost etc]$ pwd
/etc
[user@testhost etc]$ cd ~/test/
[user@testhost test]$ pwd
/home/user/test

mkdir

Loo kataloog.

[user@testhost ~]$ mkdir test
[user@testhost ~]$ ls -ltr
total 38184
-rw-rw-r-- 1 user user 39091284 Nov 22 14:14 qqq
drwxrwxr-x 2 user user     4096 Nov 26 10:29 test

MĂ”nikord on vaja luua teatud kaustade struktuur: nĂ€iteks kaust kaustas, mida ei eksisteeri. Et mitte mitu korda sisestada mkdir, saab kasutada valikut -p — see lubab luua kĂ”ik puuduvad kaustad hierarhias. Samuti ei mkdir tagasta viga, kui kaust juba eksisteerib.

[user@testhost ~]$ ls
qqq  test
[user@testhost ~]$ mkdir test2/subtest
mkdir: ei olnud vÔimalik kausta 'test2/subtest' luua: sellist faili vÔi kausta ei eksisteeri
[user@testhost ~]$ mkdir -p test2/subtest
[user@testhost ~]$ ls
qqq  test  test2
[user@testhost ~]$ ls test2/
subtest
[user@testhost ~]$ mkdir test2/subtest
mkdir: ei olnud vÔimalik kausta 'test2/subtest' luua: Fail eksisteerib
[user@testhost ~]$ mkdir -p test2/subtest
[user@testhost ~]$ ls test2/
subtest

rm

Kustuta fail.

[user@testhost ~]$ ls
qqq  test  test2
[user@testhost ~]$ rm qqq
[user@testhost ~]$ ls
test  test2

Valik -r vÀÀrib kaustade koos kogu nende sisuga rekursiivset kustutamist, valik -f lubab ignoreerida vigu kustutamisel (nt mitteeksisteeriva faili korral). Need valikud vĂ”imaldavad, julgsime öelda, garanteerida terve failide ja kaustade hierarhia eemaldamine (kui kasutajal on sellele juurdepÀÀs), seega tuleb neid kasutada ettevaatlikult (klassikaline nĂ€ide-nali — "rm -rf /«, teatud tingimustel vĂ”ib see eemaldada, kui mitte kogu sĂŒsteemi, siis vĂ€hemalt vĂ€ga palju olulisi faile, mis on vajalikud selle toimimiseks).

[user@testhost ~]$ ls
test  test2
[user@testhost ~]$ ls -ltr test2/
total 4
-rw-rw-r-- 1 user user    0 Nov 26 10:40 temp
drwxrwxr-x 2 user user 4096 Nov 26 10:40 temp_dir
[user@testhost ~]$ rm -rf test2
[user@testhost ~]$ ls
test

cp

Kopeeri fail vÔi kataloog.

[user@testhost ~]$ ls
temp  test
[user@testhost ~]$ cp temp temp_clone
[user@testhost ~]$ ls
temp  temp_clone  test

Sellel kÀskluse on ka valikud -r ja -f, mida saab kasutada, et garanteerida kataloogide ja kaustade struktuuri kopeerimine teise kohta.

mv

Liiguta vĂ”i nimeta ĂŒmber fail vĂ”i kataloog.

[user@testhost ~]$ ls -ltr
total 4
drwxrwxr-x 2 user user 4096 Nov 26 10:29 test
-rw-rw-r-- 1 user user    0 Nov 26 10:45 temp
-rw-rw-r-- 1 user user    0 Nov 26 10:46 temp_clone
[user@testhost ~]$ ls test
[user@testhost ~]$ mv test test_renamed
[user@testhost ~]$ mv temp_clone test_renamed/
[user@testhost ~]$ ls
temp  test_renamed
[user@testhost ~]$ ls test_renamed/
temp_clone

cat

Kuva faili (vÔi failide) sisu.

[user@testhost ~]$ cat temp
Faili sisu.
Lalalala...

Tuleb tĂ€hele panna ka kĂ€sklusi head (kuva n faili esimestest rida vĂ”i baitidest) ja tail (sellest — edaspidi).

tail

VÀljastada n faili viimastest rida vÔi baitidest.

[user@testhost ~]$ tail -1 temp
Lalalala...

VĂ€ga kasulik on vĂ”imalus -f — see vĂ”imaldab suhtumist uusi andmeid failis reaalajas.

less

MĂ”nikord on tekstifail liiga suur ja selle vĂ€ljatrĂŒkkimisega on keeruline tegeleda. catSellisel juhul saate selle avada kĂ€suga less: fail kuvatakse osade kaupa, on saadaval navigeerimine nende osade vahel, otsing ja muud lihtsad funktsioonid.

[user@testhost ~]$ less temp

Kasuks vÔib tulla ka toru kasutamise vÔimalus ( less [user@testhost ~]$ grep "ERROR" /tmp/some.log | lesspipe):

Kuvada protsesside nimekiri.

ps

[user@testhost ~]$ ps PID TTY TIME CMD 761020 pts/2 00:00:00 bash 809720 pts/2 00:00:00 ps

Mina kasutan tavaliselt BSD valikuid «

aux» — kuvada kĂ”iki sĂŒsteemi protsesse (kuna protsesse vĂ”ib olla palju, kuvaisin ainult esimesed 5 neist, kasutades toru () ja kĂ€skupipe[user@testhost ~]$ ps aux | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19692 2600 ? Ss Jul02 0:10 /sbin/init root 2 0.0 0.0 0 0 ? S Jul02 0:03 [kthreadd] root 4 0.0 0.0 0 0 ? I< Jul02 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? I< Jul02 0:00 [mm_percpu_wq] head):

Paljud kasutavad ka BSD valikuid «

axjf«, mis vÔimaldab kuvada protsesside puu (siin eemaldasin osa vÀljundist illustreerimiseks):«, mis vÔimaldab kuvada protsesside puu (siin olen vÀljundi osa eemaldanud demonstreerimiseks):

[user@testhost ~]$ ps axjf
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
      0       2       0       0 ?             -1 S        0   0:03 [kthreadd]
      2       4       0       0 ?             -1 I<        0   0:00  _ [kworker/0:0H]
      2       6       0       0 ?             -1 I<        0   0:00  _ [mm_percpu_wq]
      2       7       0       0 ?             -1 S        0   4:08  _ [ksoftirqd/0]
...
...
...
      1    4293   4293    4293 tty6        4293 Ss+      0   0:00 /sbin/mingetty /dev/tty6
      1  532967  532964  532964 ?             -1 Sl     495   0:00 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid
 532967  532970  532964  532964 ?            -1 Sl     495 803:06  _ /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid
      1  537162  533357  532322 ?             -1 Sl       0 5067:43 /usr/bin/dockerd --default-ulimit nofile=262144:262144 --dns=172.17.0.1
 537162  537177  537177  537177 ?            -1 Ssl      0 4649:28  _ docker-containerd --config /var/run/docker/containerd/containerd.toml
 537177  537579  537579  537177 ?            -1 Sl       0   4:48  |   _ docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/0ee89b20deb3cf08648cd92e1f3e3c661ccffef7a0971
 537579  537642  537642  537642 ?            -1 Ss    1000  32:11  |   |   _ /usr/bin/python /usr/bin/supervisord -c /etc/supervisord/api.conf
 537642  539764  539764  537642 ?            -1 S     1000   0:00  |   |       _ sh -c echo "READY"; while read -r line; do echo "$line"; supervisorctl shutdown; done
 537642  539767  539767  537642 ?            -1 S     1000   5:09  |   |       _ php-fpm: master process (/etc/php73/php-fpm.conf)
 539767  783097  539767  537642 ?            -1 S     1000   0:00  |   |       |   _ php-fpm: pool test
 539767  783131  539767  537642 ?            -1 S     1000   0:00  |   |       |   _ php-fpm: pool test
 539767  783185  539767  537642 ?            -1 S     1000   0:00  |   |       |   _ php-fpm: pool test
...
...
...

Sellel komandil on palju erinevaid valikuid, seega aktiivse kasutamise korral soovitan tutvuda dokumentatsiooniga. Enamike juhtumite jaoks piisab lihtsalt teadmisest «ps aux«.

kill

Saata protsessile signaal. Vaikimisi saadetakse signaal SIGTERM, mis lÔpetab protsessi.

[user@testhost ~]$ ps ux
USER         PID %CPU %MEM    VSZ   RSS TTY     STAT START   TIME COMMAND
531      1027147  0.0  0.0 119956  4260 ?        S    14:51   0:00 sshd: user@pts/1
531      1027149  0.0  0.0 115408  3396 pts/1    Ss   14:51   0:00 -bash
531      1027170  0.0  0.0 119956  4136 ?        R    14:51   0:00 sshd: user@pts/2
531      1027180  0.0  0.0 115408  3564 pts/2    Ss   14:51   0:00 -bash
531      1033727  0.0  0.0 107960   708 pts/1    S+   15:17   0:00 sleep 300
531      1033752  0.0  0.0 117264  2604 pts/2    R+   15:17   0:00 ps ux
[user@testhost ~]$ kill 1033727
[user@testhost ~]$ ps ux
USER         PID %CPU %MEM    VSZ   RSS TTY     STAT START   TIME COMMAND
531      1027147  0.0  0.0 119956  4260 ?        S    14:51   0:00 sshd: user@pts/1
531      1027149  0.0  0.0 115408  3396 pts/1    Ss+  14:51   0:00 -bash
531      1027170  0.0  0.0 119956  4136 ?        R    14:51   0:00 sshd: user@pts/2
531      1027180  0.0  0.0 115408  3564 pts/2    Ss   14:51   0:00 -bash
531      1033808  0.0  0.0 117268  2492 pts/2    R+   15:17   0:00 ps ux

Kuna protsessil vĂ”ivad olla signaalide töötlejad, kill ei pruugi see alati viia oodatud tulemuse — protsessi kohese lĂ”petamiseni. Protsessi tĂ€pselt "tapmiseks" tuleb protsessile saata signaal SIGKILL. Kuid see vĂ”ib pĂ”hjustada andmete kadu (nĂ€iteks kui protsess peab enne lĂ”petamist salvestama teavet kettale), seega tuleb sellist kĂ€sku kasutada ettevaatlikult. Signaalinumber SIGKILL — 9, seega lĂŒhike kĂ€su variant nĂ€eb vĂ€lja jĂ€rgmine:

[user@testhost ~]$ ps ux | grep sleep
531      1034930  0.0  0.0 107960   636 pts/1    S+   15:21   0:00 sleep 300
531      1034953  0.0  0.0 110516  2104 pts/2    S+   15:21   0:00 grep --color=auto sleep
[user@testhost ~]$ kill -9 1034930
[user@testhost ~]$ ps ux | grep sleep
531      1035004  0.0  0.0 110516  2092 pts/2    S+   15:22   0:00 grep --color=auto sleep

Lisaks nimetatud SIGTERM ja SIGKILL on veel palju erinevaid signaale, mille loendit on lihtne internetist leida. Ja Ă€rge unustage, et signaalid SIGKILL ja SIGSTOP ei saa olla kinni pĂŒĂŒtud vĂ”i ignoreeritud.

ping

Saada hostile ICMP pakett ECHO_REQUEST.

[user@testhost ~]$ ping google.com
PING google.com (172.217.15.78) 56(84) baiti andmeid.
64 baiti aadressilt iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=1 ttl=47 aega=1.85 ms
64 baiti aadressilt iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=2 ttl=47 aega=1.48 ms
64 baiti aadressilt iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=3 ttl=47 aega=1.45 ms
64 baiti aadressilt iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=4 ttl=47 aega=1.46 ms
64 baiti aadressilt iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=5 ttl=47 aega=1.45 ms
^C
--- google.com pingi statistika ---
5 paketti saadetud, 5 vastu vÔetud, 0% pakettide kadu, aeg 4006ms
rtt min/avg/max/mdev = 1.453/1.541/1.850/0.156 ms

Vaikimisi ping töötab seni, kuni see kĂ€sitsi lĂ”petatakse. SeetĂ”ttu vĂ”ib olla kasulik valik -c — pakettide arv, mille pĂ€rast ping lĂ”petatakse automaatselt. Veel ĂŒks valik, mida ma mĂ”nikord kasutan — -i, pakettide saatmise vahe.

[user@testhost ~]$ ping -c 3 -i 5 google.com
PING google.com (172.217.5.238) 56(84) bytes of data.
64 bytes from iad30s07-in-f238.1e100.net (172.217.5.238): icmp_seq=1 ttl=47 time=1.55 ms
64 bytes from iad30s07-in-f14.1e100.net (172.217.5.238): icmp_seq=2 ttl=47 time=1.17 ms
64 bytes from iad30s07-in-f14.1e100.net (172.217.5.238): icmp_seq=3 ttl=47 time=1.16 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10006ms
rtt min/avg/max/mdev = 1.162/1.295/1.551/0.181 ms

ssh

OpenSSH SSH klient, mis vĂ”imaldab ĂŒhendada eemaloleva hostiga.

MacBook-Pro-User:~ user$ ssh user@11.11.22.22
Viimane sisselogimine: TeisipÀev 26. november 2019 11:27:39 teisest_hostist
[user@testhost ~]$ hostname
testhost

SSH kasutamisel on palju nĂŒansse, samuti on sellel kliendil palju vĂ”imalusi, seega soovi korral (vĂ”i vajadusel) saab selle kohta lugeda sĂŒvitsi.

scp

Failide kopeerimine hostide vahel (selleks kasutatakse ssh).

[user@testhost ~]$ pwd
/home/user
[user@testhost ~]$ ls
temp  test_renamed
[user@testhost ~]$ exit
logout
Connection to 11.11.22.22 closed.
MacBook-Pro-Aleksandr:~ user$ scp user@11.11.22.22:/home/user/temp Downloads/
temp                                                                                                          100%   31     0.2KB/s   00:00
MacBook-Pro-Aleksandr:~ user$ cat Downloads/temp
Content of a file.
Lalalala...

rsync

Samuti saab kaustade sĂŒnkroniseerimiseks hostide vahel kasutada rsync (-a — arhiva reĆŸiimi, mis lubab kopeerida kogu kausta sisu "nagu on", -v — tĂ€iendava teabe vĂ€ljund konsoolile):

MacBook-Pro-User:~ user$ ls Downloads/user
ls: Downloads/user: Tootet ei leitud
MacBook-Pro-User:~ user$ rsync -av user@testhost:/home/user Downloads
failide loend ... valmis
user/
user/.bash_history
user/.bash_logout
user/.bash_profile
user/.bashrc
user/.lesshst
user/.mongorc.js
user/.viminfo
user/1
user/man_signal
user/man_signal_error_log
user/temp
user/.ssh/
user/.ssh/authorized_keys
user/test/
user/test/created_today
user/test/temp_clone

saadeti 346 baiti  saadud 29210 baiti  11822.40 baiti/sec
total suurus on 28079  kiirus on 0.95
MacBook-Pro-User:~ user$ ls -a Downloads/user
.                .bash_history        .bash_profile        .lesshst             .ssh                 1                man_signal_error_log test
..               .bash_logout         .bashrc             .mongorc.js          .viminfo             man_signal            temp

echo

VĂ€ljasta ekraanile tekstistring.

[user@testhost ~]$ echo "Hello"
Hello

Siin on tĂ€helepanuvÀÀrsed valikud vĂ€ljaande numbri mÀÀramiseks: — mitte lisada rea lĂ”pus reavahetust ja -e — vĂ”imaldab tĂ”lgendada pĂ”genemise mĂ€rke «».

[user@testhost ~]$ echo "tHellon"
tHellon
[user@testhost ~]$ echo -n "tHellon"
tHellon[user@testhost ~]$
[user@testhost ~]$ echo -ne "tHellon"
	Hello

Selle kÀsuga saab samuti vÀljastada muutujate vÀÀrtusi. NÀiteks Linuxis salvestab viimase lÔpetatud kÀsu vÀljumiskood spetsiaalsesse muutujasse $?, ja seega on vÔimalik teada saada, milline tÀpselt viga juhtus viimases kÀivitatud rakenduses:

[user@testhost ~]$ ls    # ei tule viga
1  man_signal  man_signal_error_log  temp  test
[user@testhost ~]$ echo $?    # saame 0 — viga ei olnud
0
[user@testhost ~]$ ls qwerty    # tuleb viga
ls: cannot access qwerty: No such file or directory
[user@testhost ~]$ echo $?    # saame 2 — shelli sisseehitatud funktsioonide vale kasutamine (vastavalt Bash dokumentatsioonile)
2
[user@testhost ~]$ echo $?    # viimane echo töötas ilma vigadeta, saame 0
0

telnet

TELNET protokolli klient. Kasutatakse kommunikatsiooniks teise hostiga.

[user@testhost ~]$ telnet example.com 80
Proovitakse 93.184.216.34...
Ühendatud example.com'iga.
VÀljumisnÀidik on '^]'.
GET / HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Tue, 26 Nov 2019 11:59:18 GMT
Etag: "3147526947+gzip+ident"
Expires: Tue, 03 Dec 2019 11:59:18 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (dcb/7F3B)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

... siin oli vastuse keha, mille ma kÀsitsi lÔikasin ...

Kui on vaja kasutada TLS-protokolli (tuletan meelde, et SSL on juba ammu aegunud), siis telnet selleks ei sobi. KĂŒll aga sobib klient openssl:

Avatud openssl'i nÀide koos GET-pÀringu vastusega

[user@testhost ~]$ openssl s_client -connect example.com:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
verify return:1
depth=0 C = US, ST = California, L = Los Angeles, O = Internet Corporation for Assigned Names and Numbers, OU = Technology, CN = www.example.org
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org
   i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
 1 s:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIHQDCCBiigAwIBAgIQD9B43Ujxor1NDyupa2A4/jANBgkqhkiG9w0BAQsFADBN
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTgxMTI4MDAwMDAwWhcN
MjAxMjAyMTIwMDAwWjCBpTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3Ju
aWExFDASBgNVBAcTC0xvcyBBbmdlbGVzMTwwOgYDVQQKEzNJbnRlcm5ldCBDb3Jw
b3JhdGlvbiBmb3IgQXNzaWduZWQgTmFtZXMgYW5kIE51bWJlcnMxEzARBgNVBAsT
ClRlY2hub2xvZ3kxGDAWBgNVBAMTD3d3dy5leGFtcGxlLm9yZzCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANDwEnSgliByCGUZElpdStA6jGaPoCkrp9vV
rAzPpXGSFUIVsAeSdjF11yeOTVBqddF7U14nqu3rpGA68o5FGGtFM1yFEaogEv5g
rJ1MRY/d0w4+dw8JwoVlNMci+3QTuUKf9yH28JxEdG3J37Mfj2C3cREGkGNBnY80
eyRJRqzy8I0LSPTTkhr3okXuzOXXg38ugr1x3SgZWDNuEaE6oGpyYJIBWZ9jF3pJ
QnucP9vTBejMh374qvyd0QVQq3WxHrogy4nUbWw3gihMxT98wRD1oKVma1NTydvt
hcNtBfhkp8kO64/hxLHrLWgOFT/l4tz8IWQt7mkrBHjbd2XLVPkCAwEAAaOCA8Ew
ggO9MB8GA1UdIwQYMBaAFA+AYRyCMWHVLyjnjUY4tCzhxtniMB0GA1UdDgQWBBRm
mGIC4AmRp9njNvt2xrC/oW2nvjCBgQYDVR0RBHoweIIPd3d3LmV4YW1wbGUub3Jn
ggtleGFtcGxlLmNvbYILZXhhbXBsZS5lZHWCC2V4YW1wbGUubmV0ggtleGFtcGxl
Lm9yZ4IPd3d3LmV4YW1wbGUuY29tgg93d3cuZXhhbXBsZS5lZHWCD3d3dy5leGFt
cGxlLm5ldDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMGsGA1UdHwRkMGIwL6AtoCuGKWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNv
bS9zc2NhLXNoYTItZzYuY3JsMC+gLaArhilodHRwOi8vY3JsNC5kaWdpY2VydC5j
b20vc3NjYS1zaGEyLWc2LmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwBATAqMCgG
CCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAEC
AjB8BggrBgEFBQcBAQRwMG4wJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj
ZXJ0LmNvbTBGBggrBgEFBQcwAoY6aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t
L0RpZ2lDZXJ0U0hBMlNlY3VyZVNlcnZlckNBLmNydDAMBgNVHRMBAf8EAjAAMIIB
fwYKKwYBBAHWeQIEAgSCAW8EggFrAWkAdwCkuQmQtBhYFIe7E6LMZ3AKPDWYBPkb
37jjd80OyA3cEAAAAWdcMZVGAAAEAwBIMEYCIQCEZIG3IR36Gkj1dq5L6EaGVycX
sHvpO7dKV0JsooTEbAIhALuTtf4wxGTkFkx8blhTV+7sf6pFT78ORo7+cP39jkJC
AHYAh3W/51l8+IxDmV+9827/Vo1HVjb/SrVgwbTq/16ggw8AAAFnXDGWFQAABAMA
RzBFAiBvqnfSHKeUwGMtLrOG3UGLQIoaL3+uZsGTX3MfSJNQEQIhANL5nUiGBR6g
l0QlCzzqzvorGXyB/yd7nttYttzo8EpOAHYAb1N2rDHwMRnYmQCkURX/dxUcEdkC
wQApBo2yCJo32RMAAAFnXDGWnAAABAMARzBFAiEA5Hn7Q4SOyqHkT+kDsHq7ku7z
RDuM7P4UDX2ft2Mpny0CIE13WtxJAUr0aASFYZ/XjSAMMfrB0/RxClvWVss9LHKM
MA0GCSqGSIb3DQEBCwUAA4IBAQBzcIXvQEGnakPVeJx7VUjmvGuZhrr7DQOLeP4R
8CmgDM1pFAvGBHiyzvCH1QGdxFl6cf7wbp7BoLCRLR/qPVXFMwUMzcE1GLBqaGZM
v1Yh2lvZSLmMNSGRXdx113pGLCInpm/TOhfrvr0TxRImc8BdozWJavsn1N2qdHQu
N+UBO6bQMLCD0KHEdSGFsuX6ZwAworxTg02/1qiDu7zW7RyzHvFYA4IAjpzvkPIa
X6KjBtpdvp/aXabmL95YgBjT8WJ7pqOfrqhpcmOBZa6Cg6O1l4qbIFH/Gj9hQB5I
0Gs4+eH6F9h3SojmPTYkT+8KuZ9w84Mn+M8qBXUQoYoKgIjN
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org
issuer=/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 4643 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 91950DC50FADB57BF026D2661E6CFAA1F522E5CA60D2310E106EE0E0FD6E70BD
    Session-ID-ctx:
    Master-Key: 704E9145253EEB4E9DC47E3DC6725D296D4A470EA296D54F71D65E74EAC09EB096EA1305CBEDD9E7020B8F72FD2B68A5
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 68 84 4e 77 be e3 f5 00-49 c5 44 40 53 4d b9 61   h.Nw....I.D@SM.a
    0010 - c9 fe df e4 05 51 d0 53-ae cf 89 4c b6 ef 6c 9e   .....Q.S...L..l.
    0020 - fe 12 9a f0 e8 e5 4e 87-42 89 ac af ca e5 4a 85   ......N.B.....J.
    0030 - 38 08 26 e3 22 89 08 b5-62 c0 8b 7e b8 05 d3 54   8.&amp;."...b..~...T
    0040 - 8c 24 91 a7 b4 4f 79 ad-36 59 7c 69 2d e5 7f 62   .$...Oy.6Y|i-..b
    0050 - f6 73 a3 8b 92 63 c1 e3-df 78 ba 8c 5a cc 82 50   .s...c...x..Z..P
    0060 - 33 4e 13 4b 10 e4 97 31-cc b4 13 65 45 60 3e 13   3N.K...1...eE`&gt;.
    0070 - ac 9e b1 bb 4b 18 d9 16-ea ce f0 9b 5b 0c 8b bf   ....K.......[...
    0080 - fd 78 74 a0 1a ef c2 15-2a 0a 14 8d d1 3f 52 7a   .xt.....*....?Rz
    0090 - 12 6b c7 81 15 c4 c4 af-7e df c2 20 a8 dd 4b 93   .k......~.. ..K.

    Start Time: 1574769867
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
GET / HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Tue, 26 Nov 2019 12:04:38 GMT
Etag: "3147526947+ident"
Expires: Tue, 03 Dec 2019 12:04:38 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (dcb/7EC8)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

<!doctype html>
<html>
<head>
    <title>Näidisdomään</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
</head>

<body>
<div>
    <h1>Näidisdomään</h1>
    <p>See domään on mõeldud näidiseks dokumentides. Võite seda domääni kasutada
    kirjanduses ilma eelneva koordineerimise või loa küsimiseta.</p>
    <p><a href="https://www.iana.org/domains/example">Rohkem teavet...</a></p>
</div>
</body>
</html>

TĂŒĂŒpiliste ĂŒlesannete lahendamine Linuxis

Muuda faili omanikku

Faili vÔi katalooge saab omandi muutmiseks kasutada kÀsku chown:

[user@testhost ~]$ chown user:user temp
[user@testhost ~]$ ls -l temp
-rw-rw-r-- 1 user user 31 Nov 26 11:09 temp

Selle kĂ€su parameetrisse tuleb anda uus omanik ja rĂŒhm (valikuline), eraldatuna kolmikpunktiga. Samuti vĂ”ib katalooge muutes olla kasulik lipp -R — siis muutuvad omanikud ka kogu katalooge sisule.

Muuda faili juurdepÀÀsuÔigusi

See ĂŒlesanne lahendatakse kĂ€sku abil chmod. NĂ€iteks toon ma Ă”iguste seadistamise, kus omanikul on lubatud lugemine, kirjutamine ja tĂ€itmine, grupil on lubatud lugemine ja kirjutamine ning ĂŒlejÀÀnutele ei ole Ă”igusi:

[user@testhost ~]$ ls -l temp
-rw-rw-r-- 1 user user 31 Nov 26 11:09 temp
[user@testhost ~]$ chmod 760 temp
[user@testhost ~]$ ls -l temp
-rwxrw---- 1 user user 31 Nov 26 11:09 temp

Esimene 7 (see on 0b111 binaarses vormingus) parameetris tĂ€hendab „kĂ”iki Ă”igusi omanikule“, teine 6 (see on 0b110 binaarses vormingus) – „lugemine ja kirjutamine“, no ja 0 – see tĂ€hendab, et ĂŒlejÀÀnutel pole Ă”igusi. Binaarmask koosneb kolmest bitist: kĂ”ige noorem („parem”) bit vastutab tĂ€itmise eest, jĂ€rgmine „keskmine” bit vastutab kirjutamise eest ja kĂ”ige vanem („vasak”) – lugemise eest.
Samuti on vĂ”imalik Ă”igusi seadistada spetsiaalsete sĂŒmbolite abil (mnemooniline sĂŒntaks). NĂ€iteks jĂ€rgmises nĂ€ites eemaldatakse kĂ”igepealt tĂ€itmisĂ”igused praeguselt kasutajalt ja seejĂ€rel tagastatakse need tagasi:

[user@testhost ~]$ ls -l temp
-rwxrw---- 1 user user 31 Nov 26 11:09 temp
[user@testhost ~]$ chmod -x temp
[user@testhost ~]$ ls -l temp
-rw-rw---- 1 user user 31 Nov 26 11:09 temp
[user@testhost ~]$ chmod +x temp
[user@testhost ~]$ ls -l temp
-rwxrwx--x 1 user user 31 Nov 26 11:09 temp

Sellel kĂ€sul on palju kasutusvĂ”imalusi, seega soovitan lugeda selle kohta lĂ€hemalt (eriti meeldejĂ€tmise sĂŒntaksi kohta, nĂ€iteks, siit).

Binaarfaili sisu vÀljastamine

Seda saab teha utiliidi abiga hexdump. Allpool on selle kasutamise nÀited.

[user@testhost ~]$ cat temp
Faili sisu.
Lalalala...
[user@testhost ~]$ hexdump -c temp
0000000   C   o   n   t   e   n   t       o   f       a       f   i   l
0000010   e   .  n   L   a   l   a   l   a   l   a   .   .   .  n
000001f
[user@testhost ~]$ hexdump -x temp
0000000    6f43    746e    6e65    2074    666f    6120    6620    6c69
0000010    2e65    4c0a    6c61    6c61    6c61    2e61    2e2e    000a
000001f
[user@testhost ~]$ hexdump -C temp
00000000  43 6f 6e 74 65 6e 74 20  6f 66 20 61 20 66 69 6c  |Faili sisu|
00000010  65 2e 0a 4c 61 6c 61 6c  61 6c 61 2e 2e 2e 0a     |e..Lalalala....|
0000001f

Selle utiliidi abil saab andmeid esitada ka teistes formaatides, kuid kÔige sagedamini vÔivad kasutada just sellised variandid selle kasutamisest.

Failide otsimine

Faili leidmine nime osal pÔhinevalt katalooge puus, kasutatakse kÀsu abil find:

[user@testhost ~]$ find test_dir/ -name "*le*"
test_dir/file_1
test_dir/file_2
test_dir/subdir/file_3

Saadaval on ka teised otsinguvÔimalused ja filtrid. NÀiteks saab faile leida kaustast test, mis on loodud rohkem kui 5 pÀeva tagasi:

[user@testhost ~]$ ls -ltr test
total 0
-rw-rw-r-- 1 user user 0 Nov 26 10:46 temp_clone
-rw-rw-r-- 1 user user 0 Dec 4 10:39 created_today
[user@testhost ~]$ find test/ -type f -ctime +5
test/temp_clone

Otsi teksti failides

Selle ĂŒlesande tĂ€itmisel aitab kĂ€sk grep. Sellel on palju kasutusvĂ”imalusi, siin on nĂ€itena kĂ”ige lihtsam.

[user@testhost ~]$ grep -nr "content" test_dir/
test_dir/file_1:1:test content for file_1
test_dir/file_2:1:test content for file_2
test_dir/subdir/file_3:1:test content for file_3

Üks populaarsemaid viise kĂ€skude kasutamiseks grep — selle kasutamine torustikus (pipe):

[user@testhost ~]$ sudo tail -f /var/log/test.log | grep "ERROR"

Valik -v teeb efekti grepvastupidiseks — kuvatakse ainult read, mis ei sisalda mustrit, mis on antud grep.

Vaata paigaldatud pakette

Ühte universaalset kĂ€sku pole, kuna see sĂ”ltub Linuxi distributsioonist ja kasutatavast pakihaldurist. TĂ”enĂ€oliselt aitab teid mĂ”ni jĂ€rgmistest kĂ€skudest:

yum list installed
apt list --installed
zypper se —installed-only
pacman -Qqe
dpkg -l
rpm -qa

Vaata, kui palju ruumi vÔtab direktorite puu

Üks vĂ”imalus kĂ€sku kasutada du:

[user@testhost ~]$ du -h -d 1 test_dir/
8,0K test_dir/subdir
20K test_dir/

Saab muuta parameetri vÀÀrtust -d, et saada rohkem teavet katalooge puu kohta. Samuti vÔib kÀsku kasutada koos sort:

[user@testhost ~]$ du -h -d 1 test_dir/ | sort -h
8,0K test_dir/subdir
16K test_dir/subdir_2
36K test_dir/
[user@testhost ~]$ du -h -d 1 test_dir/ | sort -h -r
36K test_dir/
16K test_dir/subdir_2
8,0K test_dir/subdir

Valik -h kÀsk sort sortimine vÔimaldab sortida suurusi, mis on esitatud inimeste jaoks loetavas formaadis (nÀiteks 1K, 2G), valik -r lubab andmeid sortida vastupidises jÀrjekorras.

Otsi ja asenda failis, failides kataloogis

Seda toimingut teostatakse utiliidi sed (ilma liputa g asendatakse ainult esimene esitus «old-text» reas):

sed -i 's/old-text/new-text/g' input.txt

Seda saab kasutada mitme faili jaoks korraga:

[user@testhost ~]$ cat test_dir/file_*
test content for file_1
test content for file_2
[user@testhost ~]$ sed -i 's/test/edited/g' test_dir/file_*
[user@testhost ~]$ cat test_dir/file_*
edited content for file_1
edited content for file_2

Kanna veerg vÀljundist

Selle ĂŒlesande tĂ€itmisel aitab awk. Antud nĂ€ites vĂ€ljastatakse kĂ€su tulemuste teine veerg `ps ux`:

[user@testhost ~]$ ps ux | awk '{print $2}'
PID
11023
25870
25871
25908
25909

Sellega tuleb meeles pidada, et awk omab palju rikkalikumaid funktsioone, seega kui on vaja teksti kÀsureal töödelda, tasub selle kÀsu kohta rohkem lugeda.

Uuri IP-aadressi hostinime jÀrgi

Sellega aitab jÀrgmine kÀsk:

[user@testhost ~]$ host ya.ru
ya.ru aadress on 87.250.250.242
ya.ru IPv6 aadress on 2a02:6b8::2:242
ya.ru meilisĂŒsteemi haldab 10 mx.yandex.ru.

[user@testhost ~]$ dig +short ya.ru
87.250.250.242

[user@testhost ~]$ nslookup ya.ru
Server: 8.8.8.8
Aadress: 8.8.8.8#53

Mitteautoriitatiivne vastus:
Nimi: ya.ru
Aadress: 87.250.250.242

VÔrguteave

Soovitatakse kasutada ifconfig:

[user@testhost ~]$ ifconfig
eth0: flags=4163 mtu 1500
        inet 47.89.93.67 netmask 255.255.224.0 broadcast 47.89.95.255
        inet6 fd90::302:57ff:fe79:1 prefixlen 64 scopeid 0x20
        ether 04:01:57:79:00:01 txqueuelen 1000 (Ethernet)
        RX paketid 11912135 bytes 9307046034 (8.6 GiB)
        RX vead 0 dropped 0 overruns 0 frame 0
        TX paketid 14696632 bytes 2809191835 (2.6 GiB)
        TX vead 0 dropped 0 overruns 0 carrier 0 collisions 0


lo: flags=73 mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet6 ::1 prefixlen 128 scopeid 0x10
        loop txqueuelen 0 (Local Loopback)
        RX paketid 10 bytes 866 (866.0 B)
        RX vead 0 dropped 0 overruns 0 frame 0
        TX paketid 10 bytes 866 (866.0 B)
        TX vead 0 dropped 0 overruns 0 carrier 0 collisions 0

Ja saab ka ip:

[user@testhost ~]$ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 04:01:57:79:00:01 brd ff:ff:ff:ff:ff:ff
    inet 47.89.93.67/19 brd 47.89.95.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fd90::302:57ff:fe79:1/64 scope link
       valid_lft forever preferred_lft forever
3: ip_vti0:  mtu 1500 qdisc noop state DOWN group default
    link/ipip 0.0.0.0 brd 0.0.0.0

Kui teid huvitab nÀiteks ainult IPv4, siis vÔite lisada valiku -4:

[user@testhost ~]$ ip -4 a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 47.89.93.67/19 brd 47.89.95.255 scope global eth0
       valid_lft forever preferred_lft forever

Vaata avatud porte

Selleks kasutatakse utiliiti netstat. NÀiteks, et nÀha kÔiki kuulavaid TCP ja UDP porte, kuvades protsessi PID, mis porti kuulab, ja numbrilist esitamist portidest, tuleb kasutada seda jÀrgnevate valikutega:

[user@testhost ~]$ netstat -lptnu

SĂŒsteemi teave

Seda teavet saab saada kÀsu kaudu uname.

[user@testhost ~]$ uname -a
Linux alexander 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Et mÔista, millisest formaatist vÀljund toimub, vÔib viidata helpselle kÀsu kohta:

[user@testhost ~]$ uname --help
Kasutamine: uname [VÕTI]

KĂŒbab kindlaid andmeid sĂŒsteemi kohta. Kui VÕTI pole mÀÀratud,
arvestatakse -s.

  -a, --all          printida kogu teave, jÀrgmises jÀrjekorras,
                     vÀlja arvatud -p ja -i, kui need pole teada:
  -s, --kernel-name  printida kernel'i nimi
  -n, --nodename     printida masin vÔrgus
  -r, --release      printida operatsioonisĂŒsteemi vĂ€lja number
  -v, --kernel-version printida kernel'i versioon
  -m, --machine      printida masina riistvara tĂŒĂŒp
  -p, --processor    printida protsessori tĂŒĂŒp vĂ”i „tundmatu”
  -i, --hardware-platform printida riistvara platvormi tĂŒĂŒp vĂ”i „tundmatu”
  -o, --operating-system printida operatsioonisĂŒsteemi nimi
      --help        kuvada see abi ja vÀljuda
      --version     kuvada versiooni teavet ja vÀljuda

MĂ€lu teave

MÔistmaks, kui palju RAM-i on kasutuses vÔi vaba, saab kasutada kÀsku free.

[user@testhost ~]$ free -h
              total        used        free        shared  buff/cache   available
Mem:          3,9G        555M        143M         56M        3,2G        3,0G
Swap:          0B          0B        0B

Teave failisĂŒsteemide kohta (vaba ruum ketastel)

Meeskond df vĂ”imaldab vaadata, kui palju ruumi on vaba ja kasutatud mountitud failisĂŒsteemides.

[user@testhost ~]$ df -hT
FailisĂŒsteem          TĂŒĂŒp      Suurus   Kasutatud  Vaba   Kasutatud%  Mountitud
/dev/vda1            ext4        79G       21G     55G          27%  /
devtmpfs            devtmpfs   2,0G         0   2,0G           0%  /dev
tmpfs               tmpfs      2,0G         0   2,0G           0%  /dev/shm
tmpfs               tmpfs      2,0G       57M  1,9G           3%  /run
tmpfs               tmpfs      2,0G         0   2,0G           0%  /sys/fs/cgroup
tmpfs               tmpfs      396M         0   396M           0%  /run/user/1001

Valik -T nĂ€itab, et failisĂŒsteemi tĂŒĂŒp tuleks vĂ€lja anda.

Teave ĂŒlesannete ja muu sĂŒsteemi statistika kohta

Selleks kasutatakse kÀsku top. See suudab kuvada erinevat teavet: nÀiteks protsesside tipp, mis kasutab kÔige rohkem mÀlu, vÔi protsesside tipp, mis kasutab kÔige rohkem protsessori aega. Samuti nÀitab see teavet mÀlu, CPU, tööaega ja LA (koormuse keskmine).

[user@testhost ~]$ top | head -10
top - 17:19:13 up 154 days,  6:59,  3 users,  load average: 0.21, 0.21, 0.27
Tasks: 2169 total,   2 running, 2080 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.7%us,  0.7%sy,  0.0%ni, 97.5%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  125889960k total, 82423048k used, 43466912k free, 16026020k buffers
Swap:        0k total,        0k used,        0k free, 31094516k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  25282 user      20   0 16988 3936 1964 R  7.3  0.0   0:00.04 top
   4264 telegraf  20   0 2740m 240m  22m S  1.8  0.2  23409:39 telegraf
   6718 root      20   0 35404 4768 3024 S  1.8  0.0   0:01.49 redis-server

See utiliit on rikkalikult funktsionaalne, seega, kui peate seda sageli kasutama, on parem tutvuda selle dokumentatsiooniga.

VÔrgu liiklusdump

VĂ”rgu liikluse pĂŒĂŒdmiseks Linuxis kasutatakse utiliiti tcpdump. Liikluse dumpimiseks pordil 12345 vĂ”ite kasutada jĂ€rgmist kĂ€sku:

[user@testhost ~]$ sudo tcpdump -i any -A port 12345

Valik -A tĂ€hendab, et nĂ€eme vĂ€ljundit ASCII formaadis (seega on see hea tekstipĂ”histe protokollide jaoks), -i any nĂ€itab, et meid ei huvita vĂ”rguliides, port — millise pordi liiklust pĂŒĂŒda. Selle asemel port vĂ”ib kasutada host, vĂ”i kombinatsiooni host ja port (host A ja port X). Ja veel vĂ”ib osutuda kasulikuks valik vĂ€ljaande numbri mÀÀramiseks: — mitte konvertida aadresse hostinimedeks vĂ€ljundis.
Mis siis, kui liiklus on binaarne? Siis aitab meid valik -X — vĂ€ljastada andmed hex ja ASCII kujul:

[user@testhost ~]$ sudo tcpdump -i any -X port 12345

Sel juhul tuleb arvestada, et mĂ”lemas kasutusvariandis vĂ€ljastatakse IP pakette, mistĂ”ttu igaĂŒhe alguses on binaarsed IP ja TCP pĂ€ised. Siin on nĂ€idis vĂ€ljund rakenduse "123" saatmiseks serverisse, mis kuulab porti 12345:

[user@testhost ~]$ sudo tcpdump -i any -X port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
14:27:13.224762 IP localhost.49794 > localhost.italk: Flags [P.], seq 2262177478:2262177483, ack 3317210845, win 342, options [nop,nop,TS val 3196604972 ecr 3196590131], length 5
    0x0000:  4510 0039 dfb6 4000 4006 5cf6 7f00 0001  E..9..@.@......
    0x0010:  7f00 0001 c282 3039 86d6 16c6 c5b8 9edd  ......09........
    0x0020:  8018 0156 fe2d 0000 0101 080a be88 522c  ...V.-........R,
    0x0030:  be88 1833 3132 330d 0a00 0000 0000 0000  ...3123.........
    0x0040:  0000 0000 0000 0000 00                     .........

VĂ€ljundi asemel

Loomulikult, Linuxis on veel palju huvitavaid asju, millest lugeda, nĂ€iteks Habr's, StackOverflow's ja teistel saitidel (nĂ€iteks The Art of a Command Line, mis on ja tĂ”lkes). SĂŒsteemiadministraatorid ja DevOps kasutavad serverite konfigureerimiseks palju rohkem kĂ€ske ja utiliite, kuid isegi testeritel vĂ”ib osa loetletud kĂ€ske puududa. VĂ”ib osutuda vajalikuks kontrollida mĂ”ne keerulise kliendi-serveri ajutise katkestuse Ă”igsust vĂ”i serveri toimimist siis, kui kettal pole vaba ruumi. RÀÀkimata nĂ€iteks Dockerist, mida paljud ettevĂ”tted praegu aktiivselt kasutavad. Oleks huvitav jĂ€tkata selle abistava artikli raames mitme nĂ€ite jagamist erinevate Linuxi kĂ€surea utiliitide kasutamisest teenuste testimise protsessis? Jagage ka oma lemmikuid kommentaarides 🙂

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster