nformacje o procesach czyli polecenie ps Konsola xterm tty tty Konsola xterm ash ps t tty o pidppidcmd sleep D D D ash ash 2 sleep sleep pid=2 ppid= ps t tty o pidppidcmd ash ash które procesy pid= pid= ppid=
3 2 / 2 / 2 / / olecenie ps cd ps u mhanckow o pidppidttystateuser ps t tty o pidppidcmd które procesy -o pid ppid user ruser uid ruid tname state pgid pcpu nazwa D D SER RSER D RD TT S GD opis rocess Dentifier arent rocess D D procesu macierzystego 5 ser D Real user D real =rzeczywisty lik specjalny terminala tzw Stan procesu: R=Run S=Sleep T D grupy procesów /etc/passwd - procesu
7 = H R T ` ` 5 ] \ D H R T D E = F E 8 \JQDá\Znix-ie procesu 5 23 / - trl na np 7 trl 8 przez system operacyjny np przez inny proces np komenda kill : trl 8 8 > 2 SGT S H H QR O K HJ O K J GH 8 8 > S H H Q R O K powoduje _ - a lu ^_ 8 > SGK 8 8 F[Z ZZ trlz SGTST D powoduje zatrzymanie procesu tzw mechanizm sterowania pracami
H E H F E a = ` _ = p m d 3 87 H G O v u E O t JT J J J Q { H O y H J c [ / / c ~ }}}} ~~~~ \ / / [ c Œ Š d [ Z \JQDá\FG man 7 signal pid_procesu polecenie kill kill - kill - 23 kill kill 23 > = 3 7 : 8 7 3 5 23 / - O T Q HRS GE JQ OG G J KJ FG D lk j hgi fg ez cd ] 7^ \ / [ /Z n n / oz n [ /Z / - e Z cd 85 aq \ / [ /Z H F G vxw JQ J O D D G Q O G hr sg s fg G HR GE JQ O G E G J FG { R F { J D z R o n / d Z \ n ƒd Z ~~~ n / n ˆ c / o e Z cd c Z ˆ ƒd Z ƒ k ƒd Z / cat >pliktxt
/ -- / 8 2 7 = Deskryptory plików deskryptor cykl przetwarzania pliku: desk=openpliktxt // otwarcie pliku = przygotowanie pliku do przetwarzania // desk // open read write close to funkcje systemowe nixa readdesk zm writedesk zm desk closedesk desk 3 2 -- deskryptory standardowe: 5 stdin 52 5 stdout stderr stand desk 2 czyli z plikiem typu /dev/tty lu /dev/tty > = : = = stdout odp: pisze do desk =
D K 7F / F 7 7 / rzeadresowanie przeadresowanie to zmiana znaczenia deskryptorów 2 cat pliktxt >plik2txt - 7 D > J =GH 7 8 E7 D > => : 78 5 23 7D 2 > 7 8 R O Q 5 Q > => 5 7 7 D F 2 O 2 > > FS H 7D 2 >
roces macierzysty i potomny sys fork w nix-ie nowy proces nazywamy procesem potomnym a stary proces nazywamy procesem macierzystym ego dziedziczy po nim wiele rzeczy np kod programu i otwarte pliki wykonywany przez proces macierzysty funkcja sys exec macierzystym sleep to ash-u sleep ash pid procesu macierzystego pid= ppid= proces potomny pid= proces macierzysty
roces macierzysty i potomny cd na czym polega uruchamianie programu w nix-ie z ash-a uruchamiamy program sleep ash pid= ppid= ash fork execsleep pid= proces macierzysty 2 sleep pid= ppid= kod procesu potomnego proces potomny ash sleep pid= pid= ppid=
roces macierzysty i potomny cd co proces potomny dziedziczy po macierzystym: fork exec otwarte pliki kod programu execkod_programu ignorowanie standardowa reakcja przechwytywanie
5 8 rocesy pierwszo- i drugo- planowe proces pierwszoplanowy - czeka sleep 2 7 32 / - : : : 5/ 2 proces drugoplanowy - nie czeka sleep pid= ppid= proces drugoplanowy sleep sleep sleep 2 sleep 3 pid=2 ppid= proces drugoplanowy sleep 2 ash pid= pid=3 ppid= proces pierwszoplanowy sleep 3
8 8 2 8 2 FFF EEEE DD rocesy pierwszo- i drugo- planowe cd pid= ppid= proces drugoplanowy sleep sleep sleep 2 sleep 3 pid=2 ppid= proces drugoplanowy sleep 2 ash pid= pid=3 ppid= proces pierwszoplanowy sleep 3 7 5 23 / - - :=> 7 8 : 2 K J 3 J3 8 2 3 H G F D D > >> H
/ / - = = G E G E D 3RRáiF]D potok cat cat cat cze nienazwane tty -: :: 8 7 5 / 23 - cat cat ash d_wy d_we > > = F = F proces macierzysty HJ K HJ K readd_wy writed_we cat tty procesy potomne
/ > > = 8 ] Q Q \ K O [ Q O Z K TSR E H KZ Z R ^ KZ Z R ^ ^ O [ O KF ^ F F K O d ^ G Z O x v }r x v u r t t 3RRáiF]DFG nix-owych potoki DOSdowód cat cat cat 5 32 - D : 87 ego a K Q GQ O F KJ GH FE ] H O a O Z [ F FZ [ O Q Q ` _ F Q F FO ] H O s nie Q ` _ F Q F FO ] H O Q J OZ GH FZ Q K c F ] H O R J Q O Q nym [ ` F F GQ Q Q F e J Q K F ] H O EOZ FZ dr O GQ Z E R Z h G F g GQ a _ F f O procesie to funkcja readd_wy c ]ji Z ii e O g Q d QO Q Q d FZ podona zasada przy zapisie SGE d_wy d_we kmt qsr npo kml kmt qsr npo kml t lr w o t lr w o ymz o{ ymz o{ readd_wy writed_we
3-55 RRRR QQQQ > > > > OOOO >>>> FFFF > > > > OOOO FFFF KKK EEE GGG 7777 > > > > > > > > = = = = 7777 777 [ _ ` a S \ e ] a e ] ^ \ e \ c a ^ j [ he [ Ze e l ] d [ _ f _ q e ] e h T Sc _ ] Z [ _ ]T 3RRáiF]DFG cat cat cat 5 2 / 3 2 / - OOOO DDDD >>>> GGGG K 8 88J EFFF FHG D :::: 8888 87 stdout gdy `a ^ ]T \ \] [H\ Z S ST potrzene fakty: program cat czyta z stdin S Z ^ T Z _ d ]T \ Sc SZ \ a [ \ S g Z k \ ct S ai [ Zh j Z Z S ai [ Zh [ Z a Sg Sf ] a trld ` _ ]T d \ S g _ l [ h Sc nym e [ \ Z S Z a \ \ l nz [ h ]T `m T_ i ]T Sc f Z _ i S Z g k \ opt ] procesie to funkcja readd_wy t `sr _ rr ]T d \ S g Sc [ Z S a T SZ a aze cs tty tty 2 cat cat cat
3 8 _ h e fff i \S\SRZáRRZH nixie: omówimy ash t sh csh ksh uruchamianie programów przy pomocy komend T [ash] txt 2 - - -/ K5 HG J F HG F =:D E > 8 7 E > =:D 5 =:> 8: 7 5 S QR Q K5 HO F H F 5 5 F ` a \ ` ]^ ls grep = ls grep txt pod nix-em [:\ Z T: wykonywanie skryptów c cd i d gf if while c c f lk i j e i m j k
3 5 3 8 - FO T S JK FE D _ J FE O F^ QJ D \S\SRZáRRZHFG Tworzenie i uruchamianie skryptów metoda uniwersalna tworzymy plik ze skryptem np skrypt /in/ksh -/ echo to ja Twój skrypt = : - 7 2 i= while [[ i -le 5 ]] do echo >>>i i=i done 3 5 5 3> 2 QS RQ O K H GF chmod ux skrypt Q O GK F HF ] T F J \F [ Z Z K F skrypt
RQFH ]\D\SRZHJRksh 2SRQFSRZáR oraz programu awk patrz: http://main2amuedupl/~mhanckow SO2 üzf]hqd Temat
3]\áDG]DRRZDQDSRZáRksh i programu awk echo ps awk ksh Dy Dzie podanym przez parametr: /in/ksh for p in ps o pidppid awk ==\2 {print \} do echo p pochodzi od done ==\2 {print \} \2 -