Practically Useful UNIX Security Administration

±èÈÖ°­ (Sakai Kim) sakai@major.kaist.ac.kr

¡¡

Contents

À̹ø È£¿¡¼­´Â Áö³­ È£¿¡ À̾î General Security Administration Áß System Security ¿¡ ´ëÇØ ´Ù·ç°Ú´Ù.

À̹ø È£¿¡¼­ ÁßÁ¡ÀûÀ¸·Î ´Ù·ê ³»¿ëÀº Process ¸¦ °ü¸®ÇÏ°í ÀÌ»óÇÑ ÇÁ·Î¼¼½º¸¦ ã¾Æ³»¾î Á¶»çÇÏ´Â ¹æ¹ý, ±×¸®°í security ¿¡ ÀÖ¾î tracing À» ÇÒ ¶§ Àý´ëÀûÀ¸·Î ¿ä±¸µÇ´Â Áß¿äÇÑ ·Î±×È­ÀÏ ¿¡´Â ¾î¶² °ÍÀÌ ÀÖ´ÂÁö¸¦ »ìÆ캸°í ÀÌ ·Î±× ÆÄÀÏÀ» ¾î¶² ½ÄÀ¸·Î ºÐ¼®ÇØ¾ß ÇÏ´ÂÁö¿¡ ´ëÇؼ­ »ìÆ캸µµ·Ï ÇÏ°Ú´Ù.

I. General System Administration

1. Process Management & Monitoring

1) Process Management À̶õ? Process Monitoring À̶õ?

UNIX ½Ã½ºÅÛÀº ¸ÖƼÀ¯Àú ü°èÀ̱⠶§¹®¿¡ System ÀÇ Resource ¸¦ ¼­·Î °øÀ¯Çϸ鼭 »ç¿ëÇÏ°í ÀÖ´Ù. ±×·¸±â ¶§¹®¿¡ ½Ã½ºÅÛÀÇ ºÎÇÏ·®À» ¸¹ÀÌ Àâ¾Æ¸Ô´Â ÇÁ·Î¼¼½º°¡ ´Ù¸¥ À¯Àú¿¡ ÀÇÇØ ÀÛµ¿µÇ°í ÀÖÀ» °æ¿ì ´Ù¸¥ À¯ÀúµéÀº ±×¸¸Å­ ½Ã½ºÅÛÀÇ ¸®¼Ò½º¸¦ »ç¿ëÇÏÁö ¸øÇÏ°Ô µÇ¾î Áß¿äÇÑ ÀÛ¾÷ÀÌ ÀÖ´Â °æ¿ì¿¡ ÇÇÇظ¦ º¼ ¼ö µµ ÀÖ´Ù.

ÈçÈ÷ No More Process ³ª all network port in use µûÀ§ÀÇ ¸Þ½ÃÁö¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Áß¿äÇÑ ÀÏÀÌ ÀÖÀ» ¶§¿¡ ÀÌ·¯ÇÑ ¸Þ½ÃÁö¸¦ º¸°Ô µÇ¸é Â¥ÁõÀÌ ³ª°Ô µÇ°í, ´Ù¸¥ »ç¿ëÀÚµé Áß¿¡ ¾µµ¥ ¾ø´Â ÇÁ·Î¼¼½º¸¦ ±¸µ¿ ½ÃÅ°°í ÀÖ´Ù¸é ÇÁ·Î¼¼½º¸¦ kill ÇØÁֱ⸦ ¹Ù¶ö °ÍÀÌ´Ù.

Process Management ¶õ, ÇÁ·Î¼¼½º¿¡ priority ¸¦ ÇÒ´çÇÏ¿© Áß¿äÇÑ ÀÛ¾÷ÀÌ ¸ÕÀú ¼öÇàµÇµµ·Ï ÇѴٵ簡, ½Ã½ºÅÛ ºÎÇϸ¦ ¸¹ÀÌ Àâ´Â ÇÁ·Î¼¼½º¸¦ ÇÁ·Î¼¼½ºÀÇ ¼ÒÀ¯ÁÖ¿¡°Ô ¾çÇظ¦ ±¸ÇØ kill ÇѴٵ簡, Zombie °¡ µÈ ÇÁ·Î¼¼½º°¡ ²÷ÀÓ¾øÀÌ CPU Time À» Àâ°í ÀÖÀ» ¶§ ó¸®ÇØ ÁÖ´Â °ÍÀ̳ª »ç¿ëÀÚ°¡ µ¹¹ßÀûÀÎ »çÅ·Πprocess ¸¦ ¸¹ÀÌ ¶ç¿ö ³õÀº »óÅ¿¡¼­ logout µÇ¾úÀ» ¶§, Idling »óÅ·ΠÀÖ´Â ÇÁ·Î¼¼½ºµé Áß CPU Time À» ¸¹ÀÌ Àâ°í ÀÖ´Â ÇÁ·Î¼¼½ºµéÀ» ó¸®ÇØ ÁÖ´Â Administration À» ¸»ÇÑ´Ù.

Process Monitoring Àº Process Management ÀÇ ÀϺο¡ ¼ÓÇÏ´Â ÀÏÀε¥, ¼º°ÝÀÌ ¾à°£ ´Ù¸£´Ù. ÀÌ»óÇÑ ÇÁ·Î¼¼½º( ¿¹¸¦ µé¾î OS ¿¡¼­ Á¦°øÇÏÁö ¾Ê´Â ¸í·É¾îÀÇ À̸§À¸·Î ½Ã½ºÅÛ¿¡ ÇÇÇظ¦ ÁÖ´Â ÀÛ¾÷À» ÇÏ´Â °æ¿ì, ½Ã½ºÅÛ ÇØÅ·°ú °ü·ÃµÈ ÇÁ·Î¼¼½º) µéÀ» °¨ÁöÇØ ³»¾î À̸¦ ó¸®ÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù.

´ÙÀ½Àº °ü¸®ÀÚ°¡ ½Ã½ºÅÛÀ» »ç¿ëµµÁß °©ÀÚ±â xload ÀÇ ±×·¡ÇÁ°¡ Ä¡¼ÚÀ¸¸ç ½Ã½ºÅÛÀÌ ÇöÀúÇÏ°Ô ´À·ÁÁö´Â °ÍÀ» ¹ß°ßÇÏ°í 󸮸¦ ÇÏ´Â °úÁ¤À» ´ãÀº ¿¹ÀÌ´Ù.

# uptime
2:17pm up 12 days, 21:25, 5 users, load average: 4.03 , 0.39, 0.21
# w
2:18pm up 12 days, 21:27, 5 user, load average: 4.04 , 0.32, 0.21
User tty login@ idle JCPU PCPU what
exit ttyp8 2:14pm -csh
sakai ttyp9 1:20pm -csh
....
# top
System: miso Tue Mar 25 14:20:06 1997
Load averages: 4.04, 0.37, 0.23
84 processes: 83 sleeping, 1 waiting
Cpu states:
CPU LOAD USER NICE SYS IDLE UNK5 UNK6 INTR SSYS
1 4.04 111.5% 0.0% -0.1% -11.4% -0.0% -0.0% -0.0% -0.0%
Memory: 14172K (2144K) real, 18596K (2612K) virtual, 3696K free Screen # 1/6
CCU TTY PID USERNAME PRI NI SIZE RESD STATE TIME %WCPU %CPU COMMAND
0 ? 14490 sakai 154 20 2008K 600K wait 0:00 10.20 9.90 a.out
0 ? 14459 sakai 154 20 1004K 552K sleep 0:41 7.15 7.13 hanterm
0 p3 14488 sakai 156 20 292K 296K sleep 0:23 2.23 2.22 screen
0 p6 14862 sakai 178 20 204K 232K wait 0:00 0.73 0.55 top
0 ? 3 root 128 20 0K 0K sleep 0:00 0.02 0.02 statdaem
0 ? 2 root 128 20 0K 0K sleep 0:00 0.02 0.02 vhand
0 ? 1 root 168 20 44K 36K sleep 0:02 0.02 0.02 init

½Ã½ºÅÛÀÇ ·Îµå ¼öÄ¡°¡ »ó´çÈ÷ Å­À» ´À³¢°í, w , top À» ÀÌ¿ëÇÏ¿© ÇöÀç ½Ã½ºÅÛ¿¡ ¾î¶°ÇÑ ÇÁ·Î¼¼½º°¡ µ¹°í ÀÖ´ÂÁö¸¦ »ìÆì º¸¾Ò´õ´Ï sakai ¶õ »ç¿ëÀÚ°¡ ½ÇÇà½ÃÅ°°í ÀÖ´Â a.out À̶õ ÇÁ·Î±×·¥¿¡ ¹®Á¦°¡ ÀÖÀ½À» ¹ß°ßÇß´Ù.

±×·¡¼­ ¾çÇظ¦ ±¸ÇÑ´ÙÀ½ ÀÌ ÇÁ·Î¼¼½º¸¦ kill Çϱâ·Î Çß´Ù.

# talk sakai

[Connection established...]

U r running an odd process now, your programming a.out is using most of system'

s resources, It can do harm another users.

so Could I kill your process a.out now?

-What's Up? root?

Oh, I got it ,

Don't mention it. You can kill my process.

Sorry for doing harm to system....

# kill -15 14490
# uptime
2:17pm up 12 days, 21:25, 5 users, load average: 1.03 , 0.39, 0.21

¾î¶² °ü¸®ÀÚ°¡ ÀÚ½ÅÀÌ °ü¸®ÇÏ´Â ½Ã½ºÅÛ¿¡¼­ ÆÐŶ·Î½º°¡ ½ÉÇÏ°Ô ÀϾÀ» ¹ß°ßÇÏ°í ´©±º°¡ ÀÚ½ÅÀÇ ½Ã½ºÅÛ ³»ºÎ¿¡¼­ /dev/le0 µîÀ» ¸ð´ÏÅ͸µ Çϰųª ½º´ÏÇÎ ÇÏÁö´Â ¾Ê´ÂÁö ÀǽÉÇÏ°Ô µÇ¾ú´Ù. (Âü°í·Î ½º´ÏÇÎÀ» ÇÏ°í ÀÖ´Â µ¿¾È¿¡ ¸¹Àº ÆÐŶ·Î½º°¡ ÀϾ ¼ö ÀÖ´Ù.)

% ping -s localhost
PING localhost: 56 data bytes
64 bytes from localhost (127.0.0.1): icmp_seq=0. time=3. ms
64 bytes from localhost (127.0.0.1): icmp_seq=1. time=2. ms
64 bytes from localhost (127.0.0.1): icmp_seq=2. time=1. ms
64 bytes from localhost (127.0.0.1): icmp_seq=3. time=2. ms
64 bytes from localhost (127.0.0.1): icmp_seq=4. time=4. ms
64 bytes from localhost (127.0.0.1): icmp_seq=5. time=2. ms
64 bytes from localhost (127.0.0.1): icmp_seq=6. time=1. ms
64 bytes from localhost (127.0.0.1): icmp_seq=7. time=3. ms
......
64 bytes from localhost (127.0.0.1): icmp_seq=34. time=1. ms
----arirang.kaist.ac.kr PING Statistics----
34 packets transmitted, 22 packets received, 35% packet loss
round-trip (ms) min/avg/max = 1/2/3
% ifconfig -a
lo0: flags=849 mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863 mtu 1500
inet 203.251.173.1 netmask ffffff00 broadcast 143.248.8.255

sniffer´Â Promiscuous mode¿¡¼­ µ¿ÀÛ ÇÏ´Â °ÍÀÓÀ» ¿ì¸®´Â Àü¹ø È£¿¡¼­ »ìÆ캻 ¹Ù ÀÖ´Ù. ÀÌÁ¦ ifconfig ¸¦ ÅëÇØ sniffer °¡ µ¹°í ÀÖÀ½À» ¹ß°ßÇßÀ¸´Ï ÀÌÁ¦´Â ±× ÇÁ·Î¼¼½º¸¦ ã¾Æ³»¾î kill À» ÇØ¾ß ÇÑ´Ù.

±×¸®°í root ÀÇ ±ÇÇÑÀ¸·Î µ¹°í ÀÖ´Â ÇÁ·Î¼¼½ºµéÀÌ ÁÖ·Î À§ÇèÇÑ °æ¿ì°¡ ¸¹À¸¹Ç·Î ¿ì¼±ÀûÀ¸·Î ´ÙÀ½°ú °°Àº ¸í·ÉÀ» »ç¿ëÇÏ¿© Á¢±ÙÀ» Çϵµ·Ï ÇÑ´Ù.

# ps -ef | grep root

¸¦ ÅëÇØ ÀÌ»óÇÑ ÇÁ·Î¼¼½º¸¦ ¹ß°ßÇØ ³»µµ·Ï ÇÑ´Ù. ¹°·Ð ¾î¶°ÇÑ ÇÁ·Î¼¼½º°¡ ÇØÄ¿°¡ ÀÛµ¿½ÃÅ°°í ³ª°£ ÇÁ·Î¼¼½ºÀÎÁö´Â ½ÅÁßÀ» ±âÇØ »ìÆ캸¾Æ¾ß ÇÒ °ÍÀÌ´Ù. ÇØÄ¿°¡ ¸¸ÀÏ sniff ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ°í ³ª°¬´Ù¸é sniff ¶õ À̸§À¸·Î ¼³Ä¡ÇßÀ» ¸® ¸¸¹«Çϱ⠶§¹®ÀÌ´Ù. ½Ã½ºÅÛ ³»¿¡¼­ ÈçÈ÷ µ¹°í ÀÖ´Â in.telnetd ³ª in.uucpd µîÀÇ À̸§À¸·Î ¹Ù²Ù¾î ÀÛµ¿½ÃÅ°´Â °æ¿ì°¡ ÈçÈ÷ ÀÖ´Ù.

2) º»°ÝÀûÀÎ Process management & monitoring

¿ì¼± ÇÁ·Î¼¼½º¸¦ »ìÆ캸´Â ÇÁ·Î±×·¥¿¡´Â ´Ùµé ¾Ë°í ÀÖµíÀÌ /bin/ps °¡ ÀÖ´Ù. ±×·±µ¥ ¿©·¯ Á¾·ùÀÇ ´Ù¸¥ OS ¸¦ »ç¿ëÇØ º» »ç¶÷Àº ´À³¢°ÚÁö¸¸, OS ¸¶´Ù ¿É¼ÇÀÌ Á¶±Ý¾¿ ´Þ¶ó¼­ ¿øÇÏ´Â °á°ú¸¦ ¾òÁö ¸øÇÏ´Â °æ¿ì°¡ ÀÖ¾úÀ» °ÍÀÌ´Ù. ÀÚ ÀÌÁ¦ OS ¸¶´ÙÀÇ ps ¿É¼ÇµéÀ» »ìÆ캸ÀÚ.

ps ÀÇ ¿É¼ÇÀº Å©°Ô µÎ °¡Áö Á¾·ù·Î ³ª´­ ¼ö°¡ ÀÖ´Ù. BSD °è¿­ÀÇ ½Ã½ºÅÛÀÇ ps¿Í System V °è¿­ÀÇ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÏ´Â ps ÀÌ´Ù.

¸ÕÀú BSD °è¿­À» »ìÆ캸ÀÚ. ÇØ´çµÇ´Â OS ¿¡´Â SunOS °¡ ´ëÇ¥ÀûÀÎ ¿¹À̳ª AIX, SunOS , Linux , Digital UNIX , Solaris ¿¡ ÀÖ´Â /usr/ucb/ps µµ BSD ÀÇ ps ÀÌ´Ù.

ÀÌ °è¿­ÀÇ ps ¿¡¼­ ÁÖ·Î »ç¿ëµÇ´Â ¿É¼Ç¿¡´Â ´ÙÀ½°ú °°Àº °ÍÀÌ ÀÖ´Ù.

-ax : ½Ã½ºÅÛÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀ» µð½ºÇ÷¹ÀÌ ½ÃŲ´Ù.

% ps -ax
PID TT S TIME COMMAND
0 ? T 0:00 sched
1 ? S 2:04 /etc/init -
2 ? S 0:12 pageout
3 ? S 85:46 fsflush
137 ? S 3:18 /sbin/gated
146 ? S 0:05 /usr/sbin/rpcbind
148 ? S 0:00 /usr/sbin/keyserv
154 ? S 0:00 /usr/sbin/kerbd
164 ? S 0:29 /usr/sbin/inetd -s
167 ? S 0:00 /usr/lib/nfs/statd
169 ? S 0:04 /usr/lib/nfs/lockd
191 ? S 0:01 /usr/lib/autofs/automountd
..........

-c : ½ÇÁ¦ÀÇ ¸í·É¾î À̸§À» Ç¥½ÃÇÑ´Ù.

% ps -c
PID TT S TIME COMMAND
25359 pts/40 S 0:00 tcsh
25460 pts/40 O 0:00 ps

-e : ¸í·É¾î°¡ ¼öÇàµÉ ¶§ ¾²ÀΠȯ°æ º¯¼ö¿Í , ¸í·É¾î¸¦ °°ÀÌ Ç¥½ÃÇØ ÁØ´Ù.

% ps -e
PID TT S TIME COMMAND
25359 pts/40 S 0:00 -tcsh TZ=ROK TERM=vt100 PATH=/usr/bin: HOME=/cosmos/use
25469 pts/40 O 0:00 ps -e TZ=ROK TERM=vt100 PATH=.:/cosmos/user/sakai:/usr/

-w : ´Ù¸¥ ÇÁ·Î¼¼½º ¿É¼Ç µÚ¿¡ ºÙ¿©¼­ Wide Æ÷¸ËÀ¸·Î µð½ºÇ÷¹ÀÌ ½ÃŲ´Ù.

% ps -axw
......
260 ? S 6:56 nmbd
269 ? S 0:57 /usr/local/etc/arns -i le0 -2 -z kaistCompSci -l /usr/lo
272 ? S 0:00 /bin/sh /usr/local/squid/bin/RunCache
276 ? S 82:25 squid -s
......

-ww : ¸í·É¾î°¡ ÇÑ line À» ³Ñ¾î°¡°Ô µÇ¸é ps ÀÇ -w ¿É¼ÇÀ¸·Î »ìÆ캸¾Æµµ Ç¥½ÃÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ÀÖ´Ù. (½Ã½ºÅÛ¿¡ µû¶ó ´Ù¸£´Ù. ¾î¶°ÇÑ ½Ã½ºÅÛÀº w ¸¸ »ç¿ëÇÏ¿©µµ ww ¿Í °°Àº È¿°ú¸¦ ³ªÅ¸³½´Ù.) ÀÌ ¶§ ww ¸¦ Áßø½ÃÄѼ­ »ç¿ëÇϸé Ä¿¸Çµå ÀüºÎ¸¦ »ìÆ캼 ¼ö ÀÖ´Ù.

% ps -axww
......
260 ? S 6:56 nmbd
269 ? S 0:57 /usr/local/etc/arns -i le0 -2 -z kaistCompSci -l 
/usr/local/lib/cap/arns.log -f /usr/local/lib/cap/arns.fi
272 ? S 0:00 /bin/sh /usr/local/squid/bin/RunCache
276 ? S 82:25 squid -s
......

ƯÈ÷ e ¿É¼Ç°ú , ww ¿É¼Ç Àº ÇÁ·Î¼¼½º¸¦ °¨½ÃÇÏ°í °ü¸®Çϴµ¥ ¾ÆÁÖ À¯¿ëÇÑ ¿É¼ÇµéÀÌ´Ï ±â¾ïÇϱ⠹ٶõ´Ù.

´ÙÀ½À¸·Î System V °è¿­À» »ìÆ캸ÀÚ. System V °è¿­ÀÇ OS ¿¡´Â AIX, Digital UNIX, Solaris, HP-UX, IRIX, SCO UNIX µîÀÌ ÀÖ´Ù.

Àü¹ÝÀûÀ¸·Î BSD °è¿­ÀÇ ps ¿Í ¿É¼ÇÀÌ °°´Ù. ÀÌÁ¦ Â÷ÀÌ°¡ ÀÖ´Â ¿É¼ÇÀ» »ìÆ캸¸é ´ÙÀ½°ú °°´Ù.

e : e ¿É¼ÇÀº BSD ÀÇ È¯°æº¯¼ö¸¦ º¸¿©ÁÖ´Â ¿É¼ÇÀÌ ¾Æ´Ñ ½Ã½ºÅÛ ³»ÀÇ ¸ðµç ÇÁ·Î¼¼½º¸¦ µð½ºÇ÷¹ÀÌ ½ÃÅ°´Â ¿É¼ÇÀÌ´Ù.

f : process ÀÇ ½ÃÀÛ ½Ã°£ºÎÅÍ Ç¥½ÃÇÏ¿© full listing À» ½ÃÄÑÁÖ´Â ¿É¼ÇÀÌ´Ù.

% ps -e
PID TTY TIME COMMAND
0 ? 0:13 swapper
1 ? 0:02 init
2 ? 0:00 vhand
3 ? 0:00 statdaemon
7 ? 0:00 unhashdaemon
10 ? 0:00 lvmkd
11 ? 0:00 lvmkd
12 ? 0:00 lvmkd
13 ? 0:00 lvmkd
6 ? 0:00 sockregd
1399 console 0:00 getty
185 ? 0:00 DIAGMON
75 ? 1:09 syncer
137 ? 0:00 cron
102 ? 0:00 rlbdaemon
83 ? 0:00 nktl_daemon
........
% ps -ef
UID PID PPID C STIME TTY TIME COMMAND
root 0 0 0 Jan 1 ? 0:13 swapper
root 1 0 0 Mar 12 ? 0:02 init
root 2 0 0 Mar 12 ? 0:00 vhand
root 3 0 0 Mar 12 ? 0:00 statdaemon
root 7 0 0 Mar 12 ? 0:00 unhashdaemon
root 10 0 0 Mar 12 ? 0:00 lvmkd
root 11 0 0 Mar 12 ? 0:00 lvmkd
root 12 0 0 Mar 12 ? 0:00 lvmkd
root 13 0 0 Mar 12 ? 0:00 lvmkd
root 6 0 0 Mar 12 ? 0:00 sockregd
root 1399 1 0 Mar 12 console 0:00 /etc/getty console console
root 185 1 0 Mar 12 ? 0:00 DIAGMON
root 75 1 0 Mar 12 ? 1:09 /etc/syncer
root 137 1 0 Mar 12 ? 0:00 /etc/cron
root 102 1 0 Mar 12 ? 0:00 /etc/rlbdaemon
root 83 1 0 Mar 12 ? 0:00 /etc/nktl_daemon 0 0 0 -1 0 1 -2
root 109 85 0 Mar 12 ? 0:00 /etc/netfmt -f /usr/adm/nettl
.LOG00 -F -C -c /usr/adm/conslo
................

ÇÁ·Î¼¼½º¸¦ »ìÆ캼 ¶§ ¸ðµç ÇÁ·Î¼¼½ºÀÇ ¸®½ºÆ®¸¦ »ìÆ캸±â¶õ ¼ÖÁ÷È÷ Â¥Áõ³ª´Â ÀÏÀÌ´Ù. ±×·¸±â ¶§¹®¿¡ ¿øÇÏ´Â ³»¿ë¸¸À» »ìÆ캸·Á¸é , grep À̳ª egrep (environment grep ) À» ÀÌ¿ëÇÏ¿© ÇÊ¿äÇÑ ³»¿ëÀ» »ìÆ캸´Â °ÍÀÌ ÁÁ´Ù.

´ÙÀ½Àº ±× ¿¹ÀÌ´Ù.

$ ps -ax | egrep 'PID|sakai'
241 co R 0:02 rm /home/sakai/newest/95/test.txt /home/urd
$ ps -axww | egrep 'PID|sakai'
PID TT STAT TIME COMMAND
241 co R 0:02 rm /home/sakai/newest/95/test.txt /home/sakai/newest/95
/skuld.txt /home/sakai/belldandy.txt /home/sakai/newest/95/cenda.txt
$ ps -auxc | egrep 'PID|sakai'
USER PID %CPU %MEM SZ RSS TT STAT TIME COMMAND
sakai 211 6.7 1.1 824 544 p4 S 0:00 xtetris

´ÙÀ½À¸·Î ps ¸¦ ½ÇÇà½ÃÄ×À» ¶§ 1 ¶óÀο¡ ³ª¿À´Â Å°¿öµåµéÀÌ ÀǹÌÇÏ´Â ¹Ù¸¦ »ìÆ캸ÀÚ.

process ÀÇ ¼ÒÀ¯ÁÖ¸¦ Ç¥½ÃÇÑ´Ù.

Process ÀÇ ID ¸¦ Ç¥½ÃÇÑ´Ù.

SunOS ¿Í Digital UNIX ¿¡¼­´Â »ç¿ëµÈ CPU ÀÇ ÃßÁ¤Ä¡¸¦ Ç¥½ÃÇÑ´Ù. AIX, Solaris, Linux ¿¡¼­´Â CPUtime °ú °æ°ú½Ã°£À» Ç¥½ÃÇÑ´Ù.

BSD °è¿­¿¡¼­¸¸ Ç¥½ÃµÇ´Âµ¥, »ç¿ëµÈ ¸Þ¸ð¸®ÀÇ ÃßÁ¤Ä¡¸¦ Ç¥½ÃÇÑ´Ù.

ÇöÀç »ç¿ëÁßÀÎ °¡»ó¸Þ¸ð¸® ¶Ç´Â ÆäÀÌÁö¸¦ Ç¥½ÃÇÑ´Ù.

ÇöÀç »ç¿ëÁßÀÎ Real ¸Þ¸ð¸® »óȲÀ» ³ªÅ¸³½´Ù.

ÇöÀçÀÇ process ÀÇ ¼ÒÀ¯ÁÖ°¡ »ç¿ëÁßÀÎ Å͹̳ΠÆ÷Æ®¸¦ ³ªÅ¸³½´Ù.

ÇöÀçÀÇ ÇÁ·Î¼¼½ºÀÇ »óŸ¦ ³ªÅ¸³½´Ù. »óÅ¿¡´Â ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù.

ÃÑ »ç¿ëµÈ CPU time À» Ç¥½Ã

½ÇÇàµÈ ¸í·É¾îÀÇ À̸§À» Ç¥½Ã

ÇÁ·Î¼¼½º°¡ ½ÇÇàµÈ ½Ã°£À» Ç¥½Ã

process ¿Í °ü·ÃµÈ flag ¸¦ Ç¥½Ã

parent ÇÁ·Î¼¼½ºÀÇ process ID ¸¦ Ç¥½Ã

nice number ¸¦ ³ªÅ¸³½´Ù.

CPU »ç¿ë ÀÎÀÚ¿Í °ü·ÃµÈ Ç׸ñÀ» Ç¥½Ã

½ÇÇà priority ¸¦ Ç¥½Ã

½ÇÁ¦ÀûÀÎ ½ÇÇà priority ¸¦ Ç¥½Ã

´ë±âÁßÀÎ event ÇÁ·Î¼¼½º¸¦ Ç¥½Ã

¡¡

ÀÌÁ¦ process ¸¦ °¨½ÃÇϴµ¥ ÇÊ¿äÇÑ ±âº»ÀûÀÎ ¸í·É¾î´Â ´ë·« ¼³¸íÀÌ µÈ µí ÇÏ´Ï process management ¸¦ Çϴµ¥ À¯¿ëÇÑ ÅøµéÀ» »ìÆ캸ÀÚ.

  1. top

ÇÁ·Î¼¼½º¸¦ °¨½ÃÇϴµ¥ À¯¿ëÇÑ ÇÁ·Î±×·¥À¸·Î top ÀÌ ÀÖ´Ù. top Àº ¸®¾óŸÀÓÀ¸·Î ÇÁ·Î¼¼½ºÀÇ º¯È­ ¹× ½Ã½ºÅÛÀÇ Àü¹ÝÀûÀÎ ¸Þ¸ð¸® »ç¿ë »óȲ, CPU »ç¿ë »óȲµéÀ» ÇÔ²² º¸¿©ÁֹǷΠ»ó´çÈ÷ À¯¿ëÇÑ ÅøÀÌ´Ù.

HP-UX ¿Í IRIX , Linux ÀÇ °æ¿ì´Â OS ÀÚü¿¡ Æ÷ÇÔÀÌ µÇ¾î ÀÖ°í, ´Ù¸¥ OS ¿¡¼­´Â monitor ÆÐÅ°Áö¸¦ »õ·Î ÀνºÅçÀ» ÇØ¾ß ÇÑ´Ù . ÀÌÁ¦ °£·«ÇÑ top ÀÇ »ç¿ë¹ýÀ» »ìÆ캸ÀÚ.

top ¿¡¼­ status ¸¦ ¾÷µ¥ÀÌÆ® ½ÃÅ°´Â ½Ã°£À» ¿É¼ÇÀ¸·Î ÀçÁ¶Á¤ÇØÁÙ ¼ö ÀÖ´Ù.

´ÙÀ½Àº °¢ OS ¿¡¼­ 8 Ãʸ¶´Ù ¾÷µ¥ÀÌÆ® ½ÃÅ°¶ó´Â top ÀÇ ¸í·ÉÀÌ´Ù.

Linux : top d8

HP-UX : top -s 8

IRIX : top -i 8

±×¸®°í top ÀÌ ±¸µ¿µÇ´Â È­¸é ¾È¿¡¼­ k ¸¦ ´­·¯ ¿øÇÏ´Â process ¸¦ kill ÇÒ¼ö ÀÖ°í ÇöÀç ÀÛµ¿µÇ´Â process µé¿¡ r Å°¸¦ ´­·¯¼­ priority ¸¦ ÀçÇÒ´ç ½Ãų ¼öµµ ÀÖ´Ù.

´ÙÀ½ÀÌ top ÀÇ Ã¢ ¾È¿¡¼­ ÁÙ ¼ö ÀÖ´Â ¸í·ÉµéÀÌ´Ù.

  1. pstree

ÇÁ·Î¼¼½ºµéÀÇ »çÇ×µé (child process , mother process µéÀÇ fork »óȲµé)À» tree ·Î Ç¥ÇöÇÏ¿© º¸±â ÁÁ°í, °¨½ÃÇϱâ ÁÁ°Ô ÇØ ³õÀº ÅøÀÌ´Ù. ±âº»ÀûÀ¸·Î Linux ¿¡´Â Æ÷ÇÔÀÌ µÇ¾îÀÖ´Â ÅøÀε¥, ´Ù¸¥ OS ¿¡¼­µµ procps ÆÐÅ°Áö¸¦ ¼³Ä¡Çϸé Æ÷ÇÔÀÌ µÇ°Ô µÈ´Ù.

À̸¦ ÅëÇÏ¿© ¸¹Àº À¯¿ëÇÑ ÀÏÀ» ÇÒ ¼ö Àִµ¥ ±× ¿¹¸¦ µé¸é in.telnetd ´Â ½´ÆÛµ¥¸óÀÎ inetd ¿¡¼­ È£ÃâµÇ¾î ±¸µ¿µÇ´Â µ¥¸óÀÌ´Ù. ÇÏÁö¸¸ ÇØÄ¿°¡ ÀÚ½ÅÀÇ ÇØÅ· ÇÁ·Î±×·¥À» ps ¸¦ ÅëÇØ °¨½ÃÇÏ´õ¶óµµ °¨ÁöµÇÁö ¾Ê±â À§ÇØ in.telnetd ¶õ À̸§À¸·Î ¹Ù²Ù¾î ½ÇÇà½ÃÄ×´Ù ÇÒ Áö¶óµµ inetd ¿¡¼­ È£ÃâµÈ °ÍÀÌ ¾Æ´Ï¹Ç·Î pstree ¸¦ ÀÌ¿ëÇÏ¿© °¨ÁöÇØ ³¾ ¼ö ÀÖ°Ô µÈ´Ù.

¡¡

Linux_maching% pstree
init-+-agetty
|-crond
|-httpd---10*[httpd]
|-inetd-+-in.rlogind---tcsh
| |-in.telnetd---tcsh-+-pstree
| | `-tcsh
| |-in.telnetd---tcsh---vi
| `-nmbd
|-kerneld
|-kflushd
|-klogd
|-kswapd
|-lpd
|-4*[nfsiod]
|-rpc.mountd
|-rpc.nfsd
|-rpc.portmap
|-screen---2*[tcsh]
|-sendmail
|-sshd
|-syslogd
|-update
|-xconsole
`-xdm-+-X
`-xdm

ÀÌ ¿Ü¿¡µµ Á÷Á¢ÀûÀÎ process management ¿Í´Â °ü°è°¡ ÀûÁö¸¸ memory management ¿¡ »ç¿ëµÇ´Â °ü·ÃÀÖ´Â ¸í·É¾î·Î vmstat, limit , ulimit , sar(System V) , schedtune(AIX) , dispadmin (Solaris), hinv (IRIX), lsattr(AIX) monitor(AIX), grosview(IRIX) µîÀÌ ÀÖÀ¸´Ï ÂüÁ¶Çϱ⠹ٶõ´Ù.

ÀÌµé ¸í·É ¹× Memory Management ¿Í °ü·ÃµÈ »çÇ×µéÀº ´ÙÀ½ È£¿¡¼­ ´Ù·ç°íÀÚ ÇÑ´Ù.

3) process ¿¡ priority ÇÒ´çÇϱâ (nice , renice )

´ëºÎºÐÀÇ À¯´Ð½º ½Ã½ºÅÛµéÀº priority ±â¹ÝÀÇ round-robin ½ºÄÉÁ층 ¾Ë°í¸®Áò¿¡ ±Ù°ÅÇÏ¿© CPU ¸®¼Ò½º¸¦ ¿©·¯ »ç¿ëÀÚµéÀÌ »ç¿ëÇÏ°Ô µÈ´Ù.

¶ÇÇÑ ¸ðµç ¸í·ÉÀº °¢°¢ÀÇ execution priority ¸¦ °¡Áö°í ±¸µ¿ µÇ°Ô µÇ¾î Àִµ¥ º¸Åë °°Àº priority ¸¦ °®´Â ¸í·É¿¡¼­´Â CPU Time À» ½ÃºÐÇÒ·Î ÇÒ´ç ¹Þ¾Æ¼­ ±¸µ¿ µÇ°Ô µÈ´Ù.

ÇÁ·Î±×·¥ °íÀ¯ÀÇ priority ´Â ps -l ¿É¼ÇÀ» Á־ NI Çʵ带 »ìÆ캸¸é µÈ´Ù.

±×¸®°í priority °¡ Á»´õ ³ôÀº ¸í·É¾î¶ó¸é CPU ÀÇ »ç¿ë½Ã°£ÀÌ Á»´õ ±æ¾îÁö°Ô 󸮸¦ ÇØÁֹǷΠpriority °¡ ³ôÀº ÇÁ·Î±×·¥ÀÌ ÈξÀ »¡¸® ó¸®µÇ°Ô µÈ´Ù.

Priority number ´Â -20 ¿¡¼­ +20 ±îÁö Àִµ¥ root °¡ ÀÓÀÇ·Î ÇÒ´çÇÏ¿© priority¸¦ Àç¹èÁ¤½Ãų ¼ö°¡ ÀÖ´Ù. ÀÌ ¶§ »ç¿ëµÇ´Â ¸í·É¾î°¡ nice ³ª renice Àε¥ °ü¸®ÀÚ°¡ ÀÓÀÇ·Î priority ¸¦ ÀçÇÒ´ç½ÃŲ °æ¿ì current (actual) execution priority ·Î ÇÒ´çÀÌ µÇ°Ô µÇ°í, À̸¦ »ìÆ캸±â À§Çؼ­´Â ps -l ¿É¼ÇÀ» Á־ PRI Çʵ带 »ìÆ캸¸é µÈ´Ù.

Priority number ´Â ±âº»ÀûÀ¸·Î BSD ¿¡¼­´Â 0 ÀÌ ÁÖ¾îÁö°í , System V ¿¡¼­´Â 20 ÀÌ ÁÖ¾îÁö´Âµ¥, ¼ýÀÚÅ©±â°¡ ÀûÀ» ¼ö·Ï ³ôÀº priority ¸¦ °®´Â´Ù.

nice ÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.

% nice [+|- n] command (C shell built in command )

# nice - [[-] n] command (/usr/bin ¿¡ À§Ä¡ÇÑ ÇÁ·Î±×·¥À¸·Î¼­ÀÇ nice ¸í·É¾î)

¿¹¸¦ µé¾îº¸¸é,

% nice +6 a.out

# /bin/nice -6 a.out

À» ¼öÇà½ÃÅ°¸é a.out ÀÇ current execution priority ´Â BSD °è¿­¿¡¼­´Â 6 , System V °è¿­¿¡¼­´Â 26 ÀÇ priority ¸¦ °®°Ô µÈ´Ù.

% nice -5 important_job

# nice - -5 important_job

À§ÀÇ °æ¿ì¿¡´Â improtant_job ÀÇ current execution priority ´Â BSD °è¿­ÀÇ °æ¿ì -5 ¸¦ °®°Ô µÇ°í, System V ÀÇ °æ¿ì 15 ÀÇ priority ¸¦ °®°Ô µÈ´Ù.

nice ÀÇ °æ¿ì´Â ÇÁ·Î±×·¥À» ¼öÇà½ÃÅ°¸é¼­ priority ¸¦ ÇÒ´ç½ÃÄÑ ¸í·ÉÀ» ½ÇÇà½ÃÅ°´Â °æ¿ìÀÌ°í, ÀÌ¿¡ ¹ÝÇØ ÀÌ¹Ì ½ÇÇà½ÃŲ ¸í·ÉÀÇ priority ¸¦ º¯°æ½ÃÅ°°í ½ÍÀº °æ¿ì¿¡´Â renice ¶ó´Â ¸í·É¾î¸¦ »ç¿ëÇÏ¸é µÈ´Ù.

Àü¹ÝÀûÀÎ »ç¿ë¹ýÀº nice ¿Í µ¿ÀÏÇѵ¥ argument ·Î command ´ë½Å process ID°¡ µé¾î°£´Ù´Â °ÍÀÌ ´Ù¸£´Ù.

# renice new-nice-number pid

´ÙÀ½Àº ½ÇÇà ¿¹ÀÌ´Ù.

# renice 5 8101

À§¿Í °°Àº ¸í·É¾î¸¦ ¼öÇà½ÃÅ°¸é 8101 ÇÁ·Î¼¼½ºÀÇ priority ´Â 5 °¡ µÈ´Ù.

renice ÀÇ °æ¿ì AIX , HP-UX °æ¿ì¿¡´Â »ç¿ë¹ýÀÌ Á¶±Ý ´Ù¸£´Ù.

# renice -n 12 8101

8101: old priority 0, new priority 12

°ú °°ÀÌ ¸í·ÉÀ» ÁÖ¾î¾ß À§ÀÇ ¸í·É¾î¿Í °°Àº È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù.

±×¸®°í , solaris ÀÇ °æ¿ì¿¡´Â priocntl (priority control) À̶õ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ÇÁ·Î¼¼½º¿¡ priority ¸¦ ÀçÇÒ´ç½Ãų ¼ö ÀÖ´Ù.

realtime , time-sharing , interactive ÀÇ Å¬·¡½º·Î ³ª´©¾î¼­ ÇÁ·Î¼¼½ºµéÀ» °ü¸®½Ãų ¼ö ÀÖ´Ù.

realtime À¸·Î ½ÇÇà½ÃÅ°¸é priority ÇÒ´ç ¹× ¿ì¼±¼öÇà ÀÚü´Â È®½ÇÇÏÁö¸¸, ½Ã½ºÅÛ ºÎÇÏ·®ÀÌ Áõ°¡ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ°í, time-sharing class ´Â CPU time À» ÇÒ´ç ½ÃÄÑÁÖ´Â ºñÀ²À» Á¤ÇØÁØ´Ù. ±×¸®°í interactive Ŭ·¡½º´Â ÇÁ·Î±×·¥ÀÌ ÀÔÃâ·ÂÀÌ ¾øÀ¸¸é priority °¡ Á¡Â÷ÀûÀ¸·Î ¶³¾îÁö°Ô µÇ´Â Ŭ·¡½ºÀÌ´Ù.

ÀÌ ¸í·É¾îÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.

# priocntl -s -p new-priority -i pid process_id

´ÙÀ½Àº Solaris ¿¡¼­ priocntl À» ¼öÇà½ÃÅ°´Â ¿¹ÀÌ´Ù.

# priocntl -s -p -5 -i pid 8733

4) Process ¸¦ kill Çϱâ

kill ÀÇ ¸í·É¾î´Â º¸Åë ¸¹ÀÌ »ç¿ëÇØ ºÃ±â ¶§¹®¿¡ Ưº°È÷ ¼³¸íÇÏÁø ¾Ê°Ú´Ù. ÇÏÁö¸¸ ¸î °¡Áö ÷¾ðÀ» ÇÏÀÚ¸é -9 ¿É¼ÇÀ» ÀÌ¿ëÇؼ­ °­Á¦Á¾·á¸¦ ½Ãų °æ¿ì À߸øÇϸé Á»ºñ process ¸¦ »ý¼º½Ãų ¼ö ÀÖ´Â ¿äÀÎÀÌ µÇ¹Ç·Î -15 ¿É¼ÇÀ» ÀÌ¿ëÇÏ¿© process ¸¦ Á¾·á½ÃÅ°±â ¹Ù¶õ´Ù.

¶Ç, kill °ú °ü·ÃµÈ ¸í·É¾î·Î killall ÀÌ Àִµ¥ , ÀÌ´Â IRIX ¿Í LINUX ¿¡¼­ Á¦°øµÇ´Â ¸í·É¾î´Ù.

ÀÚ, À̷μ­ process °ü¸® ¹× °¨½Ã¿¡ °üÇÑ ³»¿ëÀ» ¸¶Ä¥±î ÇÑ´Ù. °ü¸®ÀÚ°¡ Ç×»ó ¸í½ÉÇØ¾ß ÇÒ Ã¶ÇÐÀÌ ÀÖ´Ù. ´ÙÀ½ ³»¿ëµéÀÌ´Ù.

"The analyst must resist the temptation to tune what is measurable rather than what is important"
(AIX version 3.2 , 4.1 ÀÇ Performance Tuning Guide ¿¡¼­)
Resist the temptation to tune something just because it is tunable. If it isn't broken, don't fix it.

½Ã½ºÅÛÀ» °ü¸®ÇØ º» »ç¶÷µéÀ̶ó¸é ¹«¾ð°¡ ´À²¸Áö´Â °ÍÀÌ ÀÖÀ» °ÍÀÌ´Ù.±×¸®°í ¶ÇÇÑ, ½Ã½ºÅÛÀ» ¿ì¼±ÀûÀ¸·Î »ý°¢ÇÏ´Â °Íµµ Áß¿äÇÏÁö¸¸, Ç×»ó »ç¿ëÀÚµéÀÇ ´Ù¼öÀÇ ÆíÀǸ¦ ´Ã °í·ÁÇØ Áֱ⠹ٶõ´Ù.

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

(footnote)

# ´Â root shell ÇÁ·ÒÇÁÆ®¸¦ ¶æÇÑ´Ù.

$ Àº ÀÏ¹Ý »ç¿ëÀÚÀÇ borne shell °è¿­ ½© ÇÁ·ÒÇÁÆ®¸¦ ¶æÇÑ´Ù.

% ´Â ÀÏ¹Ý »ç¿ëÀÚÀÇ C shell °è¿­ ½© ÇÁ·ÒÇÁÆ®¸¦ ¶æÇÑ´Ù.

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

References

1. Essential System Administration, O'Reilly & Assoiates, Inc.

2. [General Security Technique - Practically Useful], ±èÈÖ°­ ,Á¦ 4 ȸ WWW-KR Conference