Kuidas näevad välja nagu UNIX Guru

Link: http://www.cs.usfca.edu/~parrt/course/601/lectures/unix.util.html

 

Terence Parr

Viimati uuendatud: 30. august 2006

Tõlked:

Valgevene tõlkimine
UNIX on väga populaarne platvorm rakendades tarkvara osalt oma julgeolekut ja stabiilsust, kuid ka sellepärast, et see on rikkalikult käsurea ja skriptimisriistu. Programmeerijad kasutavad neid tööriistu manipuleerides failisüsteemi, töödelda logifailide ja üldiselt automatiseerida nii palju kui võimalik.

Kui sa tahad olla tõsine server arendaja, sa pead olema teatud rajatis mitmete UNIX tööriistad; umbes 15. Sa alustada näha sarnasusi nende seas, eriti regulaaravaldisi, ja varsti te tunnete väga mugav. Ühendades lihtsaid käske, saate luua väga võimsad vahendid väga kiiresti – palju kiiremini kui sa saaksid ehitada samaväärset funktsionaalsust C või Java, näiteks.

Loeng viib teid läbi põhilised käsud ja siis näitab teile, kuidas neid kombineerida lihtsaid mustreid või jaotama pakkuda keerukamaid funktsioone nagu histogramming. See loeng eeldab sa tead, mida kest on ja et teil on mõned põhilised tuttav UNIX.

[Muide, see leht saab palju tähelepanu net ja kahjuks ma saan kirja palju inimesi, kes on paremaid lahendusi või asjad ma peaks lisama. Ma olen ainult näitab, mida ma olen õppinud vaadates hea UNIX inimesi nii ma ei ütle, et need näpunäited on optimaalsed lahendused. Ma teha päris teadmatuses sys admin.]

Kõik on oja

Esimene asi, mida pead teadma, on see, et UNIX põhineb ideel oja. Kõik on oja, või tundub olevat. Seadme draiverid nägema ojad, terminalid välja nagu ojad, protsesside suhelda ojad jne … sisend ja väljund programmi ojad, et saab suunata ümber seadme fail või teise programmi.

Siin on näide seadmest null seade, mis võimaldab teil visata väljund kaugusel. Näiteks võiksite panna programm, kuid ignoreerida väljund.

$ Ls> / dev / null # ignoreerida väljund ls
kus “# ignoreerida väljund ls” on kommentaar.

Enamik käske, mida selles loengu käigus standardsisendi ja saatke tulemusi standardväljundit. Sel viisil saab astmeliselt töödelda andmevoo haakides väljund ühe vahendina sisend teise toru kaudu. Näiteks järgmised veetorustiku jada prindib arvu faile aktiivses kataloogis muudetud augustis.

$ Ls -l | grep august | wc -l
Kujutage ette, kui kaua see võtab sul kirjutada samaväärne C või Java programm. Võite saada väga produktiivne UNIX programmeerija, kui sa õpid ühendada lihtsa käsurea tööriistu. Isegi kui nad kavandavad arvutis, ma kasutan MKS UNIX kest ja käsuteek, et muuta see välja nagu UNIX kasti. Worth raha.

Abi saamine

Kui teil on vaja teada käsk, küsi “mees” lehel. Näiteks selleks, et teada saada ls käsk tüüp

$ Mees ls
LS (1) Süsteemi General käsud Käsitsi LS (1)

NIMI
ls – kataloogide sisu

SYNOPSIS
ls [-ACFLRSTWacdfgiklnoqrstux1] [file …]

KIRJELDUS
Iga operandi et nimed faili, välja arvatud kataloog, ls

Saad kokkuvõte käsu ja kõik argumendid.

Kui te ei mäleta käsu nimi, proovige muuseas, mis leiab käsud ja raamatukogu seotud regulatsioonid, mis sõna. Näiteks selleks, et teada saada, kuidas seda teha kontrollimisel tüüp

$ Muuseas kontrollsumma
cksum (1), summa (1) – ekraanil faili kontrollsumma ja blokkide arv
md5 (1) – arvutab sõnum seedida sõrmejälg (kontrollsumma) Faili
Special kataloogid ja failid

Vaatahttp: //www.thegeekstuff.com/2010/09/linux-file-system-structure

Otsetee teile koju kataloogi / home / kasutajanimi on ~ kasutajanimi. Näiteks ~ parrt on mu kodu kataloogi / home / parrt.

Kui te kasutate kest on mõiste praeguse kataloogi. Dot “.” märk on stenografisti jooksva kataloogi ja “..” on lühendvormina kataloogi üle praeguse. Nii juurdepääsu faili test aktiivses kataloogis, ./test on sama tavaline test. Kui test on kataloogi, kasutab ../test.

/ On juurkataloogis; ei ole autot täpsustus UNIX.

.bash_profile Fail on väga tähtis, sest see on, kuidas teie shelliseanss käivitub ka oma üha olulisem CLASSPATH keskkonnamuutuja. Sinu bash shell initsialiseerimise faili ~ kasutajanimi / .bash_profile ja loonud kood selline:

PATH = $ PATH: $ HOME / bin
Tavaliselt siis minna ja määrata oma CLASSPATH nii et sa ei pea seadma seda kogu aeg.

ekspordi CLASSPATH = “.: / home / avalik / cs601 / junit.jar”
Ekspordi tähendab, et loovutamise CLASSPATH on nähtav kõigile lapse protsesse (st kõigile programme sa jooksed koorega).

Põhitõed

CD

Muutuvad kataloog tehakse cd dir kus dir saab “.” või “..” liikuda aktiivse kataloogi (mitte midagi) või tõusevad kataloog.

ls

Näita failide kataloogi ls. -l Võimalust kasutatakse, et kuvada failide detaile:

kokku 9592
-RW-r – r– 1 parrt töötajad 5600 19. august 2005 C-Java-relationship.html

drwxr-xr-x 13 parrt töötajad 442 19. oktoober 2005 istungid
-RW-r – r– 1 parrt töötajad 2488 19. oktoober 2005 sessions.html

“töötajad” on parrt grupp.

Kui soovite näha peidetud faile (mille alguses “.”), Kasutada “-a”.

Kombinatsioonid on võimalikud: kasutada “ls -la”, et näha üksikasju kõik failid sealhulgas peidetud ones.

väljapanek faile

Seal on 4 kasulikud viisid kuvada sisu või selle osade faili. Esimene on väga sageli kasutatud käsu kass. Näiteks selleks, et näidata oma nimekirja objektorienteeritud märksõnu kasutatakse seda muidugi tüüp:

$ Cat /home/public/cs601/oo.keywords.txt
Kui faili on tõesti suur, siis ilmselt soovid kasutada rohkem, mis sülitab faili läbi ekraani suuruse tükkideks.

$ Rohkem /var/log/mail.log
Kui soovid näha esimesi ridu failile või viimastel read kasutada pea ja saba.

$ Head /var/log/mail.log
$ Saba /var/log/mail.log
Saate määrata mitmeid argumendina saada teatud arv ridu:

$ Peaga -30 /var/log/mail.log
Kõige kasulikum loits saba prindib viimase paar rida faili ja siis ootab, trükkimiseks uued liinid nagu nad on lisatud faili. See on suurepärane vaadates logifaili:

$ Saba -f /var/log/mail.log
Kui teil on vaja teada, kui palju märke, sõnad või read faili, kasutage wc:

$ Wc /var/log/mail.log
164 2916 37896 /var/log/mail.log
Kui numbrid on, et, jooned, sõnad, siis tähemärki. Selguse saab kasutada wc -l printida lihtsalt ridade arvu.

pushd, popd

Selle asemel, et cd saate pushd salvestada praeguse dir ja siis automaatselt cd täpsustatud kataloog. Näiteks,

$ Pwd
/ Users / parrt
$ Pushd / tmp
/ tmp ~
$ Pwd
/ tmp
$ Popd
~
$ Pwd
/ Users / parrt
top

Et vaadata dünaamiline kuva protsessid oma kasti tegevust, kasutada top.

ps

Välja trükkida (lai ekraan) kõik töötab box, kasutamise ps auxwww.

chmod

Selleks, et muuta privileegide faili või kataloogi, kasutamiseks chmod. Need õigused on 3 kohaline kaheksand sõnu 3 bitti kohaline: rwxrwxrwx kus esimest numbrit on faili omanik, 2. grupi ja 3. kellelegi. 644 on ühine sõna väärtus faili, mis tähendab 110100100 või rw-r – r–. Kui te seda teete ls -l näed neid bitti. 755 on ühine sõna väärtus kataloogid: rwxr-xr-x, kus kataloogid pead olema käivitatav CD saaks siseneda, et dir. 755 on lühendvormina loetavamaks argument u = rwx, minge = rx. u on kasutaja, g on grupp, o on teine.

Kasutage chmod -R eest rekursiivselt kohaldatakse kõigi dirs alla argument samuti.

Otsin ojad

Üks kõige kasulikke vahendeid UNIX ja see, mida võib kasutada kõige on grep. See näitaja sobib regulaaravaldiste (mis sisaldab lihtsaid sõnu) ja prindib sobitamine read standardväljundit.

Lihtsaim loits otsib konkreetset -märgijada kogum faile. Siin on näide, mis näeb ette ühtegi viidet süsteemi java failid aktiivses kataloogis.

grep süsteem * java
Võite leida dot “.” regulaaravaldise kasulik. Sellele vastab ühele sümbolile kuid tavaliselt koos star, mis kattub null või mitmele eelnevale eset. Ole ettevaatlik, et pange väljenduse ülakoma nii käsurea laienemine ei muuda argument. Järgnev näide, otsib viited tahes alafoorum lehekülje server log file:

$ Grep “/forum/.*” /home/public/cs601/unix/access.log
või samaväärselt:

$ Cat /home/public/cs601/unix/access.log | grep “/forum/.*”
Teine vorm on kasulik, kui soovite töödelda failide kogumit ühe oja nagu:

kass /home/public/cs601/unix/access*.log | grep “/forum/.*”
Kui teil on vaja otsida stringi alguses rida kasuta katus “^”:

$ Grep ‘^ 195.77.105.200’ /home/public/cs601/unix/access*.log
See leiab kõik read kõik pääsulogid algab IP aadress 195.77.105.200.

Kui soovid pöörake mustrite leida read, mis ei vasta muster, kasutada -v. Siin on näide, mis leiab viiteid non pilt satub logifaili:

$ Cat /home/public/cs601/unix/access.log | grep -v “/ images”
Nüüd kujutage ette, et teil on http logifaili ja soovid filtreerida lehel taotlused nonhuman ämblikud. Kui teil on fail nimega spider.IPs leiad kõik nonspider lehekülgi kaudu:

$ Cat /home/public/cs601/unix/access.log | grep -v -f /tmp/spider.IPs
Lõpuks ignoreerida puhul sisendivoost kasutada -i.

Tõlkimine ojad

Morphing teksti oja on oluline UNIX operatsioon. Perl on hea vahend, kuid kuna mulle ei meeldi PERL ma jään kolm vahendit: tr, sed ja awk. PERL ja need vahendid on rida-line tööriistu, et nad tegutsevad ka ainult mustrid täielikult sisaldub ühes reas. Kui teil on vaja töödelda keerulisem mustrid nagu XML või vajate sõeluda programmeerimiskeelt, kasutada kontekstivaba grammatika tööriista nagu antlr.

tr

Manipuleerimiseks tühik, leiad tr väga kasulik.

Kui teil on Andmeveerud eraldatud ruumides ja soovid veerud kollaps nii on ühe veeru andmed, rääkige tr asendada ruumi reavahetus tr ” ‘\ n “. Mõtle sisendfail / home / avalik / cs601 / Unix / nimed:

Jim Scotti mike
Bill Randy tom
Et saada kõik need nimed veerus kasutamine

$ Cat / home / avalik / cs601 / Unix / nimed | tr ” ‘\ n’
Kui soovid SVG järjestused ruumid ühte ruumi, kasutada tr -s ”.

Et teisendada PC faili UNIX, sa pead vabaneda “\ r” tegelased. Kasutage tr -d “\ r”.

sed

Kui kukkumisel või tõlkimisel ühte märki ei piisa, saate sed (stream editor) asendada või kustutada teksti tükkideks sobitada regulaaravaldisi. Näiteks selleks, et kustutada kõik viited sõna Scott nimed faili, kasutab

$ Cat / home / avalik / cs601 / Unix / nimed | sed ‘s / scott // ”
mis asendab scott midagi. Kui on mitu viited scott ühele reale, kasuta g järelliide näidata “global” selles reas muidu ainult esimene esinemine eemaldatakse:

$ … | sed ‘s / scott // g’
Kui soovid asendada viited view.jsp koos index.jsp kasutamine

$ … | sed ‘s / view.jsp / index.jsp / ”
Kui soovite mingit Asp faili ümber .jsp, siis peab vastama failinimi regulaaravaldise ja nimetavad seda läbi \ 1:

$ … | sed ‘s / \ (. * \). asp / \ 1.jsp / ”
Võimalus \ (… \) rühmituse kogub tekst, mida võib viidata koos \ 1.

Kui soovite, et tappa kõik, alates “,” tegelane rea lõpuni, kasutage lõpp-line marker $:

$ … | sed ‘s /,.*$// “# kill alates komaga rea ​​lõpuni
awk

Kui teil on vaja töötada Andmeveerud või täita natuke koodi iga line mustrile, kasutada awk. awk programmid on muster-tegevus paari. Kuigi mõned awk programmid on piisavalt keeruline nõuda eraldi fail, mis sisaldab programmi, mida saate teha mõned hämmastavad asjad kasutades argumendi käsurea.

awk arvab sisendi read on lagunenud väljad (st, sambad) eraldi tühik. Valdkonnad on viidatud hagi läbi $ 1, $ 2, … samas $ 0 tähistab kogu sisendi real.

Muster-action paar näeb välja selline:

muster {tegevuse}
Kui jätate muster, toiming käivitatakse iga sisendi real. Jättes tegevus tähendab printida line. Võite eraldi paari võrra reavahetuse või semikoolon.

Mõtle sisend

aasghar Asghar Ali
wchen Chen, Wei
zchen Chen, Zhen-Jian
Kui soovite nimekirja login nimed, küsi awk printida esimene veerg:

$ Cat /home/public/cs601/unix/emails.txt | awk “{print $ 1,}”
Kui soovite teisendada kirjautumisnimiä e-posti aadressidele, kasutada printf C-lookalike funktsiooni:

$ Cat /home/public/cs601/unix/emails.txt | awk “{printf (“% [email protected], “$ 1);}”
Kuna puudub \ n printf string, näete väljund kõik ühel real valmis kleepides posti programmi:

aasghar @ cs.usfca.edu, wchen @ cs.usfca.edu, zchen @ cs.usfca.edu
Tasuks ka reorganiseerima Andmeveerud. Et printida eesnimi, perenimi, võite proovida:

$ Cat /home/public/cs601/unix/emails.txt | awk “{printf (“% s% s \ n “, $ 3, $ 2);}”
kuid märkad, et koma on endiselt olemas, sest see on osa veerus:

Ali Asghar,
Wei Chen,
Zhen-Jian Chen,
Sa pead toru väljund läbi tr (või sed) ribad koma:

$ Cat /home/public/cs601/unix/emails.txt | \
awk “{printf (“% s% s \ n “, $ 3, $ 2);}” | \
tr -d “,”
Siis näed:

Ali Asghar
Wei Chen
Zhen-Jian Chen
Võite kasutada ka awk uurida väärtus sisu. Kokkuvõttes esimeses veerus järgmised andmed (fail / home / avalik / cs601 / Unix / kohvi):

3 parrt
2 jcoker
8 tombu
kasutada järgmisi lihtsa käsuga:

$ Awk “{n + = $ 1,}; END {print n;} </ home / avalik / cs601 / Unix / kohvi
Kui lõppkasutajad on eriline muster, mis tähendab “pärast töötlemist oja.”

Kui soovite filtreerida või Kokkuvõttes kõik väärtused on väiksem või võrdne, ütleme 3, kasutada, kui avaldus:

$ Awk “{if ($ 1 <= 3) n + = $ 1,} END {print n;} </ home / avalik / cs601 / Unix / kohvi
Sel juhul näed väljund 5 (3 + 2);

Kasutades awk haarata eriti veerus on väga levinud töötlemisel logifailid. Mõtle http://www.jguru.com lehekülje vaatamine logifaili, /home/public/cs601/unix/pageview-20021022.log, et on kujul:

tempel kirja (thread-nimi): userid-või-IPaddr URL saidi osa
Nii andmeid näeb välja selline:

20021022_00.00.04 (tcpConnection-80-3019): 203.6.152.30 /faq/subtopic.jsp?topicID=472&page=2 KKK
20021022_00.00.07 (tcpConnection-80-2981): 995134 /index.jsp Kodu
20021022_00.00.08 (tcpConnection-80-2901): 66.67.34.44 /faq/subtopic.jsp?topicID=364 KKK
20021022_00.00.12 (tcpConnection-80-3003): 217.65.96.13 /faq/view.jsp?EID=736437 KKK
20021022_00.00.13 (tcpConnection-80-3019): 203.124.210.98 /faq/topicindex.jsp?topic=JSP KKK / JSP
20021022_00.00.15 (tcpConnection-80-2988): 202.56.231.154 /faq/index.jsp KKK
20021022_00.00.19 (tcpConnection-80-2976): 66.67.34.44 /faq/view.jsp?EID=225150 KKK
220021022_00.00.21 (tcpConnection-80-2974): 143.89.192.5 /forums/most_active.jsp?topic=EJB Foorumid / EJB
20021022_00.00.21 (tcpConnection-80-2996): 193.108.239.34 /guru/edit_account.jsp Guru
20021022_00.00.21 (tcpConnection-80-2996): 193.108.239.34 /misc/login.jsp Muu

Kui kasutaja on sisse logitud, logifaili on oma kasutajatunnus mitte nende IP-aadress.

Siin on, kuidas saada ide nimekiri, et inimesed vaadata kohta ütleme 22. oktoober 2002:

$ Awk “{print $ 3;}” </home/public/cs601/unix/pageview-20021022.log
/faq/subtopic.jsp?topicID=472&page=2
/index.jsp
/faq/subtopic.jsp?topicID=364
/faq/view.jsp?EID=736437
/faq/topicindex.jsp?topic=JSP
/faq/index.jsp
/faq/view.jsp?EID=225150
/forums/most_active.jsp?topic=EJB
/guru/edit_account.jsp
/misc/login.jsp

Kui soovite arvutada, mitu lehekülge vaated olid sel päeval, et ei töötlemise lehekülge (minu töötlemise lehed on kõik vormi process_xxx), toru tulemusi läbi grep ja wc:

$ Awk “{print $ 3;}” </home/public/cs601/unix/pageview-20021022.log | \
grep -v protsess | \
wc -l
67850
Kui soovite unikaalne URL-ide nimekiri, saate sortida väljund ja siis kasuta ainulaadset:

$ Awk “{print $ 3;}” </home/public/cs601/unix/pageview-20021022.log | \
Sorteeri | \
uniq
uniq lihtsalt variseb kõik korduvad read ühte rida – see on põhjus, miks sa pead sorteerida väljundiga. Saad väljund nagu:

/article/index.jsp
/article/index.jsp?page=1
/article/index.jsp?page=10
/article/index.jsp?page=2

Tar-faile

Märkus: Nimi pärineb sarnane sõna, karvapall (värk, et kassid öökima), ma olen päris kindel.

Koguda hunnik faile ja katalooge koos kasutada tõrva. Näiteks tar kogu oma kodukataloogi ja panna paki sisse / tmp, seda

$ Cd ~ parrt
$ Cd .. # minna üks dir eespool dir soovite tõrva
$ Tar CVF /tmp/parrt.backup.tar parrt
Kokkuleppeliselt kasutada .tar laiendus. Et Ekstrakti seda faili kasutamine

$ Cd / tmp
$ Tar xvf parrt.backup.tar
tõrva untars asju praeguses kataloog!

Pärast töötab Ekstrakti leiad uue kataloogi / tmp / parrt, mis on koopia oma kodukataloogi. Pange tähele, et kuidas sa tõrva asju dikteerib kataloogi struktuuri kui untarred. Asjaolu, et ma mainisin parrt tar loomine tähendab, et ma pean selle dir kui untarred. Seevastu järgmine teeb ka koopia mu kodu kataloogi, kuid ilma parrt root dir:

$ Cd ~ parrt
$ Tar CVF /tmp/parrt.backup.tar *
See on hea mõte tõrva asju koos juurkataloogi nii, et kui sa Ekstrakti sa ei teeni miljonit failid aktiivses otse. Et näha, mis on pakitud, kasutamine

$ Tar xf /tmp/parrt.backup.tar
Enamik aega saab säästa ruumi abil z argument. Paki Seejärel gzip’d ja sa peaksid kasutama faililaiend .tar.gz:

$ Cd ~ parrt
$ Cd .. # minna üks dir eespool dir soovite tõrva
$ Tar cvfz /tmp/parrt.backup.tar.gz parrt
Unzipping nõuab z argument ka:

$ Cd / tmp
$ Tar xvfz parrt.backup.tar.gz
Kui teil on suur faili tihendamiseks, kasutada gzip:

$ Gzip bigfile
Pärast täitmist, oma fail on ümber bigfile.gz. Lahtipakkimine, kasutada

$ Gzip -d bigfile.gz
Et tekstifaili, mis on praegu gzip’d kasuta zcat:

$ Zcat bigfile.gz
Failide vahel masinad

rsynci

Kui teil on vaja on kataloogi üks masin peegeldas muu masina, kasutada rsynci. Ta võrdleb kõik failid kataloogi alampuu ja koopiaid mis tahes, mis on muutunud peegeldatud kataloog teiselt masin. Näiteks, siin on, kuidas sa võiksid “pull” kõik palgid faile livebox.jguru.com kasti, kust täita rsynci käsk:

$ Hostname
jazz.jguru.com
$ Rsynci -rabz -e ssh -v “[email protected]: / var / log / jguru / *” \
/ backup / web / palke
rsynci kustutada või kärpige faile tagada failid jäävad samaks. See on halb, kui sa kustutada faili kogemata – see hävitada oma varukoopia. Lisa argumendina nimetatakse –suffix öelda rsynci teha koopia igast olemasoleva faili enne seda kirjutab ta:

$ Hostname
jazz.jguru.com
$ Rsynci -rabz -e ssh -v –suffix .rsync_`date “+% Y% m% d’` \
[email protected]: / var / log / jguru / *” / backup / web / palke
kus `kuupäeva” +% Y% m% d’`(tagurpidi ülakoma) tähendab” täita seda kuupäeva käsk “.

Et välistada teatud mustrid sünkroonida, kasutada –exclude:

$ Rsynci -rabz –exclude = entitymanager / –suffix .rsync_`date “+% Y% m% d’` \
-e ssh -v “[email protected]: / var / log / jguru / *” / backup / web / palke
scp

Faili kopeerimiseks või kataloogi käsitsi, kasuta scp:

$ Scp lecture.html [email protected]: ~ parrt / loengud
Just nagu cp, kasutada -r kopeerida kataloogi rekursiivselt.

Mitmesugune

leidma

Enamik GUIs Linux või arvutid on otsing rajatis, vaid käsurea saate leida. Et leida kõik failid nimega .p4 alates kataloogi ~ / antlr / depoo / projekte, kasutada:

$ Leida ~ / antlr / depoo / projektide -nimi “.p4”
Vaikimisi “action” on -PRINT.

Siin saab määrata regulaaravaldise sobivuse. Näiteks, et vaadake oma kodukataloogi iga xml faile, kasutada:

$ Leida ~ -nimi “* xml” -PRINT
Märkus kasutada ülakoma ennetada käsurea laienemine – sa tahad “*” minna Otsimiskäsku.

Võite käsu iga faili või kataloogi leidis, et sobib nimi. Näiteks, kas kustutada kõik xml faile, tee nii:

$ Leida ~ -nimi “* xml” -exec rm {} \;
kus “{}” tähistab “Praeguse faili, mis vastab”. Lõpuks käsk tuleb lõpetada “;” kuid kuna käsurea laienemine, peate põgeneda “;”.

Võite määrata ka aega teavet teie päringut. Siin on skripti, mis kasutab leida kustutada kõik failid vanem kui 14 päeva.

#! / bin / sh

BACKUP_DIR = / var / data / backup

# Päevade arv varukoopiaid
AGE = 14 # päeva
AGE_MINS = $ [$ AGE * 60 * 24]

# Kustutada dirs / failid
leida $ BACKUP_DIR / * -cmin + $ AGE_MINS -tüüpi d -exec rm -rf {} \;
Kasutage leida tagasi puugid argumendina:

vi `leida. -nimi “* .java’` # avada kõik java faile alla praeguse dir
kuumuti

Kui sa tahad teada, kes kasutab porti nagu HTTP (80), kasutada kuumuti. Sa pead olema root kasutada seda:

$ Sudo / sbin / kuumuti -n TCP 80
80 / tcp: 13476 13477 13478 13479 13480
13481 13482 13483 13484 13486 13487 13489 13490 13491
13492 13493 13495 13496 13497 13498 13499 13500 13501 13608
Toodangu näitab nimekirja seotud protsesse, et sadama.

kus on

Mõnikord soovite kasutada käsku, kuid see ei ole PATH ja sa ei mäleta, kus see on. Kasutage whereis vaatama standard unix asukohad käsk.

$ Whereis kuumuti
kuumuti: / sbin / kuumuti /usr/man/man1/fuser.1 /usr/man/man1/fuser.1.gz
$ Whereis ls
LS: / bin / ls /usr/man/man1/ls.1 /usr/man/man1/ls.1.gz
whereis näitab ka man-lehekülgi.

mis

Mõnikord võib olla täidesaatva vale versioon käsk ja tahad teada, millist versiooni käsu oma rajale näitab tuleks käivitada. Kasutage mida küsida:

$ Mis ls
alias ls = “ls –color = Tty”
/ bin / ls
$ Mis java
/ usr / local / java / bin / java
Kui midagi on leidnud oma tee, näete:

$ Mis kuumuti
/ usr / bin / mis: ei kuumuti sisse (/usr/local/bin:/usr/local/java/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/X11R6/bin:/home/parrt/bin)
tapma

Et saata signaali protsess, kasutada tappa. Tavaliselt tahad öelda kill pid kus pid leiate ps või top (vt allpool).

Kasutage kill -9 pid kui sa ei saa protsessi surra; see tähendab, tappa seda “äärmise piiraks”.

trace

Kui teil on raskusi saada saidile, kasutada trace vaadata jada humala kasutada, et saada kodukale:

$ / Usr / sbin / trace www.cnn.com
1 65.219.20.145 (65.219.20.145) 2,348 ms 1,87 ms 1,814 ms
2 loopback0.gw5.sfo4.alter.net (137.39.11.23) 3,667 ms 3,741 ms 3,695 ms
3 160.atm3-0.xr1.sfo4.alter.net (152.63.51.190) 3,855 ms 3,825 ms 3,993 ms

Mis on minu IP aadress?

$ / Sbin / ifconfig
Vastavalt eth0 liides, näete INET-posti aadress:

eth0 Link ENCAP: Ethernet HWaddr 00: 10: DC: 58: B1: F0
INET-posti aadress: 138.202.170.4 Bcast: 138.202.170.255 Mask: 255.255.255.0

Kasulik kombinatsioonid

Kuidas tappa protsessid

Kui soovite, et tappa kõik java protsesside kestnud parrt, võite käivitada killall java kui olete parrt või luua “tappa” script kaudu:

$ Ps auxwww | grep java | grep parrt | awk “{print” tappa -9 “, $ 2;}”> / tmp / killparrt
$ Bash / tmp / killparrt # perspektiivis tulemuseks script
/ Tmp / killparrt faili näeks midagi sellist:

tappa -9 1021
tappa -9 1023
tappa -9 1024
Märkus: sa ei saa seda teha ka ühine ülesanne:

$ Killall java
Pange tähele, et see on linux konkreetsed; ma ütlesin, et see tapab kõik töötlemine UNIXen nagu Solaris!

Kuidas teha histogramm

Histogramm on seatud krahv, väärtus paare näitab, kui tihti väärtus toimub. Põhiline töö oleks sorteerida, siis arvutada, mitu väärtused esinevad järjest ja seejärel vastupidises omamoodi, et väärtus kõrgeima arv on tipus aruande.

$ … | Sorteeri | ainulaadset -c | omamoodi r -n
Pange tähele, et omamoodi kehvasti kogu liini, kuid esimeses veerus on muidugi märkimisväärne sama algustäht kellegi perekonnanimi oluliselt positsioone nende nimega sorteeritud nimekirja.

uniq -c variseb kõik korduvad järjestused väärtusi, kuid prindib esinemiste arv ees väärtus. Meenuta eelmisel sorteerimine:

$ Awk “{print $ 3;}” </home/public/cs601/unix/pageview-20021022.log | \
Sorteeri | \
uniq
/article/index.jsp
/article/index.jsp?page=1
/article/index.jsp?page=10
/article/index.jsp?page=2

Nüüd lisa C kuni uniq:

$ Awk “{print $ 3;}” </home/public/cs601/unix/pageview-20021022.log | \
Sorteeri | \
uniq -c
623 /article/index.jsp
6 /article/index.jsp?page=1
10 /article/index.jsp?page=10
109 /article/index.jsp?page=2

Nüüd kõik, mida pead tegema, on vastupidine omamoodi read vastavalt esimeses veerus numbriliselt.

$ Awk “{print $ 3;}” </home/public/cs601/unix/pageview-20021022.log | \
Sorteeri | \
uniq -c | \
Sorteeri -r -n
6170 /index.jsp
2916 /search/results.jsp
1397 /faq/index.jsp
1018 /forums/index.jsp
884 /faq/home.jsp?topic=Tomcat

Praktikas võiksite saada histogramm, mis on “despidered” ja ainult kkk seotud seisukohti. Võite filtreerida kõik lehekülje vaatamine read seotud ämblik IPd ja filter ainult kkk read:

$ Grep -v -f /tmp/spider.IPs /home/public/cs601/unix/pageview-20021022.log | \
awk “{print $ 3;}” | \
grep “/ KKK | \
Sorteeri | \
uniq -c | \
Sorteeri -r -n
1397 /faq/index.jsp
884 /faq/home.jsp?topic=Tomcat
525 /faq/home.jsp?topic=Struts
501 /faq/home.jsp?topic=JSP
423 /faq/home.jsp?topic=EJB

Kui soovite näha ainult despidered kkk lehekülgi, mis olid viidatud rohkem kui 500 korda, lisada awk käsu lõppu.

$ Grep -v -f /tmp/spider.IPs /home/public/cs601/unix/pageview-20021022.log | \
awk “{print $ 3;}” | \
grep “/ KKK | \
Sorteeri | \
uniq -c | \
Sorteeri r N | \
awk “{if ($ 1> 500) print $ 0;}”
1397 /faq/index.jsp
884 /faq/home.jsp?topic=Tomcat
525 /faq/home.jsp?topic=Struts
501 /faq/home.jsp?topic=JSP
Genereerimine Java klassihierarhia diagrammid

Õpilane küsis, kas ma tean programm, mis loodud klassihierarhia diagrammid. Ma ütlesin “ei”, kuid siis mõistsin, et me ei vaja. Siin on üks liner seda teha:

# Tõmbab välja ülemklassi ja klassi kui $ 5 ja $ 3:
# Avaliku klassi ulatub B …
# Toimib ainult avaliku klasside ja tavaline vormindamine
cat * java | grep “public class” $ 1 | \
awk “BEGIN {print” graaf suva {“;} {print $ 5” -> “$ 3;} END {print”} “}”
See tekitab DOT formaadis graafik faile. Proovi seda. See on hämmastav. Töötab enamikel juhtudel. Output näeb välja selline:

Orienteeritud suva {
antlr.CharScanner-> JavaLexer
antlr.LLkParser-> Mantra
-> TestLexer
}
Luua skripte ja programme

Mulle meeldib automatiseerida nii palju kui võimalik. Mõnikord tähendab see kirjutamise programm, mis tekitab teise programmi või skripti.

Töötlemine mail faile

Ma tahtsin saada jada SQL käsud, mis uuendada meie andmebaasi, kui kellegi e-posti põrkas. Töötlemine mail fail on üsna lihtne, sest saate otsida veakood järgneb e-posti aadress. Põrkas email näeb välja selline:

Siit [email protected] K 9. jaanuar 17:32:33 2002
Tagasi-Path: <>
Vastatud: alates web.jguru.com (web.jguru.com [64.49.216.133])
poolt localhost.localdomain (8.9.3 / 8.9.3) koos ESMTP id RAA18767
jaoks <[email protected]>; K, 9. jaanuar 2002 17:32:32 -0800
Vastatud: alates localhost (localhost)
poolt web.jguru.com (8.11.6 / 8.11.6) nr g0A1W2o02285;
K, 9. jaanuar 2002 17:32:02 -0800
Kuupäev: Kolmapäev, 9. jaanuar 2002 17:32:02 -0800
From: Mail Tarneaeg allsüsteem <[email protected]>
Message-Id: <[email protected]>
To: <[email protected]>
MIME-Version: 1.0
Content-Type: mitmeosaline / aruande; aru-type = tarne-staatus;
piir = “g0A1W2o02285.1010626322 / web.jguru.com”
Teema: Tagastatud mail: vaata ärakirja lähemalt
Auto-Esitatud: Isegenereeritud (ebaõnnestumist)

See on MIME-kapseldatud sõnum

–g0A1W2o02285.1010626322 / web.jguru.com

Algne sõnum saabus K, 9. jaanuar 2002 17:32:02 -0800
alates localhost [127.0.0.1]

—– Järgmised aadressid oli püsiv saatuslik viga —–
<[email protected]>
(põhjus: 550 Host teadmata)

—– Transcript of istungil järgmiselt —–
550 5.1.2 <[email protected]> … Host teadmata (nimi server: intheneck.com: host ei leitud)

Märka SMTP 550 veateade. Otsige et alguses rida siis tapavad noolsulgudes, eemaldada … ja kasutada awk välja trükkida SQL:

# See skript töötab üks e-posti või faili täis teistele kirju
# Sest see lihtsalt tundub SMTP 550 või 554 tulemust ja seejärel
# Teisendab neid SQL käske.
grep-E “^ (550 | 554)” | \
sed ‘s / [<>] // g’ | \
sed ‘s /\.\.\.// “| \
awk “{printf (\” UPDATE ISIK SET põrgatama = 1 Kui e = ‘% s’; \ n \ “, \ $ 3);}” >> bounces.sql
Mul on põgeneda 3 $, sest see tähendab midagi surround bash skripti ja ma tahan awk näha dollari märk.

Luua Getter / kujundajad

#! / bin / bash
# Alates liik ja nimi (pluss firstlettercap versioon),
# Genereerida Java Getter ja setter
#
# Näide: getter.setter String nimi nimi
#

TYPE = 1 $
NAME = 2 $
UPPER_NAME = 3 $

echo “avalik $ TÜÜP saada $ UPPER_NAME () {”
echo “tagasi $ NIMI;”
echo “}”
kaja
echo “tühine hulk $ UPPER_NAME ($ TÜÜP $ NIMI) {”
echo “seda. $ NAME = $ NIMI;”
echo “}”
kaja
Kas ma olen häkkinud?

Ebaõnnestunud sisselogimise: / var / log / messages

viimase, w, uptime

/ etc / passwd muutunud?

kuumuti sadamate

portscans server aruande

imelik töötlemise hogging CPU?

Comments are closed.