Skip to content

Instantly share code, notes, and snippets.

@LIttleAncientForestKami
Last active December 9, 2016 16:39
Show Gist options
  • Save LIttleAncientForestKami/2e802dfe6e0f8526e45102b91893d722 to your computer and use it in GitHub Desktop.
Save LIttleAncientForestKami/2e802dfe6e0f8526e45102b91893d722 to your computer and use it in GitHub Desktop.
Slajdy do prezentacji Oswój Linię Poleceń - 10 jednolinijkowców devopsa

Oswój linię poleceń

==========================================

. Dev + Ops = DevOps. . 10 prostych – acz fajnych – jednolinijkowców

Jeśli słyszeliście, że linia poleceń jest mocna, 
że warto się jej nauczyć, czy inne takie 
pogłoski… 
                to dobrze słyszeliście. 

A jak chcecie zobaczyć, zapraszamy!

Jacek Jagieła        oraz        Tomasz Borek
InfoSys                         Symentis, tu: EPAM

Co tu będzie

==========================================

Byście mogli wstać i sobie pójść, albo świadomie zostać:

. I wybierzmy następny alias (history, |, awk)

. II popraw jedną zmienną w wielu plikach (sed, perl)

. III która to ścieżka była? (systemd)

. IV znajdź i zrób (find, exec)

. V zestresujmy komputer (stress)

. VI zmieńmy coś na setkach serwerów (for, ansible)

. VII jak plotą się gałęzie w Gicie (git log)

. VIII przepatrz JSONa (jq)

. IX wątek Javy co żre procesor (ps, jps, jstack)

. X dlaczego moja siec jest wolna (curl)

I Czego najczęściej używasz?

==========================================

. jak myślisz nad nowym aliasem . albo jak chcesz wiedzieć w czym ostatnio siedzisz

history | awk '{print $2}' | sort | 
uniq -c | sort -n | tail

Po kolei

==========================================

history | awk '{print $2}' | sort | 
uniq -c | sort -n | tail

. historia w kolumnach . 2 kolumna . sortowanie . unikatowe wpisy zliczone . sortowanie po numerach . 10 ostatnich

A teraz Wy

==========================================

history | awk '{print $2}' | sort 
| uniq -c | sort -nr | head

A teraz Wy - z przypominajką

==========================================

history | awk '{print $2}' | sort 
| uniq -c | sort -nr | head

Przypominajka:

history | awk '{print $2}' | sort 
| uniq -c | sort -n | tail

II: popraw jedną zmienną w wielu plikach (sed, perl)

==========================================

grep -Hril '192.168.1.10' 
| xargs sed -i 's/192.168.1.10/10\.42\.0\.11/' 

III: Która to ścieżka była?

==========================================

systemd-path

IV znajdź i zrób (find, exec)

==========================================

find . -name "*.java" -exec vim {} \;

V: zestresujmy komputer (stress)

==========================================

stress -io 4 --cpu 4

Do podglądu przydaje się:

htop

VI: zmieńmy coś na setkach serwerów (for, ansible)

==========================================

for i in samba httpd mysqld; 
do ssh -v 127.0.0.1 "~/service $i status"; done

VII: ładny git log

==========================================

git log --graph --decorate --oneline 
[--reflog] --all

VIII: przepatrz JSONa

==========================================

cat cokolwiek.json | jq

curl https://api.github.com/repos/LIttleAncientForestKami/shiny-octo-doodle/forks | jq -r '.[1]'

IX: wątek Javy co żre procesor

==========================================

. zacznijmy od tego - jakiej Javy? .. ps -ef | grep java

IX: wątek Javy co żre procesor

==========================================

. zacznijmy od tego - jakiej Javy? .. ps -ef | grep java .. pgrep java

IX: wątek Javy co żre procesor

==========================================

. zacznijmy od tego - jakiej Javy? .. ps -ef | grep java .. pgrep java .. jps

Alternatywą: jcmd

IX: wątek Javy co żre procesor

==========================================

. zacznijmy od tego - jakiej Javy? .. ps -ef | grep java .. pgrep java .. jps . mając PID: .. jstack PID .. ps -p PID

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

Po kolei:

ps -m 

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

Po kolei:

ps -mo lwp

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

Po kolei:

ps -mo lwp,c 

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

Po kolei:

ps -mo lwp,c -p $1 

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

Po kolei:

ps -mo lwp,c -p $1 | sort -g

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

Po kolei:

ps -mo lwp,c -p $1 | sort -gk 2

Samym PSem

==========================================

ps -mo lwp,c -p $1 | sort -gk 2 | uniq -f 1

X: moja sieć jest wolna

==========================================

curl 

➜ ~ ySlow.sh bato.to [% 23:05:32] checking bato.to

DNS lookup : 3,512 Connect to server (TCP) : 3,814 Connect to server (HTTP/S) : 0,000 Time from start until transfer began: 3,815 Time for redirection (if any) : 0,000 Total time before transfer started : 4,943

Jak to działa?

==========================================

. -w @plikZFormatemWyjścia - czyli jak wyjście ma wyglądać . -o /dev/null - cokolwiek ściągam, wyrzucam . -s - jak _s_ilent, czyli po cichu . curl -w @[/pełna-ścieżka-tutaj/]netDebug.conf -o /dev/null -s $1

netDebug.conf?

==========================================

Tekst i zmienne curla, wyciągnięte z mana.

\n
  Połączenie TCP / sam DNS: %{time_connect}/%{time_namelookup}\n
  Czas nim transfer się zaczął:  %{time_starttransfer}\n

Stworzony dzięki man curl i /appconnection

Generalnie, przeczytajcie całą sekcję --write-out / -w

Po co curl

==========================================

. autentykacja . weryfikacja, że coś żyje . RESTowe API (GitHub, Elasticsearch...) . ściąganie stron / plików

Podsumowując

==========================================

. Linia poleceń jest fajna . Jest potężna . Jest szybka . Filozofia Unixa - buduj z klocków (|)

A na koniec...

Obrazki z terminala

==========================================

byzanz-recorder -d 20 -o output.gif

Odrobina grafiki

==========================================

notify-send "Na koniec" "Powodzenia" --icon=face-tired

Odrobina reklamy

====================

Jacek Jagieła - pracuje w InfoSys jako konsultant bazo-danowy i devopsowy, głównie Oracle, choć zdecydowanie nie tylko. Ostatnio dużo podróżuje do Holandii, gdzie przejmuje spory system o Oracle oparty https://www.linkedin.com/in/jacek-jagiela-707a4b3a

Tomek Borek - reprezentuje wielu klientów, obecnie największym z nich jest Epam, dla którego Tomek prowadzi Java Academy, program, gdzie młodzi programiści są szkoleni przez pełne trzy miesiące, "by nie byli już młodzi" ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment