Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > b611ea73723a8287cce23d3124a6eeea > files > 282

howto-sgml-ko-2006-5mdv2010.0.noarch.rpm

#!/bin/bash
# pid-identifier.sh: PID¿¡ ÇØ´çÇÏ´Â ÇÁ·Î¼¼½ºÀÇ ¿ÏÀüÇÑ °æ·Î¸íÀ» ã±â.

ARGNO=1  # ÇÊ¿äÇÑ ÀÎÀÚ ¼ö.
E_WRONGARGS=65
E_BADPID=66
E_NOSUCHPROCESS=67
E_NOPERMISSION=68
PROCFILE=exe

if [ $# -ne $ARGNO ]
then
  echo "»ç¿ë¹ý: `basename $0` PID-number" >&2  # ¿¡·¯ ¸Þ¼¼Áö >Ç¥ÁØ¿¡·¯.
  exit $E_WRONGARGS
fi  

pidno=$( ps ax | grep $1 | awk '{ print $1 }' | grep $1 )
# "ps" ¸ñ·Ï¿¡¼­ pid(ù¹ø° Çʵå)¸¦ È®ÀÎ.
# ±× ´ÙÀ½¿¡´Â ÀÌ ½ºÅ©¸³Æ®°¡ ½ÇÇà½ÃŲ ÇÁ·Î¼¼½º°¡ ¾Æ´Ñ ½ÇÁ¦ ÇÁ·Î¼¼½ºÀÎÁö È®ÀÎ.
# ¸¶Áö¸·ÀÇ "grep $1"ÀÌ ÀÌ·± °¡´É¼ºÀ» Á¦°ÅÇØ ÁÝ´Ï´Ù.
if [ -z "$pidno" ]  # °á°ú°¡ ¾Æ¹«°Íµµ ¾ø´Ù¸é ±æÀÌ°¡ 0ÀÎ ¹®ÀÚ¿­ÀÌ µË´Ï´Ù.
then                # ÁÖ¾îÁø pid·Î ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º°¡ ¾øÀ½.
  echo "½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º°¡ ¾ø½À´Ï´Ù."
  exit $E_NOSUCHPROCESS
fi  

# ´ë½Å ÀÌ·¸°Ô Çصµ µË´Ï´Ù:
#   if ! ps $1 > /dev/null 2>&1
#   then                # ÁÖ¾îÁø pid·Î ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º ¾øÀ½.
#     echo "½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º°¡ ¾ø½À´Ï´Ù."
#     exit $E_NOSUCHPROCESS
#    fi

# ÀÌ Àüü °úÁ¤Àº "pidof" ¸í·É¾î·Î °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.


if [ ! -r "/proc/$1/$PROCFILE" ]  # Àбâ ÆÛ¹Ì¼Ç È®ÀÎ.
then
  echo "$1 ÇÁ·Î¼¼½º´Â ½ÇÇàÁßÀÌÁö¸¸,"
  echo "/proc/$1/$PROCFILE À» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù."
  exit $E_NOPERMISSION  # ÀÏ¹Ý »ç¿ëÀÚ´Â /proc ÀÇ ¸î¸î ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù.
fi  

# ¹Ù·Î ¾ÕÀÇ µÎ Å×½ºÆ®µéÀ» ÀÌ·¸°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù:
#    if ! kill -0 $1 > /dev/null 2>&1 # '0' Àº ½Ã±×³ÎÀÌ ¾Æ´Ï°í ÇØ´ç ÇÁ·Î¼¼½º¿¡ 
									  # ½Ã±×³ÎÀ» º¸³¾ ¼ö ÀÖ´ÂÁö¸¦ È®ÀÎÇؼ­ 
									  # ½ÇÇà ¿©ºÎ¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.
#    then echo "PID °¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª ¼ÒÀ¯ÀÚ°¡ ¾Æ´Õ´Ï´Ù." >&2
#    exit $E_BADPID
#    fi



exe_file=$( ls -l /proc/$1 | grep "exe" | awk '{ print $11 }' )
# ȤÀº       exe_file=$( ls -l /proc/$1/exe | awk '{print $11}' )
#
# /proc/pid-number/exe ´Â ±× ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½ºÀÇ 
# ¿ÏÀüÇÑ °æ·Î¸í¿¡ ´ëÇÑ ½Éº¼¸¯ ¸µÅ©ÀÔ´Ï´Ù.

if [ -e "$exe_file" ]  # /proc/pid-number/exe °¡ Á¸ÀçÇÑ´Ù¸é...
then                 # ÇØ´ç ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏ´Â °ÍÀÓ.
  echo "$1 ¹ø ÇÁ·Î¼¼½º´Â $exe_file À¸·Î ½ÇÇàµÆ½À´Ï´Ù."
else
  echo "½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º°¡ ¾ø½À´Ï´Ù."
fi  


# ÀÌ·¸°Ô °øÀ» µé¿© ÀÛ¼ºÇÑ ÀÌ ½ºÅ©¸³Æ®´Â 
# ps ax | grep $1 | awk '{ print $5 }'
# ·Î "°ÅÀÇ" ´ëÄ¡ °¡´ÉÇÕ´Ï´Ù.
# ÇÏÁö¸¸ 'ps'ÀÇ 5¹ø° Çʵ尡 ½ÇÇà ÆÄÀÏÀÇ °æ·ÎÀ̸§ÀÌ ¾Æ´Ï¶ó
# ±× ÇÁ·Î¼¼½ºÀÇ argv[0] À̱⠶§¹®¿¡ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.
#
# ÇÏÁö¸¸ ´ÙÀ½Àº Á¦´ë·Î µÉ °Ì´Ï´Ù.
#       find /proc/$1/exe -printf '%l\n'
#       lsof -aFn -p $1 -d txt | sed -ne 's/^n//p'

# Stephane Chazelas °¡ Ãß°¡ ¼³¸íÀ» ÇØ ÁÖ¾ú½À´Ï´Ù.

exit 0