EessÔna
Tere kĂ”igile! Minu nimi on Sasha ja olen ĂŒle kuue aasta tegelenud tagaplaneerimise testimisega (Linuxi teenused ja API-d). Idee kirjutada artikkel tuli mulle pĂ€rast seda, kui tuttav testija palus mul soovitada, mida lugeda Linuxi kĂ€skude kohta enne tööintervjuud. Tavaliselt nĂ”utakse QA inseneri ametikohale kandideerijalt pĂ”hikĂ€su tundmist (kui eeldada, et töö hĂ”lmab Linuxit), kuid kuidas mĂ”ista, milliseid kĂ€ske tasuks intervjuuks ettevalmistamisel lugeda, kui Linuxiga on vĂ€he vĂ”i ĂŒldse mitte kogemusi?
Seega, kuigi sellest on juba palju kirjutatud, otsustasin ikkagi kirjutada veel ĂŒhe artikli âLinux algajateleâ, kus loetlen pĂ”hikĂ€sud, mida on vaja teada enne igasugust intervjuud osakonnas (vĂ”i ettevĂ”ttes), kus kasutatakse Linuxit. MĂ”tlesin, milliseid kĂ€ske ja tööriistu koos parameetritega ma kĂ”ige sagedamini kasutan, kogusin tagasisidet kolleegidelt ja koondasin kĂ”ik selle ĂŒhte artiklisse. Artikkel jaguneb tinglikult kolme ossa: kĂ”igepealt lĂŒhike teave Linuxi terminali sisendi ja vĂ€ljundi alustest, seejĂ€rel ĂŒlevaade kĂ”ige pĂ”hikĂ€sudest ning kolmandas osas kĂ€sitletakse tĂŒĂŒpiliste probleemide lahendamist Linuxis.
Iga kÀsu puhul on palju valikuvÔimalusi; neid kÔiki siin ei loeta. Alati vÔib sisestada `man` vÔi `--help` et saada kÀsust rohkem teavet.
NĂ€ide:
[user@testhost ~]$ mkdir --help Kasutus: mkdir [VALIK]... KAUST... Looge KAUST(ed), kui need veel ei eksisteeri. Kohustuslikud valikud pikal puhul on kohustuslikud ka lĂŒhikeseks. -m, --mode=MODE   seadke faili reĆŸiim (nagu chmod), mitte a=rwx - umask -p, --parents    ei tohi eksisteerimisel viga, looge vajadusel ĂŒlevanem kaustad -v, --verbose    trĂŒkkige sĂ”num iga loodud kausta kohta -Z          seadke iga loodud kausta SELinuxi turbekontekst   vaikimisi tĂŒĂŒbiks --context[=CTX]   nagu -Z, vĂ”i kui CTX on mÀÀratud, siis seadke SELinuxi   vĂ”i SMACK turbekontekst CTX-ks --help   nĂ€ita seda abi ja lahku --version  vĂ€ljastage versiooni teave ja lahku GNU coreutilsi veebipĂ”hine abi: TĂ€ieliku dokumentatsiooni saamiseks kĂ€ivitage: info coreutils 'mkdir kutse'
Kui mÔni kÀsk tÀidab liiga kaua, saab selle lÔpetada, vajutades konsoolis Ctrl+C (protsessile saadetakse signaal SIGINT).
Veidi kÀsuviidete vÀljastamisest
Kui protsess kĂ€ivitatakse Linuxis, luuakse selle protsessi jaoks 3 standardset andmevoogu: stdin, stdout ja stderr. Need on numbrid 0, 1 ja 2. Kuid meid huvitavad praegu stdout ja vĂ€hemal mÀÀral stderr. Nagu nimedest jĂ€relduda, kasutatakse stdout andmete vĂ€ljundiks, aga stderr â vigade tĂ”husaks teavitamiseks. Vaikimisi, kui kĂ€ivitate kĂ€su Linuxis, stdout ja stderr kuvatakse kogu teave konsoolile, kuid kui kĂ€su vĂ€ljund on suur, vĂ”ib olla mugav see faili suunata. Seda saab teha nĂ€iteks nii:
[user@testhost ~]$ man signal > man_signal
Kui me kuvame faili sisu man_signal, siis nÀeme, et see on identne sellega, mis oleks olnud kÀsu lihtsa kÀivitamise korral `man signal`.
Suunamiste operatsioon `>` kasutab vaikimisi stdout. Suunamist saab mÀÀrata ka selgelt: ` stdout 1>`. Samuti saab mÀÀrata suunamist2> stderr: ``. Need toimingud saab kombineerida, et jagada kÀsu tavaline vÀljund ja veateated:[user@testhost ~]$ man signal 1> man_signal 2> man_signal_error_log
Suunata ja
ĂŒheks failiks saab jĂ€rgmiselt: stdout, ja stderr [user@testhost ~]$ man signal > man_signal 2>&1
` tÀhistab suunamist
Suunamiste operatsioon `2>&1sinna, kuhu suunatakse stderr Veel ĂŒks mugav tööriist sisendi-vĂ€ljundi töötlemiseks (kui tĂ€psustada, see on mugav protsessidevaheline suhtlemine) â stdout.
toru pipe (vÔi ). Torusid kasutatakse sageli mitme kÀsu sidumiseks:kÀsu vÀljund suunatakse stdout jÀrgnevasse, ja nii edasi ahelas: stdin [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
Baasilised Linuxi kÀsud
Kuva praegune (töötav) kataloog.
pwd
[user@testhost ~]$ pwd /home/user
Kuva praegune kuupĂ€ev ja sĂŒsteemi kellaaeg.
date
[user@testhost ~]$ date Mon Dec 16 13:37:07 UTC 2019 [user@testhost ~]$ date +%s 1576503430
See kĂ€sk nĂ€itab, kes on sĂŒsteemis sisselogitud. Lisaks kuvatakse ekraanil ka uptime ja LA (load average).
w
[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
Kuva katalooge sisu. Kui teed ei edastata, kuvatakse praeguse katalooge sisu.
ls
[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
(pikk loetlemise formaat â failide tĂ€iendava teabe vĂ€ljund veergudena), Ă”pivad (jĂ€rjepidevuse jĂ€rgi mĂ€lu muutmise jĂ€rgi) ja -t (faili vĂ”i katalooge muuda. -r (tagasi pööratud jĂ€rjestus â koos -t kĂ”ige âvĂ€rskemadâ failid on 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 kaustade nime: â." ja "..â. Esimene tĂ€hendab praegust kausta, teine â ĂŒlemkausta. Nende kasutamine on erinevates kĂ€skudes mugav, nimelt 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\/\nqqq
Samuti on olemas kasulik valik peidetud failide vĂ€ljastamiseks (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Ă€ljastamine human readable formaadis (pange 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 kausta.
[user@testhost ~]$ pwd
\/home\/user
[user@testhost ~]$ cd \/home\/
[user@testhost home]$ pwd
\/home
Kui kausta nime argumendina ei edastata, kasutatakse keskkonnamuutujat $HOME, see tĂ€hendab kodukausta. Samuti vĂ”ib olla mugav kasutada `~` â spetsiaalne sĂŒmbol, mis tĂ€hendab $HOME:
[user@testhost etc]$ pwd
\/etc
[user@testhost etc]$ cd ~\/test\/\n[user@testhost test]$ pwd
\/home\/user\/test
mkdir
Loo kaust.
[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 kindel kaustade struktuur: nĂ€iteks kaust kaustas, mis ei eksisteeri. Et mitte sisestada jĂ€rjestikku mitu korda mkdir, saab kasutada valikut -p â see vĂ”imaldab luua kĂ”ik puuduvad kataloogid hierarhias. Samuti selle valikuga mkdir ei tagasta viga, kui kataloog eksisteerib.
[user@testhost ~]$ ls
qqq test
[user@testhost ~]$ mkdir test2/subtest
mkdir: ei saa luua katalooge âtest2/subtestâ: Selline fail vĂ”i kataloog 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 saa luua katalooge âtest2/subtestâ: 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Ă”imaldab rekursiivselt kustutada katalooge koos nende kĂ”igi sisuga, valik -f vĂ”imaldab ignoreerida vigu kustutamisel (nĂ€iteks mittepĂŒsiva faili osas). Need valikud vĂ”imaldavad, ĂŒtleme nii, garanteeritult kustutada kogu failide ja kataloogide hieraaria (kui kasutajal on selleks Ă”igused), seetĂ”ttu tuleb neid kasutada ettevaatlikult (klassikaline nalja nĂ€ide â "rm -rf /", teatud oludega kustutab kui mitte kogu sĂŒsteemi, siis vĂ€ga palju olulisi faile tema töös.
[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Àsul on samuti valikud -r ja -f, mida saab kasutada, et garanteeritult kopeerida kataloogide ja kaustade hieraaria teise kohta.
mv
Liiguta vÔi nimevahetus failile vÔi kataloogile.
[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
Failsisaldus.
Lalalala...
Tasub samuti tĂ€helepanu pöörata kĂ€skudele head (kuva n faili esimestest ridadest vĂ”i baitidest) ja tail (sellest â hiljem).
tail
VÀljasta n faili viimastest ridadest vÔi baitidest.
[user@testhost ~]$ tail -1 temp
Lalalala...
VĂ€ga kasulik on valik -f â see vĂ”imaldab kuvada uusi andmeid faili reaalajas.
less
MÔnikord on tekstifail liiga suur ja ebamugav kuvada seda kÀsuga cat. Siis saab selle avada kÀsuga less: fail kuvatakse osade kaupa, on saadaval navigeerimine nende osade vahel, otsing ja muu lihtne funktsionaalsus.
[user@testhost ~]$ less temp
Samuti vÔib olla mugav kasutada less konveijeriga (pipe):
[user@testhost ~]$ grep "ERROR" /tmp/some.log | less
ps
Kuva protsesside loend.
[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â â kuvab kĂ”ik sĂŒsteemi protsessid (kuna protsesse vĂ”ib olla palju, kuvatasin neist ainult viis esimest, kasutades konveijeri (pipe) ja kĂ€sku head):
[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]
Paljud kasutavad ka BSD valikuid âaxjfâ, mis vĂ”imaldab kuvada protsesside puu (siin olen vĂ€ljundist osa eemaldanud nĂ€itamiseks):
[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 kÀsul on palju erinevaid valikuid, seega soovitan tutvuda dokumentatsiooniga, kui seda aktiivselt kasutada. Enamikul juhtudel piisab aga lihtsalt teadmisest, et "ps aux«.
kill
Saata signaal protsessile. 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 too see alati ootuspĂ€rast tulemust â protsessi kohene lĂ”petamine. Et protsess "tappa" kindlasti, tuleb saata protsessile signaal SIGKILL. Kuid see vĂ”ib viia andmete kadumiseni (nĂ€iteks kui protsess peab enne lĂ”petamist salvestama teatud teavet kettale), seega tuleb sellise kĂ€suga ettevaatlik olla. Signaali number SIGKILL on 9, seega kĂ€su lĂŒhivariant 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 mainitud SIGTERM ja SIGKILL on veel mitmeid erinevaid signaale, mille nimekirja leiate kergesti internetist. Ja Àrge unustage, et signaale SIGKILL ja SIGSTOP ei saa kinni pidada vÔi ignoreerida.
ping
Saata hostile ICMP pakett ECHO_REQUEST.
[user@testhost ~]$ ping google.com
PING google.com (172.217.15.78) 56(84) bytes of data.
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=1 ttl=47 time=1.85 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=2 ttl=47 time=1.48 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=3 ttl=47 time=1.45 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=4 ttl=47 time=1.46 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=5 ttl=47 time=1.45 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.453/1.541/1.850/0.156 ms
Vaikimisi ping töötleb, kuni see kĂ€sitsi lĂ”petatakse. Seega vĂ”ib olla kasulik valik -c â saadetavate paketide arv, pĂ€rast mida ping lĂ”petatakse automaatselt. Veel ĂŒks valik, mida ma vahel kasutan â -i, pakettide vahelise saatmise intervall.
[user@testhost ~]$ ping -c 3 -i 5 google.com
PING google.com (172.217.5.238) 56(84) baitsi andmeid.
64 baiti aadressilt iad30s07-in-f238.1e100.net (172.217.5.238): icmp_seq=1 ttl=47 aeg=1.55 ms
64 baiti aadressilt iad30s07-in-f14.1e100.net (172.217.5.238): icmp_seq=2 ttl=47 aeg=1.17 ms
64 baiti aadressilt iad30s07-in-f14.1e100.net (172.217.5.238): icmp_seq=3 ttl=47 aeg=1.16 ms
--- google.com ping statistika ---
3 paketti edastatud, 3 vastu vÔetud, 0% paketi kadu, aeg 10006ms
rtt min/avg/max/mdev = 1.162/1.295/1.551/0.181 ms
ssh
OpenSSH SSH klient, mis vĂ”imaldab ĂŒhenduda kaughosti.
MacBook-Pro-User:~ user$ ssh user@11.11.22.22
Viimane sisselogimine: TeisipÀev 26. nov 11:27:39 2019 teisest hostist
[user@testhost ~]$ hostname
testhost
SSH kasutamisel on palju nĂŒansse, samuti on sellele kliendile iseloomulikke palju vĂ”imalusi, seega soovi korral (vĂ”i vajadusel) vĂ”ib selle kohta lugeda .
scp
Failide kopeerimiseks hostide vahel (selleks kasutatakse ssh).
[user@testhost ~]$ pwd
/home/user
[user@testhost ~]$ ls
temp test_renamed
[user@testhost ~]$ exit
logout
Ăhendus 11.11.22.22 sulgedud.
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
Faili sisu.
Lalalala...
rsync
Samuti saab kaustade sĂŒnkroonimiseks hostide vahel kasutada rsync (-a â arhiivireĆŸiim, mis vĂ”imaldab kopeerida kogu kausta sisu "nagu on", -v â konsoolile lisainformatsiooni vĂ€ljund):
MacBook-Pro-User:~ user$ ls Downloads/user
ls: Downloads/user: Sellist faili vÔi kausta ei ole
MacBook-Pro-User:~ user$ rsync -av user@testhost:/home/user Downloads
failide loendi vastuvÔtmine ... tehtud
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
saadetud 346 baiti saadud 29210 baiti 11822.40 baiti/sekundis
total size is 28079 speedup is 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
Kuvab ekraanile teksti.
[user@testhost ~]$ echo "Hello"
Tere
Siin vÀÀrivad tĂ€helepanu valikud -n â ei lisa rida lĂ”ppu reavahetusega ja -e â kaasata ekraani tĂ”lgendamine lĂ€bi "".
[user@testhost ~]$ echo "tHellon"
tHellon
[user@testhost ~]$ echo -n "tHellon"
tHellon[user@testhost ~]$
[user@testhost ~]$ echo -ne "tHellon"
Hello
Selle kÀsu abil saab ka keskkonnamuutujate vÀÀrtusi kuvada. NÀiteks Linuxi viimase lÔpetatud kÀsu vÀljundkood salvestatakse erimuutujasse $?, ja seega saab teada, milline viga viimases kÀivitatud rakenduses tekkis:
[user@testhost ~]$ ls # viga ei tule
1 man_signal man_signal_error_log temp test
[user@testhost ~]$ echo $? # saame 0 â viga ei olnud
0
[user@testhost ~]$ ls qwerty # saab olema viga
ls: cannot access qwerty: No such file or directory
[user@testhost ~]$ echo $? # saame 2 â shell builtins'i vale kasutamine (Bashi dokumentatsiooni kohaselt)
2
[user@testhost ~]$ echo $? # viimane echo töötas probleemideta, saame 0
0
telnet
TELNET protokolli klient. Kasutatakse kommunikatsiooniks teise hostiga.
[user@testhost ~]$ telnet example.com 80
Trying 93.184.216.34...
Connected to example.com.
Escape character is '^]'.
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 (meelespea, et SSL on juba ammu aegunud), siis telnet selleks ei sobi. Aga sobib klient openssl:
NÀide openssl kasutamisest GET pÀringule vastuse kuvamisega
[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.&."...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`>.
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äide Domeen</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äide Domeen</h1>
<p>See domeen on mõeldud näidisteks dokumentides. Seda domeeni võid kasutada
kirjanduses ilma eelneva koordineerimise või loata.</p>
<p><a href="https://www.iana.org/domains/example">Rohkem teavet...</a></p>
</div>
</body>
</html>
TĂŒĂŒpiliste probleemide lahendamine Linuxis
Muuda faili omanikku
Faili vÔi katalooge saab omaniku 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 parameetriks tuleb anda uus omanik ja grupp (valikuline), eraldatuna koolonitega. Samuti vĂ”ib olla kasulik, kui muudetakse ka katalooge -R â siis muutuvad omanike Ă”igused ka selle katalooge sisu jaoks.
Muuda faili ligipÀÀs Ôigusi
See ĂŒlesanne lahendatakse kĂ€sku abil chmod. NĂ€itena toon vĂ€lja Ă”iguste seadistamise "omanikule lubatud lugemine, kirjutamine ja tĂ€itmine, grupile lubatud lugemine ja kirjutamine, kĂ”ikidele teistele â mitte midagi":
[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 binaarformaadis) parameetris tĂ€hendab "kĂ”iki Ă”igusi omaniku jaoks", teine 6 (see on 0b110 binaarformaadis) â "lugemine ja kirjutamine", ning 0 â see tĂ€hendab, et teistele ei ole Ă”igusi. Bitaalne mask koosneb kolmest bitist: kĂ”ige noorem ("parem") bit vastutab tĂ€itmise eest, jĂ€rgmine bit ("keskne") â kirjutamise eest, ja kĂ”ige vanem ("vasak") â lugemise eest.
Samuti saab Ă”igusi mÀÀrata spetsiaalsete sĂŒmbolite abil (mnemooniline sĂŒntaks). NĂ€iteks jĂ€rgmises nĂ€ites eemaldatakse esmalt tĂ€itmisĂ”igused praeguselt kasutajalt ja seejĂ€rel taastatakse need:
[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 rohkem (eriti mnemoonilise sĂŒntaksi kohta, nĂ€iteks, ).
Kuvada binaarfaili sisu
Seda saab teha utiliidi hexdump. Allpool on toodud nÀited selle kasutamisest.
[user@testhost ~]$ cat temp
File'i 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 |File'i 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 kuvada ka teistes formaatides, kuid kÔige sagedamini vÔivad kasulikud olla just need variandid selle kasutamisest.
Otsida faile
Faili leidmine nime osade jÀrgi kataloogihierarhias on vÔimalik kÀsuga find:
[user@testhost ~]$ find test_dir/ -name "*le*"
test_dir/file_1
test_dir/file_2
test_dir/subdir/file_3
Samuti on saadaval teised otsimise valikud ja filtrid. NÀiteks saab nii leida faile 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
Otsida teksti failides
Selle ĂŒlesande tĂ€itmiseks aitab kĂ€sk grep. Sellel on palju kasutusvĂ”imalusi, siin on nĂ€itena toodud 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 populaarsest viisist kĂ€su kasutamiseks grep â kasutamine sellel konveieril (pipe):
[user@testhost ~]$ sudo tail -f /var/log/test.log | grep "ERROR"
Valik -v lubab luua efekti grepâast tagasi â kuvatakse ainult read, mis ei sisalda mustrit, mis edastatakse grep.
Vaata installitud pakette
Ăhtset kĂ€sku ei ole, sest see sĂ”ltub Linuxi distributsioonist ja kasutatavast paketihaldurist. TĂ”enĂ€oliselt aitab ĂŒks 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Ôtavad kaustade puu
Ăks vĂ”imalus kĂ€su kasutamiseks 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 pÔhjalikumat teavet kaustade puu kohta. Samuti saab 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 selle kÀsu sort vÔimaldab sorteerida inimloetavaks vorminguks sisestatud suurused (nt 1K, 2G), valik -r vÔimaldab andmeid sorteerida vastupidises jÀrjekorras.
âOtsi ja asendaâ failis, failides direktoriumis
See toiming viiakse lĂ€bi utiliidiga sed (ilma liputa g lĂ”pus asendatakse ainult esimene esinemine âold-textâ reas):
sed -i 's/old-text/new-text/g' input.txt
Seda saab kasutada korraga mitme faili jaoks:
[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
Kuvada veerg vÀljundist
Selle ĂŒlesande tĂ€itmiseks aitab awk. Selles nĂ€ites kuvatakse kĂ€su vĂ€ljundi teine veerg `ps ux`:
[user@testhost ~]$ ps ux | awk '{print $2}'
PID
11023
25870
25871
25908
25909
Samas on oluline meeles pidada, et awk omab palju rikkalikumat funktsionaalsust, seega tasub tekstiga seotud tööde puhul lugeda sellest kÀsklusest rohkem.
Uuri IP-aadressi hostinime jÀrgi
Selleks aitab ĂŒks jĂ€rgmistest kĂ€skudest:
[user@testhost ~]$ host ya.ru
yа.ru has address 87.250.250.242
yа.ru has IPv6 address 2a02:6b8::2:242
yа.ru mail is handled by 10 mx.yandex.ru.
[user@testhost ~]$ dig +short ya.ru
87.250.250.242
[user@testhost ~]$ nslookup ya.ru
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: ya.ru
Address: 87.250.250.242
VÔrguteave
Seda saab 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 packets 11912135 bytes 9307046034 (8.6 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14696632 bytes 2809191835 (2.6 GiB)
TX errors 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 packets 10 bytes 866 (866.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10 bytes 866 (866.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ja vÔib 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
Samuti, kui teid huvitab ainult IPv4, saate 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 koos protsessi PIDâga, mis porti kuulab, ning porti numbrilises kujutises, peate seda kasutama jĂ€rgmiste valikute abil:
[user@testhost ~]$ netstat -lptnu
SĂŒsteemi teave
Seda teavet saab saada kÀsu abil 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, millises formaadis vÀljund toimub, vÔite pöörduda helpselle kÀsu kohta:
[user@testhost ~]$ uname --help
Kasutamine: uname [VALIK]âŠ
Prindib teatud sĂŒsteemi teavet. Kui VALIK ei ole mÀÀratud,
siis eeldatakse -s.
-a, --all trĂŒki kogu teave, jĂ€rgmist korda,
vÀlja arvatud -p ja -i, kui need pole teada:
-s, --kernel-name prindi tuum nime
-n, --nodename prindi masin nÔrgendamise nime
-r, --release prindi operatsioonisĂŒsteemi versioon
-v, --kernel-version prindi tuum versioon
-m, --machine prindi masina seadme tĂŒĂŒp
-p, --processor prindi protsessori tĂŒĂŒp vĂ”i âtundmatuâ
-i, --hardware-platform prindi riistvara platvormi tĂŒĂŒp vĂ”i âtundmatuâ
-o, --operating-system prindi operatsioonisĂŒsteemi nimi
--help kuva see abiteave ja vÀlju
--version kuva versiooni teavet ja vÀlju
MĂ€luteave
Kuna palju operatiivmÀlu on kasutatud 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
FailisĂŒsteemide teave (vaba ruum kettal)
Meeskond df vĂ”imaldab nĂ€ha, kui palju ruumi on vaba ja kasutatud monteeritud failisĂŒsteemidel.
[user@testhost ~]$ df -hT
FailisĂŒsteem TĂŒĂŒp Suurus Kasutatud Vaba Kasutatud% Montitud
/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 peab olema vĂ€lja trĂŒkitud.
Ălesannete ja sĂŒsteemi erinevate statistika teave
Kasutatakse kÀsku top. Selle kaudu saab erinevat teavet: nÀiteks protsesside tipp operatiivmÀlu kasutamise jÀrgi vÔi protsesside tipp protsessori aja kasutamise jÀrgi. Samuti prindib 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 on tööriist, millel on palju funktsioone, nii et kui kavatsete seda sageli kasutada, on parem tutvuda selle dokumentatsiooniga.
VÔrgu liikluse jÀÀdvustamine
Linuxis kasutatakse vÔrgu liikluse redigeerimiseks tööriista tcpdump. Traffic-dumpimiseks porti 12345, saate kasutada jÀrgmist kÀsku:
[user@testhost ~]$ sudo tcpdump -i any -A port 12345
Valik -A tĂ€hendab, et meil on ASCII-vĂ€ljund (seetĂ”ttu on see hea tekstiprotokollide jaoks), -i any nĂ€itab, et meid ei huvita vĂ”rgu liides, port â millise porti liiklust jÀÀdvustada. Asetage port on vĂ”imalik kasutada host, vĂ”i kombinatsioon host ja port (host A and port X). Samuti vĂ”ib kasulik olla valik -n â mitte konverteerida aadresse hosti nimedeks vĂ€ljundis.
Mis juhtub, kui liiklus on binaarne? Siis aitab meid valik -X â andmete vĂ€ljastamine hex ja ASCII kujul:
[user@testhost ~]$ sudo tcpdump -i any -X port 12345
Samuti tuleb arvestada, et mĂ”lemal juhul vĂ€ljundis kuvatakse IP packetid, seega nĂ€ete, et igaĂŒhe alguses on binaarsed IP ja TCP pĂ€ised. Siin on nĂ€ide vĂ€ljundist pĂ€ringu "123" saatmisest serverile, 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
Muidugi, Linuxis on veel palju huvitavaid asju, millest lugeda Habrast, StackOverflowist ja teistelt saitidelt (nĂ€iteks mainin , mis on saadaval ka ). SĂŒsteemi administraatorid ja DevOps kasutavad serverite konfigureerimiseks palju rohkem kĂ€ske ja utiliite, kuid isegi testijatel vĂ”ib puududa loetletud kĂ€ske. VĂ”ib olla vajalik kontrollida mĂ”ne keerulise kliendi ja serveri ajutise viivituse Ă”igsust vĂ”i serveri tööd, kui kettal pole vaba ruumi. Juba rÀÀkimata nĂ€iteks Dockerist, mida tĂ€napĂ€eval paljuski ettevĂ”tetes aktiivselt kasutatakse. Oleks huvitav, kui jĂ€tkaksime selle juhendi raames mitmete erinevate Linuxi konsooli utiliitide kasutamise nĂ€idete analĂŒĂŒsimist teenuste testimise kĂ€igus? Jagage ka oma lemmikute kĂ€skude loetelu kommentaarides đ
Allikas: habr.com
