JavaScript is required to for searching.
탐색 링크 건너뛰기
인쇄 보기 종료
시스템 관리 설명서: 고급 관리     Oracle Solaris 10 8/11 Information Library (한국어)
search filter icon
search icon

문서 정보

본 문서 정보

1.  터미널 및 모뎀 관리(개요)

2.  터미널 및 모뎀 설정(작업)

3.  Service Access Facility를 사용하여 직렬 포트 관리(작업)

4.  시스템 리소스 관리(개요)

5.  시스템 정보 표시 및 변경(작업)

6.  디스크 사용 관리(작업)

7.  UFS 쿼터 관리(작업)

8.  시스템 작업 일정 잡기(작업)

9.  시스템 계산 관리(작업)

10.  시스템 계산(참조)

11.  시스템 성능 관리(개요)

12.  시스템 프로세스 관리(작업)

시스템 프로세스 관리(작업 맵)

시스템 프로세스 관리 명령

ps 명령 사용

/proc 파일 시스템 및 명령 사용

프로세스 명령을 사용하여 프로세스 관리(/proc)

프로세스를 나열하는 방법

프로세스에 대한 정보를 표시하는 방법

프로세스를 제어하는 방법

프로세스 종료(pkill, kill)

프로세스를 종료하는 방법(pkill)

프로세스를 종료하는 방법(kill)

프로세스 디버깅(pargs, preap)

프로세스 클래스 정보 관리(작업 맵)

프로세스 클래스 정보 관리

프로세스의 스케줄링 우선 순위 변경(priocntl)

프로세스 클래스에 대한 기본 정보를 표시하는 방법(priocntl)

프로세스의 전역 우선 순위를 표시하는 방법

프로세스 우선 순위를 지정하는 방법(priocntl )

시간 공유 프로세스의 스케줄링 매개변수를 변경하는 방법(priocntl)

프로세스의 클래스를 변경하는 방법(priocntl)

시간 공유 프로세스의 우선 순위 변경(nice)

프로세스의 우선 순위를 변경하는 방법(nice)

시스템 프로세스의 문제 해결

13.  시스템 성능 모니터링(작업)

14.  소프트웨어 문제 해결(개요)

15.  시스템 메시지 관리

16.  코어 파일 관리(작업)

17.  시스템 충돌 정보 관리(작업)

18.  기타 소프트웨어 문제 해결(작업)

19.  파일 액세스 문제 해결(작업)

20.  UFS 파일 시스템 불일치 해결(작업)

21.  소프트웨어 패키지 문제 해결(작업)

색인

시스템 프로세스 관리 명령

다음 표는 시스템 프로세스 관리 명령을 설명합니다.

표 12-1 프로세스 관리 명령

명령
설명
매뉴얼 페이지
ps, pgrep, prstat, pkill
시스템에서 활성 프로세스의 상태를 확인하고, 프로세스에 대한 자세한 정보를 표시합니다.
pkill
pgrep와 동일한 기능을 수행하지만, 이름이나 기타 속성으로 프로세스를 찾거나 신호하고 프로세스를 종료합니다. 일치하는 각 프로세스는 해당 프로세스 ID가 출력되는 대신 kill 명령인 것처럼 신호됩니다.
pargs, preap
프로세스 디버깅을 돕습니다.
dispadmin
기본 프로세스 스케줄링 정책을 나열합니다.
priocntl
우선 순위 클래스에 프로세스를 할당하고 프로세스 우선 순위를 관리합니다.
nice
시간 공유 프로세스의 우선 순위를 변경합니다.
psrset
특정 프로세스 그룹을 단일 프로세서가 아닌 프로세서 그룹에 바인드합니다.

Solaris Management Console의 프로세스 툴을 사용하여 사용자 친숙한 인터페이스로 프로세스를 관리할 수 있습니다. Solaris Management Console 사용 및 시작에 대한 자세한 내용은 System Administration Guide: Basic Administration시스템 관리 설명서: 기본 관리의 2 장, Solaris Management Console 작업(작업)을 참조하십시오.

ps 명령 사용

ps 명령을 사용하여 시스템에서 활성 프로세스의 상태를 확인하고, 프로세스에 대한 기술적 정보를 표시할 수 있습니다. 이 데이터는 프로세스 우선 순위 설정 방법 결정과 같은 관리 작업에 유용합니다.

사용하는 옵션에 따라 ps 명령은 다음 정보를 보고합니다.

다음 표는 ps 명령으로 보고되는 몇 가지 필드를 설명합니다. 표시되는 옵션은 선택하는 옵션에 따라 달라집니다. 사용 가능한 모든 옵션에 대한 설명은 ps(1) 매뉴얼 페이지를 참조하십시오.

표 12-2 ps 보고서의 필드 요약

필드
설명
UID
프로세스 소유자의 유효 사용자 ID입니다.
PID
프로세스 ID입니다.
PPID
상위 프로세스 ID입니다.
C
스케줄링을 위한 프로세서 사용률입니다. 이 필드는 -c 옵션이 사용되면 표시되지 않습니다.
CLS
실시간, 시스템 또는 시간 공유와 같이 프로세스가 속하는 스케줄링 클래스입니다. 이 필드는 -c 옵션을 사용할 때만 포함됩니다.
PRI
커널 스레드의 스케줄링 우선 순위입니다. 숫자가 높을수록 높은 우선 순위를 나타냅니다.
NI
스케줄링 우선 순위에 영향을 주는 프로세스의 nice 번호입니다. 프로세스가 더 “nice”해지면 우선 순위가 낮음을 의미합니다.
ADDR
proc 구조의 속성입니다.
SZ
프로세스의 가상 주소 크기입니다.
WCHAN
프로세스가 유휴 상태인 이벤트 또는 잠금의 주소입니다.
STIME
프로세스의 시작 시간(시, 분, 초)입니다.
TTY
프로세스 또는 상위 프로세스가 시작된 터미널입니다. 물음표는 제어 터미널이 없음을 나타냅니다.
TIME
시작된 이후 프로세스에서 사용한 총 CPU 시간입니다.
CMD
프로세스를 생성한 명령입니다.

/proc 파일 시스템 및 명령 사용

프로세스 명령을 사용하여 /proc 디렉토리에 나열된 프로세스에 대한 자세한 정보를 표시할 수 있습니다. 다음 표는 /proc 프로세스 명령을 나열합니다. 또한 /proc 디렉토리는 프로세스 파일 시스템(PROCFS)이라고 합니다. 활성 프로세스의 이미지는 여기에 해당 프로세스 ID 번호로 저장됩니다.

표 12-3 프로세스 명령(/proc )

프로세스 명령
설명
pcred
프로세스 인증서 정보를 표시합니다.
pfiles
프로세스에서 열린 파일에 대한 fstatfcntl 정보를 보고합니다.
pflags
/proc 추적 플래그, 보류 중 신호/보류 신호 및 기타 상태 정보를 출력합니다.
pldd
프로세스에 연결된 동적 라이브러리를 나열합니다.
pmap
각 프로세스의 주소 공간 맵을 출력합니다.
psig
각 프로세스의 신호 작업 및 처리기를 나열합니다.
prun
각 프로세스를 시작합니다.
pstack
각 프로세스의 각 LWP에 대한 16진수+심볼릭 스택 추적을 출력합니다.
pstop
각 프로세스를 정지합니다.
ptime
미시상태 계산을 사용하여 프로세스 시간을 지정합니다.
ptree
프로세스를 포함하는 프로세스 트리를 표시합니다.
pwait
프로세스가 종료된 후 상태 정보를 표시합니다.
pwdx
프로세스에 대한 현재 작업 디렉토리를 표시합니다.

자세한 내용은 proc(1)을 참조하십시오.

프로세스 툴은 ps 명령의 일부 옵션과 유사하지만, 이러한 명령으로 제공되는 출력이 좀더 자세합니다.

일반적으로 프로세스 명령은 다음을 수행합니다.

프로세스 명령을 사용하여 프로세스 관리(/proc)

몇 가지 프로세스 명령을 사용하여 프로세스에 대한 자세한 기술적 정보를 표시하거나 활성 프로세스를 제어할 수 있습니다. 표 12-3은 일부 /proc 명령을 나열합니다.

프로세스가 무한 루프에 갇히게 되거나 프로세스를 실행하는 데 너무 오래 걸리는 경우 프로세스를 중지(종료)할 수 있습니다. kill 또는 pkill 명령을 사용하여 프로세스를 중지하는 방법에 대한 자세한 내용은 12 장시스템 프로세스 관리(작업)를 참조하십시오.

/proc 파일 시스템은 상태 정보 및 제어 기능에 대한 추가 하위 디렉토리를 포함하는 디렉토리 계층입니다.

또한 /proc 파일 시스템은 프로세스 주소 공간의 개별 페이지에 대한 읽기 및 쓰기 권한을 재매핑하는 데 사용되는 xwatchpoint 기능도 제공합니다. 이 기능에는 제한 사항이 없으며 MT 안전입니다.

디버깅 툴은 /proc의 xwatchpoint 기능을 사용하도록 수정되어 전체 xwatchpoint 프로세스가 더 빨라졌습니다.

dbx 디버깅 툴을 사용하여 xwatchpoint를 설정할 때 다음 제한 사항이 제거되었습니다.

자세한 내용은 proc(4)mdb(1) 매뉴얼 페이지를 참조하십시오.

프로세스를 나열하는 방법

예 12-1 프로세스 나열

다음 예는 옵션이 사용되지 않은 ps 명령의 출력을 보여줍니다.

$ ps
   PID TTY      TIME COMD
  1664 pts/4    0:06 csh
  2081 pts/4    0:00 ps

다음 예는 ps - ef 명령의 출력을 보여줍니다. 이 출력은 시스템이 부팅될 때 실행된 첫번째 프로세스가 sched(스와퍼), init 프로세스, pageout 등으로 이어지고 있음을 나타냅니다.

$ ps -ef
     UID   PID  PPID  C    STIME TTY      TIME CMD
    root     0     0  0   Dec 20 ?        0:17 sched
    root     1     0  0   Dec 20 ?        0:00 /etc/init -
    root     2     0  0   Dec 20 ?        0:00 pageout
    root     3     0  0   Dec 20 ?        4:20 fsflush
    root   374   367  0   Dec 20 ?        0:00 /usr/lib/saf/ttymon
    root   367     1  0   Dec 20 ?        0:00 /usr/lib/saf/sac -t 300
    root   126     1  0   Dec 20 ?        0:00 /usr/sbin/rpcbind
    root    54     1  0   Dec 20 ?        0:00 /usr/lib/sysevent/syseventd
    root    59     1  0   Dec 20 ?        0:00 /usr/lib/picl/picld
    root   178     1  0   Dec 20 ?        0:03 /usr/lib/autofs/automountd
    root   129     1  0   Dec 20 ?        0:00 /usr/sbin/keyserv
    root   213     1  0   Dec 20 ?        0:00 /usr/lib/lpsched
    root   154     1  0   Dec 20 ?        0:00 /usr/sbin/inetd -s
    root   139     1  0   Dec 20 ?        0:00 /usr/lib/netsvc/yp/ypbind ...
    root   191     1  0   Dec 20 ?        0:00 /usr/sbin/syslogd
    root   208     1  0   Dec 20 ?        0:02 /usr/sbin/nscd
    root   193     1  0   Dec 20 ?        0:00 /usr/sbin/cron
    root   174     1  0   Dec 20 ?        0:00 /usr/lib/nfs/lockd
  daemon   175     1  0   Dec 20 ?        0:00 /usr/lib/nfs/statd
    root   376     1  0   Dec 20 ?        0:00 /usr/lib/ssh/sshd
    root   226     1  0   Dec 20 ?        0:00 /usr/lib/power/powerd
    root   315     1  0   Dec 20 ?        0:00 /usr/lib/nfs/mountd
    root   237     1  0   Dec 20 ?        0:00 /usr/lib/utmpd
    .
    .
    .    

프로세스에 대한 정보를 표시하는 방법

  1. 추가 정보를 표시하고자 하는 프로세스의 프로세스 ID를 가져옵니다.
    # pgrep process

    여기서 process는 추가 정보를 표시하고자 하는 프로세스의 이름입니다.

    프로세스 ID는 출력의 첫번째 열에 표시됩니다.

  2. 필요한 프로세스 정보를 표시합니다.
    # /usr/bin/pcommand pid
    pcommand

    실행하고자 하는 (/proc) 명령입니다. 표 12-3은 이러한 명령을 나열하고 설명합니다.

    pid

    프로세스 ID를 식별합니다.

예 12-2 프로세스에 대한 정보 표시

다음 예는 프로세스 명령을 사용하여 cron 프로세스에 대한 추가 정보를 표시하는 방법을 보여줍니다.

# pgrep cron 1
4780
# pwdx 4780 2
4780:   /var/spool/cron/atjobs
# ptree 4780 3
4780  /usr/sbin/cron
# pfiles 4780 4
4780:   /usr/sbin/cron
  Current rlimit: 256 file descriptors
   0: S_IFCHR mode:0666 dev:290,0 ino:6815752 uid:0 gid:3 rdev:13,2
      O_RDONLY|O_LARGEFILE
      /devices/pseudo/mm@0:null
   1: S_IFREG mode:0600 dev:32,128 ino:42054 uid:0 gid:0 size:9771
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
      /var/cron/log
   2: S_IFREG mode:0600 dev:32,128 ino:42054 uid:0 gid:0 size:9771
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
      /var/cron/log
   3: S_IFIFO mode:0600 dev:32,128 ino:42049 uid:0 gid:0 size:0
      O_RDWR|O_LARGEFILE
      /etc/cron.d/FIFO
   4: S_IFIFO mode:0000 dev:293,0 ino:4630 uid:0 gid:0 size:0
      O_RDWR|O_NONBLOCK
   5: S_IFIFO mode:0000 dev:293,0 ino:4630 uid:0 gid:0 size:0
      O_RDWR
  1. cron 프로세스에 대한 프로세스 ID를 가져옵니다.

  2. cron 프로세스에 대한 현재 작업 디렉토리를 표시합니다.

  3. cron 프로세스를 포함하는 프로세스 트리를 표시합니다.

  4. fstatfcntl 정보를 표시합니다.

프로세스를 제어하는 방법

  1. 제어하고자 하는 프로세스의 프로세스 ID를 가져옵니다.
    # pgrep process

    여기서 process는 제어하고자 하는 프로세스의 이름입니다.

    프로세스 ID는 출력의 첫번째 열에 표시됩니다.

  2. 적당한 프로세스 명령을 사용하여 프로세스를 제어합니다.
    # /usr/bin/pcommand pid
    pcommand

    실행하고자 하는 프로세스(/proc) 명령입니다. 표 12-3은 이러한 명령을 나열하고 설명합니다.

    pid

    프로세스 ID를 식별합니다.

  3. 프로세스 상태를 확인합니다.
    # ps -ef | grep pid

예 12-3 프로세스 제어

다음 예는 프로세스 명령을 사용하여 dtpad 프로세스를 중지하고 재시작하는 방법을 보여줍니다.

# pgrep dtpad 1
2921
# pstop 29212 
# prun 2921 3
  1. dtpad 프로세스에 대한 프로세스 ID를 가져옵니다.

  2. dtpad 프로세스를 정지합니다.

  3. dtpad 프로세스를 재시작합니다.

프로세스 종료(pkill, kill)

경우에 따라 프로세스를 중지(종료)해야 할 수 있습니다. 프로세스가 무한 루프에 있을 수 있습니다. 또는 완료되기 전에 중지하려고 하는 큰 작업을 시작했을 수 있습니다. 소유하고 있는 모든 프로세스를 종료할 수 있습니다. 수퍼유저는 프로세스 ID가 0, 1, 2, 34인 프로세스를 제외하고 시스템의 모든 프로세스를 종료할 수 있습니다. 이러한 프로세스를 종료하면 시스템에 문제가 발생할 가능성이 큽니다.

자세한 내용은 pgrep(1)pkill(1)kill(1) 매뉴얼 페이지를 참조하십시오.

프로세스를 종료하는 방법(pkill)

  1. (옵션) 다른 사용자의 프로세스를 종료하려면 수퍼유저 또는 동등한 역할의 사용자로 로그인합니다.
  2. 종료하고자 하는 프로세스의 프로세스 ID를 가져옵니다.
    $ pgrep process

    여기서 process는 종료하고자 하는 프로세스의 이름입니다.

    예를 들면 다음과 같습니다.

    $ pgrep netscape
    587
    566

    프로세스 ID는 출력에 표시됩니다.


    주 - Sun Ray에 대한 프로세스 정보를 가져오려면 다음 명령을 사용합니다.

    # ps -fu user

    이 명령은 모든 사용자 프로세스를 나열합니다.

    # ps -fu user | grep process

    이 명령은 사용자에 대한 특정 프로세스를 찾습니다.


  3. 프로세스를 종료합니다.
    $ pkill [signal] process
    signal

    pkill 명령줄 구문에 신호가 포함되지 않은 경우 사용되는 기본 신호는 –15(SIGKILL)입니다. pkill 명령과 함께 –9 신호(SIGTERM)를 사용하면 프로세스가 즉시 종료됩니다. 하지만 –9 신호는 데이터베이스 프로세스나 LDAP 서버 프로세스와 같은 특정 프로세스를 종료하는 데 사용하면 안 됩니다. 이 경우 데이터 손실이 발생할 수 있습니다.

    process

    중지할 프로세스의 이름입니다.


    참고 - pkill 명령을 사용하여 프로세스를 종료할 때 처음에는 신호 옵션을 포함시키지 말고 자체 명령만 사용하여 시도해 봅니다. pkill 명령을 -9 신호와 함께 사용하기 전에 몇 분 정도 기다린 후 프로세스가 종료되었는지 확인합니다.


  4. 프로세스가 종료되었는지 확인합니다.
    $ pgrep process

    종료한 프로세스는 pgrep 명령 출력에 더 이상 나열되지 않아야 합니다.

프로세스를 종료하는 방법(kill)

  1. (옵션) 다른 사용자의 프로세스를 종료하려면 수퍼유저 또는 동등한 역할의 사용자로 로그인합니다.
  2. 종료하고자 하는 프로세스의 프로세스 ID를 가져옵니다.
    $ ps -fu user

    여기서 user는 프로세스를 표시하고자 하는 사용자입니다.

    프로세스 ID는 출력의 첫번째 열에 표시됩니다.

  3. 프로세스를 종료합니다.
    $ kill [signal-number] pid
    signal

    kill 명령줄 구문에 신호가 포함되지 않은 경우 사용되는 기본 신호는 –15(SIGKILL)입니다. kill 명령과 함께 –9 신호(SIGTERM)를 사용하면 프로세스가 즉시 종료됩니다. 하지만 –9 신호는 데이터베이스 프로세스나 LDAP 서버 프로세스와 같은 특정 프로세스를 종료하는 데 사용하면 안 됩니다. 이 경우 데이터 손실이 발생할 수 있습니다.

    pid

    종료하고자 하는 프로세스의 프로세스 ID입니다.


    참고 - kill 명령을 사용하여 프로세스를 중지할 때 처음에는 신호 옵션을 포함시키지 말고 자체 명령만 사용하여 시도해 봅니다. kill 명령을 -9 신호와 함께 사용하기 전에 몇 분 정도 기다린 후 프로세스가 종료되었는지 확인합니다.


  4. 프로세스가 종료되었는지 확인합니다.
    $ pgrep pid

    종료한 프로세스는 pgrep 명령 출력에 더 이상 나열되지 않아야 합니다.

프로세스 디버깅(pargs, preap)

pargs 명령 및 preap 명령은 프로세스 디버깅을 개선합니다. pargs 명령은 활성 프로세스 또는 코어 파일과 연관된 인수 및 환경 변수를 출력합니다. preap 명령은 defunct(좀비) 프로세스를 제거합니다. 좀비 프로세스는 상위 프로세스에서 요청한 종료 상태를 가지지 않습니다. 이러한 프로세스는 일반적으로 해를 끼치지 않지만 수가 많아지면 시스템 리소스를 소모할 수 있습니다. pargspreap 명령을 사용하여 검사할 권한이 있는 프로세스를 검사할 수 있습니다. 수퍼유저는 모든 프로세스를 검사할 수 있습니다.

preap 명령 사용에 대한 자세한 내용은 preap(1) 매뉴얼 페이지를 참조하십시오. pargs 명령 사용에 대한 자세한 내용은 pargs(1) 매뉴얼 페이지를 참조하십시오. 또한 proc(1) 매뉴얼 페이지를 참조하십시오.

예 12-4 프로세스 디버깅(pargs)

pargs 명령은 ps 명령으로 프로세스에 전달된 모든 인수를 표시할 수 없는 오래 지속되는 문제를 해결합니다. 다음 예는 pgrep 명령과 함께 pargs 명령을 사용하여 프로세스에 전달된 인수를 표시하는 방법을 보여줍니다.

# pargs `pgrep ttymon`
579:    /usr/lib/saf/ttymon -g -h -p system-name console login:  
-T sun -d /dev/console -l 
argv[0]: /usr/lib/saf/ttymon
argv[1]: -g
argv[2]: -h
argv[3]: -p
argv[4]: system-name console login: 
argv[5]: -T
argv[6]: sun
argv[7]: -d
argv[8]: /dev/console
argv[9]: -l
argv[10]: console
argv[11]: -m
argv[12]: ldterm,ttcompat
548:    /usr/lib/saf/ttymon
argv[0]: /usr/lib/saf/ttymon

다음 예는 pargs - e 명령을 사용하여 프로세스와 연관된 환경 변수를 표시하는 방법을 보여줍니다.

$ pargs -e 6763
6763: tcsh
envp[0]: DISPLAY=:0.0