Pagrindinės linux komandos
Kazdieniame serverio administravime neapseisite nežinodami kaip valdyti serverį prisijungus prie jo per ssh.
Pagrindines ssh komandos.
Turėkite omenyje, kad jūs galite pasiskaityti kiekvienos komandos bei jos atributų aprašimus parašius man komanda
ls
: Parodo failus bei direktorijas esamoje direktorijoje.
ls -al
: Parodo failus bei direktorijas ir papildomą informaciją apie jų teises, vartotojus ir t.t.
cd
: Keičia esamą direktoriją PVZ: cd /usr/home
: Nueisite į /usr/home direktoriją
cd ~
: Nueina i namu direktoriją, jeigu prisijungėte kaip root - nueisite į root direktoriją
cd -
: Nueina i paskutinę direktoriją kurioje buvote
cd ..
: Eiti i direktorija kuri yra aukščiau pvz: esate /root/failas1/failas2 tai parašius cd ..
būsite /root/failas1
cat
: Spausdina failo turini į ekraną pvz: cat /root/.bash_history
atspauzdins /root/.bash_history failo turini (šiame faile laikoma ansčiau vestų komandų istorija)
Keli pavyzdeliai su cat:
cat /proc/cpuinfo
: Atspausdina procesoriaus informaciją
cat /proc/meminfo
: Atspausdina informacija apie kompiuterio naudojama bei laisvą atmintį
chmod
: Keicia failo privilegijas
chmod turi trys pagrindinius parametrus einančius iš kairės į dešine
VARTOTOJUI - GRUPEI - VISIEMS
0 = --- Nėra teisių
1 = --X Tik paleisti
2 = -W- Tik rašyti
3 = -WX Rašyti ir paleisti
4 = R-- Tik skaityti
5 = R-X Skaityti ir paleisti
6 = RW- Skaityti ir rašyti
7 = RWX Skaityti, rašyti ir paleisti
Naudojimas
chmod Permisijos failas
chmod 000 failas
: Niekas neturi jokių teisių
chmod 644 failas
: Vartotojas turi skaitymo ir rašymo teises, grupė ir visi kiti tik skaitymo
chmod 755 failas
: Vartotojas turi skaitymo, rašymo ir paleidimo teises, grupė ir visi kiti skaitymo ir paleidimo teises
Jeigu norime, kad tik vartotojas galėtu atlikti veiksmus failui komanda būtu tokia:
chmod 700 failas
chown: Keicia failo ar aplanko priklausimą tam tikram vartotojui ar grupei
chown turi dvi opcijas kurios eina iš kairės į dešinę:
VARTOTOJAS - GRUPĖ
chown root Failas.txt
: Nustato, kad failas priklausytu vartotojui root
chown root:root Failas.txt
: Nustato, kad failas priklausytu vartotojui root bei root grupei
chown -R root:root /root/
: Nustatys permisijas katalogams, failams bei subkatalogams
tail
: Panašiai kaip cat
tiesiog atvaizduoja failo turinį nuo galo ( pagal nutilėjimą rodo 10 eilučių )
tail /var/log/messages
: Parodys failo /var/log/messages 10 eilučių nuo galo
tail -f /var/log/messages
: Parodys paskutines 10 eilučių ir papildomai jeigu atsiras naujas įrašas jį išspauzdins
tail -n 200 /var/log/messages
: Parodys paskutines 200 eilučių
Tarkim jeigu norite, kad atspauzdintu 30 paskutiniu eilučių ir rodytu atsinaujinimus į ekraną:
tail -n 30 -f /var/log/messages
more
: Panašiai kaip cat
tik jeigu failo turinys netelpa į langą tai leidžia su space pagalba eiti po puslapi žemyn (jeigu norite išeiti iš apžvalgos neperžiūrėje failo iki pabaigos galima paspausti q
)
more /proc/cpuinfo
: Parodys failo cpuinfo turinį ir jeigu netilps į ekrana spaudziant space keliausite link failo pabaigos
nano
: Vienas iš editorių kuris yra lengviau naudojamas
nano failas
: Atidaro failą redagavimui
Pagrindinės komandos jau atidarius failą su nano redagavimo programa (klavišų kombinacijos).
ctrl+g
: Naudojimosi instrukcija
ctrl+x : Uždarys atidarytą failą ( jeigu faile yra padaryti pakeitimai tai paklaus ar norite išsaugoti pakeitimus, kad patvirtinti pakeitimus spauskite y
ir tada enter
)
ctrl+o
: Įrašys atidaryto failo pasikeitimus į diską neuždarant redaguojamo failo
ctrl+r
: Įterps kito failo turinį į dabartinę posziciją ( reikia nurodyti pilną kelią iki įterpiamo failo )
ctrl+w
: Paieška atidarytame faile.
ctrl+y
: Atitinka mygtuką page up
ctrl+v
: Atitinka mygtuką page down
ctrl+k
: Iškerpa tam tikrą eilutę ( laiko atminty iškirtpą eilutę (galima iškirpti daug eilučių ir jos bus laikomos atmintyje))
ctrl+u
: Įterpia eilutę iš atminties
ctrl+c
: Parodo kursoriaus poziciją
ctrl+_
: Paprašys įvesti eilutės numerį ir nukels žymeklį į ją
ctrl+^
: Pradeda žymėti tekstą. (tarkim jeigu reikia pažymėti 10 eilučių tai spaudžiam ctrl+^ ir einam žemyn, pažymėjus galima atlikti, aukščiau išvardintus veiksmus pažymėtam tekstui)
grep
: Ieško sutapimų faile
grep root /etc/passwd
: Ekrane parodis visas eilutes kuriose yra žodis root iš failo /etc/passwd
grep -v root /etc/passwd
: -v pasako grep komandai, kad turi spauzdinti visas eilutes kuriose nėra root žodžio
grep -v -m 10 root /etc/passwd
: -m 10 nurodo, kad spauzdintu 10 eilučių
grep -v -m 10 -n root /etc/passwd
: -n pridės eilutės skaičių
ln
: Sukuria failo ar aplanko atvaizdą
ln -s /etc/apt/sources.list /etc/sources.list
: Sukurs failo /etc/apt/sources.list atvaizdą į /etc/sources.list, jeigu redaguosite atvaizdą pasikeitimai bus matomi ir originaliame faile, jeigu istrinsite atvaizdą - originalas liks nepaliestas
last
: Parodo kas buvo prisijunges ir kada
last -n 20
: Parodo prisijungusius i sistema ( paskutinius 20 prisijungimų )
last -n 20 -a
: Parodo paskutinius 20 prisijungimų, bet perkels ip/hostneimą i galą ( taip bus matomas visas adresas )
w
: Parodo kas šiuo metu pasijunges
who
: Taipat rodo kas pasijunges
netstat
: Rodo visus esamus prisijungimus ar aktyvius socketus serverije (pridėjus -n
matysime ip adresus)
netstat -anop
: Rodo visus atvirus portus, aktyvius susijungimus, susijungimo statusą bei kokia programa naudoją tą susijungimą
netstat -rn
: Parodo routinimo lentelę
netstat -s
: Parodo statistiką pagal protokolus
top
: Programa kuri parodo šia akimirką paleistus procesus ir kiek jie kiekvienas atskirai sunaudoja resursų bei kiek sunaudojama resursų bendrai viso serverio, taipogi parodoma kiek laisvų resursų.
shift+m
rikiuoja pagal tuos procesus kurie sunaudoja daugiausiai atminties
shiftp+p
rikiuosja pagal tuos procesus kurie sunaudoja daugiausiai procesoriaus
Šios programos alternatyva gali būti htop
(Standartiškai gali būti ne įdiegta)
touch
: Sukuria tuščią failą
touch /root/how-to.txt
: Sukurs tuščią failą direktorijoje /root pavadinimu how-to.txt
file
: Bando atspėti kokio tipo failas
file *
: Parodo visų failų informaciją esamoje direktorijoje
du
: Rodo disko naudojimą
du -sh failas
: Prodo kiek užima vietos diske tam tikras failas ( taipogi jeigu tai aplankas tai iskaičiuojama kas yra tuose aplankuose )
du -sh *
: Parodys kiek užima visi failai esamoje direktorijoje
df -h
: Pardodo kiek užimta/laisva vietos diske ir jeigu yra sukurtos - particijose
wc
: žodzių/eilučių/simbolių skaičiavimas
wc -l failas.txt
: Parodo kiek yra linijų failas.txt faile
wc -w failas.txt
: Parodo kiek yra žodzių failas.txt faile
wc -m failas.txt
: Prodo kiek yra simbolių failas.txt faile
cp
: Kopijuoja failą
cp failas failas.back
: Padaro failas kopiją kurį pavadina failas.back
cp -a /var/log/* /root/logai
: -a nurodo, kad kopijuotu visus failus iš /var/log/ į /root/logai/
cp -av * /root/direktorija
: Nukopijuoja visus failus ir ir aplankus iš dabar esančios direktorijos į /root/direktorija
cp -rp
: Kopijuoja failus išsaugant jų teises
mv
: Perkelia failą (cp kopijuoja, o mv perkelia nepaliekant senojo)
mv /var/log/SenasFailas /var/log/NaujasFailas
: Perkels /var/log/SenasFailas į /var/log/NaujasFailas
mv -f direktorija /var/log/direktorija
: -f nurodo, kad neklaustu ar norite perrašyti jeigu yra tokių pačių
rm
: Trina failą/direktoriją
rm failas.txt
: Ištrins failas.txt
rm -rf /root/aplankas
: Ištrina aplanką
tar
: Naudojama suarchivavimui arba išpakavimui .tar arba .tar.gz failams
tar -zxvf failas.tar.gz
: Išpakuoja .tar.gz failą
tar -xvf failas.tar
: Išpakuoja .tar failą
tar -cf archyvas.tar aplankas/
: Supakuoja visą turinį kuris yra aplankas/ į archyvą archyvas.tar
gzip -d failas.gz
: Išpakuoja .gz faila
unzip
: Išpakuoja zip archyvus
unzip failas.zip
: Išpakuos .zip archyvą
unrar
: išpakuoja .rar archyvus
unrar -x failas.rar
: Išpakuos failas.rar archyvą
Kaip ir dauguma operacinių sistemų linux taip pat turi vartotojus. Šie vartotojai turi labai daug opcijų tad aptarsime tik kaip juos sukurti bei kelis kitus aspektus.
adduser testas
: Sukuria vartotoją su prisijungimo vardu testas
Po vartotojo sukūrimo reikia jam nustatyt slaptažodį
passwd testas
: Ši komanda pakeičia slaptažodį
userdel -r testas
: Ištrina vartotoją bei jo namų direktoriją
ps
: Komandą parodo palestis procesus linux serveriuose
Kiekvienas procesas turi unikalų savo numerį (procesu galima būtu pavadinti programą ar skriptą ar, bet ką kas veikia serverije) ir žinant to proceso numerį galima jį išjungti (žiūrėkite kill
komandą).
ps U vartotojas
: Parodo tam tikro vartotojo paleistus procesus
ps aux
: Parodo visos sistemos paleistus procesus
kill
: nužudo norimą procesą. Naudoimas:
kill -9 PID
pvz.: kill -9 431
Naudokite ps ux
kad gauti PIDs (Proceso ID numerius)
Pvz.:
PID TTY TIME COMMAND
10550 pts/3 0:01 /bin/csh
10574 pts/4 0:02 /bin/csh
10590 pts/4 0:09 APP
PID stulpelis yra procesoriaus numeris, COMMAND stulpelis nurodo kokia konkrečiai paleista programa. Tarkim jeigu norime išjungti programą pavadinimu APP tai rašome kill -9 10590
Komandu naudojimas kartu
Dažnai prireikia panaudoti kelias komanda vienu metu perduodant atsakymus iš vienos kitai ir taip gauti norimą atsakimą. Simbolis |
leidžia naudoti kitą komandą ir pirmoji perduoda informaciją kitai.
>
Simbolis gali būti naudojams įrašant informaciją į failą kai kiekvieną kartą failo turinys yra užrašomas ant viršaus
>>
Taip pat kaip ir ankstesnė komanda, bet failas nėra pradedamas rašyt iš naujo, o įrašymas tęsiamas neištrinant senos informacijos
<
Atvirkštinis variantas kai informacija pateikiama iš failo į komandą.
last -a > /root/lastlogins.tmp
Ši komanda įrašys paskutinius prisijungimus (pagal nutilėjimą 10 paskutinių prisijungimų) į failą lastlogins.tmp kuris bus /root/ aplanke
tail -n 10000 /var/log/exim_mainlog |grep domenas.com
Ši komanda paims failo /var/log/exim_mainlog 10000 įrašų nuo galo ir atspauzdins tik tas eilutes kuriose yra domenas.com reikšmė
netstat -an |grep :80 |wc -l
Šis komandų junginys parodys kiek yra prisijungimų į 80 portą, kaip tai veikia:
netstat -an
spauzdina informacija apie prisijungimus
grep :80
atrenka eilutes kuriose yra toks įrašas
wc -l
paskaičiuoja kiek yra eilučių
Tarkim norime papildyti šią komandą ir sužinoti ne kiek yra prisijungimų į 80 portą, o kiek i tą portą yra unikalių ( iš skirtingų ip adresų ) prisijungimų.
netstat -an | grep :80 | awk {'print $5'} | awk -F: '{print $1}' | uniq | wc -l
awk {'print $5'}
Spauzdina penktą stulpelį
awk -F: '{print $1}'
Padalina atsakimą į dvi dalis ties simboliu : ir spauzdina pirmą dalį (atrenkamas tik ip adresas)
uniq
Atrenka unikalias reikšmes
Tarkime norime gauti /proc/meminfo eilutę kur parodo kiek yra laisvų ram:
cat /proc/meminfo | grep MemFree:
Gauname atsakymą panašų į: MemFree: 614352 kB
Tarkim norime gauti tik skaičių kiek yra laisvų ram:
cat /proc/meminfo | grep MemFree: | awk '{print $2}'
awk komanda nurodo, kad spauzdintu antrą įrašą, kad tai antras įrašas suprantama tarpo pagalba.
Taigi gauname tokį rezultatą: 613144 bet cča yra kB ir mes norime matyti mb:
cat /proc/meminfo | grep MemFree: | awk '{print $2/1024}'
Elementarus dalybos veiksmas /1024 ir rezultatą jau gauname 597.344
Tarkime norime prideti datą kada gauta informacija apie laisvus ramus.
cat /proc/meminfo | grep MemFree: | awk '{print d, $2/1024}' "d=$(date +"%Y-%m-%d")"
Gaunamas rezultatas: 2010-08-10 589.395
Dabar tarkime norime padaryti, kad butu dar + patikrinimas jeigu mažiau nei 600
cat /proc/meminfo | grep MemFree: | awk '{ if ($2/1024 < 600) { print d, $2/1024 } }' "d=$(date +"%Y-%m-%d")"
Gaunamas rezultatas nesikeičia, bet jis bus rodomas tik tuo atveju jeigu gautas rezultatas yra maziau nei 600.
Dabar tarkim norime įrasyti gautą rezultatą į failą.
cat /proc/meminfo | grep MemFree: | awk '{ if ($2/1024 < 600) { print d, $2/1024 } }' "d=$(date +"%Y-%m-%d")" >> /root/ramai.txt
Ką mes čia gavome. Tarkim jeigu pakeisti 600 į 100:
cat /proc/meminfo | grep MemFree: | awk '{ if ($2/1024 < 100) { print d, $2/1024 } }' "d=$(date +"%Y-%m-%d")" >> /root/ramai.txt
ir šią komandą įrašyti į cronjobą kuris būtu vygdomas kas minute - mes į failą /root/ramai.txt gautumėme informaciją kada buvo laisvų ramų like mažiau nei 100mb.
SMULKESNIS PAAIŠKINIMAS KIEKVIENOS KOMANDOS:
Turime komandą:
cat /proc/meminfo | grep MemFree: | awk '{ if ($2/1024 < 100) { print d, $2/1024 } }' "d=$(date +"%Y-%m-%d")" >> /root/ramai.txt
1: cat /proc/meminfo
: atspauzdina visą info apie serverio naudojamą atmintį
2: grep MemFree:
: Paima eilutę tik tą kurioje yra įrašas "MemFree:"
3: awk '{ if ($2/1024 < 100) { print d, $2/1024 } }' "d=$(date +"%Y-%m-%d")"
a: if ($2/1024 < 100)
: Jeigu eilutėje kuri anksčiau atrinkta buvo pagal žodį "MemFree:" antras žodis padalintas iš 1024 yra mažiau nei 100
b: { print d, $2/1024 }
: atspauzdinta d
( kas tas d aprašyta kitame punkte ) ir iš eilutės "MemFree:" gautą antrą reikšmę padalinta iš 1024
c: "d=$(date +"%Y-%m-%d")"
: Aprašomas d
, o d
yra komanda date
kuri spauzdina datą tik dar papildomai nurodytas jos formatas, tai yra %Y
reiškia metai %m
reiskia mėnesį %d
reiškia dieną, galima pakeisti ir i "d=$(date +"%Y:%m:%d")"
gal kam gražiau atrodis.
4: >> /root/ramai.txt
: Tiesiog įrašo rezultatą į failą /root/ramai.txt ( jeigu rezultatas nebuna tuščias)
Šiuo pavyzdžiu parodėme kaip galima sukombinuoti kelias komandas ir net bash skriptinimą į vieną eilutę ir padaryti ram stebėjimą