Text Stream Management
Strumień tekstu a strumień wyjścia oznacza to samo, Mamy kilka ważnych poleceń o których tutaj krótko opowiem co i jak się je.
cat filename- przekaże plik na wyjście i tym samym wyświetli jego zawartość.head filename- wyświetli nam 10 pierwszych linijek plikuhead -n lines filename- określa n linii zamiast tych 10
tail filename- wyświetli nam 10 ostatnich linijek pliku z tym, żetail -n lines filename- określa n linii zamiast tych 10tail -f filename- zakłada monitor na plik i reaguje jak plik zostaje z aktualizowany, aby przerwać polecenie należy użyć Ctrl + C.
Następne dwa polecenia pozwalają nam na przeglądanie pliku czy też wyjścia, są to komendy less i more. W tego typu edytorach mamy kilka zasad poruszania się, oto one:
<Enter>- powoduje przejście o jedną linie w dół<Spacebar>- powoduje przejście o jedną stronę<q>- wyjście z programumore- nie pozwala na cofanie sięless- wspiera takie przyciski jak strzałki, PgDn, PgUp i posiada możliwość wyszukiwania tak samo jak edytor vi.wc /path/to/file- program podaje statystyki na temat danego plikuwc -l path/to/file- zlicza ilość linii w plikuwc -w path/to/file- zlicza ilość słów w plikuwc -c path/to/file- zlicza ilość znaków w pliku
fmt path/to/file- limit wyjścia na kolumny, domyślnie 75fmt -wnum path/to/file- sami definiujemy limit kolumn na wyjście
expand- zamienia tabulator na 8 spacjiunexpand- zamienia spacje na tabulator ale to polecenie działa tylko na grupie, aby zastosować polecenie na całym pliku należy użyć przełącznikaunexpand -a filenamenl- dodaje numer linii w plikutr- przekształca z jednego zakresu do drugiegocat file | tr A-Z a-z- komenda usuwa duże litery w pliku
Text Filter Commands
cut -d: -f1 /etc/passwd | tee nicks- program działa na kolumnach, przy przełączniku -d; podajemy delimiter dla pliku, dokładnie jak z plikiem csv, gdzie domyślnym delimiter jest ;, zaś dla przełącznika -f1 podajemy numer kolumny, która nas interesuje, a tu wynik komendy:[nonus25@localhost ~]$ tail -n5 nicks gdm sabayon nonus25 vboxadd oprofile
paste -d: nick nick_path | tee user_info- komenda może połączyć pliki, można poprzez znacznik -d: określić delimiter, domyślnie używana jest tabulacja.[nonus25@localhost ~]$ tail -n5 user_info gdm:/var/gdm sabayon:/home/sabayon nonus25:/home/nonus25 vboxadd:/var/run/vboxadd oprofile:/home/oprofile
join num_nick num_nick_path | tee num_user_info- komenda łączy kolumny z tym że plik musi posiadać numer linii i na tej podstawie są one łączone, uprzednio przygotowałem pliki aby można było zastosować do nich tą komendę a tu mamy wynik:[nonus25@localhost ~]$ tail -n5 num_user_info 44 gdm /var/gdm 45 sabayon /home/sabayon 46 nonus25 /home/nonus25 47 vboxadd /var/run/vboxadd 48 oprofile /home/oprofile
split -5 num_nick num_nick_- podzieli plik względem linii które żeśmy podali w przełączniku i utworzy pliki, num_nick_aa, num_nick_ab, poniżej zamieszczam wynik tej komendy:[nonus25@localhost ~]$ ls num_nick_?? num_nick_aa num_nick_ac num_nick_ae num_nick_ag num_nick_ai num_nick_ab num_nick_ad num_nick_af num_nick_ah num_nick_aj [nonus25@localhost ~]$ cat num_nick_ai 41 ricci 42 haldaemon 43 avahi-autoipd 44 gdm 45 sabayon [nonus25@localhost ~]$ cat num_nick_aj 46 nonus25 47 vboxadd 48 oprofilesort num_nick_aj- komenda posortuje plik według pierwszej kolumny[nonus25@localhost ~]$ cat num_nick_ai >> num_nick_aj [nonus25@localhost ~]$ cat num_nick_aj 46 nonus25 47 vboxadd 48 oprofile 41 ricci 42 haldaemon 43 avahi-autoipd 44 gdm 45 sabayon [nonus25@localhost ~]$ sort num_nick_aj | tee 8_users 41 ricci 42 haldaemon 43 avahi-autoipd 44 gdm 45 sabayon 46 nonus25 47 vboxadd 48 oprofilesort -r 8_users- odwraca kolejność sortowania[nonus25@localhost ~]$ sort -r num_nick_aj | tee 8_users_rev 48 oprofile 47 vboxadd 46 nonus25 45 sabayon 44 gdm 43 avahi-autoipd 42 haldaemon 41 ricci
uniq filename- usuwa z pliku takie same liniepr filename- formatuje wyjście do drukowania, używa 56 linii na stronęod filename- konwertuje wyjście do octal (base 8) formatu, przykład pod spodem.[nonus25@localhost ~]$ od num_nick_ai 0000000 020040 020040 030464 071011 061551 064543 020012 020040 0000020 032040 004462 060550 062154 062541 067555 005156 020040 0000040 020040 031464 060411 060566 064550 060455 072165 064557 0000060 062160 020012 020040 032040 004464 062147 005155 020040 0000100 020040 032464 071411 061141 074541 067157 000012 0000115
od -t x filename- konwertuje do hexadecimal (base 16) formatu, przykład pod spodem:[nonus25@localhost ~]$ od -t x num_nick_ai 0000000 20202020 72093134 69636369 2020200a 0000020 09323420 646c6168 6f6d6561 20200a6e 0000040 33342020 61766109 612d6968 696f7475 0000060 200a6470 34202020 64670934 20200a6d 0000100 35342020 62617309 6e6f7961 0000000a 0000115
Text Search Commands
grep word infile- komenda wyszukuje słowa w podanym pliku[nonus25@localhost ~]$ grep nonus25 /etc/passwd nonus25:x:500:500:Augustyn Chmiel:/home/nonus25:/bin/bash
grep -v word infile- poda wszystkie linie w których nie występuje dane słowo[nonus25@localhost ~]$ grep -v -e bash -e bin /etc/passwd news:x:9:13:news:/etc/news:
rpm -qa | grep network- wyświetli nam pakiety zawierające w nazwie network[nonus25@localhost ~]$ rpm -qa | grep network system-config-network-tui-1.3.99.19-2.el5 system-config-network-1.3.99.19-2.el5
grep -l search *- wyszuka plików zawierających dany wzorzec (search)[nonus25@localhost ~]$ sudo grep -l nonus25 /etc/* /etc/group /etc/group- /etc/gshadow /etc/gshadow- /etc/passwd /etc/passwd- /etc/shadow /etc/shadow- /etc/sudoers
grep -L search *- zwraca wszystkie pliki które nie zawierają poszukiwanego wzorca (search)[nonus25@localhost ~]$ sudo grep -L nonus25 /etc/* /etc/a2ps.cfg /etc/a2ps-site.cfg /etc/acpi /etc/adjtime /etc/ais /etc/alchemist ...etc.
grep -i word infile- poszukuje słowa w pliku ignorując wielkość literegrep /bin/*sh /etc/passwd- wyszuka wszystkie możliwości wzorca, komenda ta wykonuje dokładnie to samo co komendagrep -E[nonus25@localhost ~]$ egrep /bin/*sh /etc/passwd /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/passwd:nonus25:x:500:500:Augustyn Chmiel:/home/nonus25:/bin/bash
fgrep nonus25 /etc/*- komenda wyświetli pliki i linie w których występuje zadany wzorzec, komenda działa dokładnie tak samo co komendagrep -F[nonus25@localhost ~]$ sudo fgrep nonus25 /etc/* /etc/group:nonus25:x:500:nonus25 /etc/group-:nonus25:x:500:nonus25,adm /etc/gshadow:nonus25:!!::nonus25 /etc/gshadow-:nonus25:!!::nonus25,adm /etc/passwd:nonus25:x:500:500:Augustyn Chmiel:/home/nonus25:/bin/bash /etc/passwd-:nonus25:x:500:500:Augustyn Chmiel:/home/nonus25:/bin/bash /etc/shadow:nonus25:$1$2sT4zRXm$sKcf4kdHiJ/yyCPlyFgCE0:15364:0:99999:7::: /etc/shadow-:nonus25:$1$2sT4zRXm$sKcf4kdHiJ/yyCPlyFgCE0:15364:0:99999:7::: /etc/sudoers:nonus25 ALL=(ALL) ALL
The Stream Editor
Komendą odpowiedzialną za zamianę jakiegoś ciągu znaków na inny w pliku jest sed -switch 'action/string_in_file/sub_string/flag' filename, komenda posiada taką oto składnię, poniżej zaprezentuje kilka przykładów z wykorzystaniem tej komendy:
[nonus25@localhost ~]$ cat num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
41 ricci
42 haldaemon
43 avahi-autoipd
44 gdm
45 sabayon
[nonus25@localhost ~]$ sed '4d' num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
42 haldaemon
43 avahi-autoipd
44 gdm
45 sabayon
[nonus25@localhost ~]$ sed '4,6d' num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
44 gdm
45 sabayon
Pierwsza komenda usuwa wiersz 4, zaś komenda druga usuwa dwa wiersze 4 i 6. W następnym przykładzie pokaże jak zamienić dane litery w tekście, oto przykład
[nonus25@localhost ~]$ cat num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
41 ricci
42 haldaemon
43 avahi-autoipd
44 gdm
45 sabayon
[nonus25@localhost ~]$ sed 'y/can/_|N/' num_nick_aj
46 NoNus25
47 vbox|dd
48 oprofile
41 ri__i
42 h|ld|emoN
43 |v|hi-|utoipd
44 gdm
45 s|b|yoN
Na koniec zostawiłem przykład z zmianą słów, przełącznik -i powoduje wstawienie zmian do pliku, więc teraz i on:
[nonus25@localhost ~]$ cat num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
41 ricci
42 haldaemon
43 avahi-autoipd
44 gdm
45 sabayon
[nonus25@localhost ~]$ sed 's/ricci/NONUS25/' num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
41 NONUS25
42 haldaemon
43 avahi-autoipd
44 gdm
45 sabayon
[nonus25@localhost ~]$ sed -i 's/ricci/NONUS25/' num_nick_aj
[nonus25@localhost ~]$ cat num_nick_aj
46 nonus25
47 vboxadd
48 oprofile
41 NONUS25
42 haldaemon
43 avahi-autoipd
44 gdm
45 sabayon
The Basics of the vi Editor
Edytor ten nie jest moim ulubionym edytorem ale na potrzeby egzaminu muszę się z nim zapoznać więc z stąd małe notatki i o tym edytorze. Na początek kilka wskazówek jak się poruszać w tym edytorze.
- W edytorze działają strzałki jaki i klawisze stron PgUp
- h, j, k, l - odpowiednio (lewo, dół, góra, prawo)
- G - przenosi na sam koniec dokumentu
- gg - przenosi na samą gorę dokumentu
Teraz kilka ważniejszych komend dla edytora vi:
- dd - usuwa dany wiersz
- u - cofa dokonaną zmianę
- dw - usuwa dany wyraz
- yy - pobiera linie do buffer'a, 2yy - analogicznie pobiera 2 linie do buffer'a
- p - wstaw to co znajduje się w buffer'rze
- cc - usuwa wiersz i wprowadza nas w stan insert, znaczy że możemy sami wpisać coś, wychodzimy z insert'a naciskając klawisz <Esc>
- cw - usuwa wyraz i wprowadza nas w stan insert
- i - insert mode tam gdzie znajduje się kursor
- Esc - powracamy do stanu komend
- a - insert mode przed kursorem
- A - insert mode na końcu linii
- o - otwiera następną linię
- O - otwiera poprzednią linię
- :!shellcommend - wykonuje komendę, będąc dalej w edytorze
- :w - zapisz do pliku
- :w newfile - zapisz do nowego pliku "newfile"
- :q - wyjdź z edytora bez zapisywania zmian
- :wq - zapisz zmiany i wyjdź
Monitor Your Processes
Zapoznamy się tutaj z takimi programami jak ps, top, uptime, free
ps- pokazuje listę procesów w aktualnym shell'u[nonus25@localhost ~]$ ps PID TTY TIME CMD 2316 pts/0 00:00:00 ps 4561 pts/0 00:00:06 bash 16511 pts/0 00:00:02 yum 16513 pts/0 00:00:00 yum
ps a- wyświetla listę wszystkich uruchomionych shell'ów[nonus25@localhost ~]$ ps a PID TTY STAT TIME COMMAND 2342 pts/0 R+ 0:00 ps a 3207 tty1 Ss+ 0:00 /sbin/mingetty tty1 3208 tty2 Ss+ 0:00 /sbin/mingetty tty2 3209 tty3 Ss+ 0:00 /sbin/mingetty tty3 3212 tty4 Ss+ 0:00 /sbin/mingetty tty4 3213 tty5 Ss+ 0:00 /sbin/mingetty tty5 3216 tty6 Ss+ 0:00 /sbin/mingetty tty6 3256 tty7 Ss+ 51:16 /usr/bin/Xorg :0 -br -audit 0 -auth /var/gdm/:0.Xauth 4561 pts/0 Ss 0:06 bash 16511 pts/0 T 0:02 /usr/bin/python /usr/bin/yum info passwd 16513 pts/0 T 0:00 /usr/bin/python /usr/bin/yum check-update
ps -u username- wyświetla procesy należące do użytkownika[nonus25@localhost ~]$ ps -u nonus25 PID TTY TIME CMD 2338 pts/0 00:00:00 ps 3271 ? 00:00:00 gnome-session 3301 ? 00:00:01 VBoxClient 3309 ? 00:00:00 VBoxClient 3313 ? 00:00:00 VBoxClient 3335 ? 00:00:17 ssh-agent ... etc.
ps aux- listuje wszystkie uruchomione procesy[nonus25@localhost ~]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 2160 636 ? Ss Feb11 0:35 init [5] root 2 0.0 0.0 0 0 ? S< Feb11 0:00 [migration/0] root 3 0.0 0.0 0 0 ? SN Feb11 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0 ? S< Feb11 0:00 [watchdog/0] root 5 0.0 0.0 0 0 ? S< Feb11 1:45 [events/0] ... etc.
ps -C command- listuje nam procesy dla danej komendy[nonus25@localhost ~]$ ps -C bash PID TTY TIME CMD 4561 pts/0 00:00:06 bash
pstree- listuje procesy jako drzewo hierarchii[nonus25@localhost ~]$ pstree init─┬─/usr/bin/sealer ├─3*[VBoxClient───{VBoxClient}] ├─VBoxService───6*[{VBoxService}] ├─acpid ├─at-spi-registry ├─atd ├─auditd─┬─audispd───{audispd} │ └─{auditd} └──┬─ ... └─ etc.
top- podaje listę procesówtop - 17:20:14 up 1 day, 15:23, 2 users, load average: 0.60, 0.61, 0.56 Tasks: 147 total, 3 running, 142 sleeping, 2 stopped, 0 zombie Cpu(s): 4.2%us, 25.0%sy, 0.0%ni, 65.1%id, 0.0%wa, 3.5%hi, 2.2%si, 0.0%st Mem: 514900k total, 480068k used, 34832k free, 67372k buffers Swap: 1048568k total, 112k used, 1048456k free, 192204k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4558 nonus25 15 0 66348 18m 10m R 12.4 3.6 6:22.53 gnome-terminal 3256 root 15 0 44692 11m 7132 S 9.6 2.2 51:36.07 Xorg 3374 nonus25 15 0 18068 9376 3332 S 3.8 1.8 29:11.95 at-spi-registry ... etc.
- uporządkowane poprzez użycie CPU & RAM
- zawiera również informacje o swap
uptime- zawiera Informacje o stanie maszyny[nonus25@localhost ~]$ uptime 17:21:17 up 1 day, 15:24, 2 users, load average: 0.61, 0.61, 0.55
- aktualny czas działania maszyny, ilość użytkowników, średnie obciążenie
free- pokazuje info o pamięci:[nonus25@localhost ~]$ free total used free shared buffers cached Mem: 514900 482396 32504 0 67592 193520 -/+ buffers/cache: 221284 293616 Swap: 1048568 112 1048456- pojemność pamięci, wykorzystanie pamięci RAM, przestrzeń wymiany (swap)
Different Job Priorities
Komendy, które tutaj przedstawię będą potrzebowały PID, numer ten można uzyskać przy pomocy wcześniej omówionych komend takich jak ps, lub top
kill PID- komenda wysyła sygnał aby zabić proces- domyślnie proces jest zabijany sygnałem 15, który zakańcza dany proces w sposób czysty
kill -1 PIDwysyła sygnał 1, który jest odpowiedzialny za restart procesu.kill -9 PIDzabija proces siłowo, w sposób nie czysty.killall command- zabija wszystkie procesy powiązane z tą komendą.
Można również zmieniać priorytet danemu procesowi w tym celu służą komendy nice, renice. Nawyższy stopień priorytetu to -20, zaś najniższy to 19
Aby wystartować nowy proces z priorytetem -10 używamy komendy nice --10 newproccess lub komendy nice -n -10 newproccess. Obie komendy działają tak samo. Aby zmienić priorytet danemu procesowi używa się komendy renice -13 PID. Jeżeli chcemy uruchomić proces w tle używa się do tego znaku & na końcu linii. Np. gedit &, w ten sposób nie blokujemy sobie terminala. Aby wy listować procesy działające w tle należy użyć komendy jobs, a poniżej przykład z zastosowaniem tych oto komend, komenda jobs -p podaje listę PID
[nonus25@localhost ~]$ top & [3] 2453 [nonus25@localhost ~]$ sleep 11111 & [4] 2454 [3]+ Stopped top [nonus25@localhost ~]$ jobs -p && jobs 16511 16513 2453 2454 [1] Stopped yum info passwd [2]- Stopped yum check-update [3]+ Stopped top [4] Running sleep 11111 &
Aby przywrócić komendę do wątku głównego należy użyć komendy fg [num], aby z powrotem odesłać komendę w tło należy zawiesić komendę naciskając <Ctrl + Z>, a następnie typując komendę bg. Ostatnią komendą o jakiej tutaj wspomnę będzie komenda która pozwala na wykonywanie zadania po wylogowaniu się z systemu. Np. jeśli wykonuje się jakieś zadanie, które zazwyczaj trwa za długo aby czekać aż się zakończy, a akurat musimy wyjść z pracy/domu. Taką komendę powiniśmy uruchomić w ten oto sposób: nohub path/to/script. Komenda ta zachowa wykonywanie naszej komendy po wylogowaniu sie z systemu.

Brak komentarzy:
Prześlij komentarz