TOP(サイトマップ)

プロセス管理・監視

Solarisのプロセス管理と監視について

OSが起動されて、いろいろなプロセスが実行される。それはコマンドであったり、デーモンであったりする訳であるが、管理者はプロセスを監視することも必要である。時にはプロセスを停止させたり、プロセスを起動させたりするのであるが、Solarisはそのプロセスの管理を自動的にやってくれる。

例えばfindコマンドでファイル検索をしている場合CPU利用率は急激にあがり100%近くまでなるが、放置しておけば他のプロセスは動作できなくなる。SolarisはそのプロセスにCPU処理を実行させる割合も管理している。

(現在のプロセスの表示)
# /usr/bin/ps -ef UID PID PPID C STIME TTY TIME CMD root 0 0 0 20:51:06 ? 0:03 sched root 1 0 0 20:51:06 ? 0:11 /etc/init - root 2 0 0 20:51:06 ? 0:01 pageout root 3 0 0 20:51:06 ? 245:56 fsflush root 321 1 0 20:52:23 ? 0:03 /usr/lib/saf/sac -t 300 root 232 231 0 20:52:05 ? 0:16 htt_server -port 9010 -syslog -message_locale C root 259 1 0 20:52:17 ? 0:03 /usr/local/sbin/sshd root 118 1 0 20:51:26 ? 0:00 /usr/sbin/rpcbind nobody 340 334 0 20:52:32 ? 0:16 /usr/local/apache/bin/httpd root 63 1 0 20:51:19 ? 0:00 /usr/lib/sysevent/syseventd root 144 1 0 20:51:27 ? 0:45 /usr/lib/autofs/automountd
:(省略)
# /usr/ucb/ps -aux
USER PID %CPU %MEM SZ RSS TT S START TIME COMMAND root 3257 0.6 1.3 1484 1128 pts/8 O 13:53:55 0:00 /usr/ucb/ps -aux root 3 0.2 0.0 0 0 ? S 20:51:06 245:56 fsflush root 3256 0.2 1.0 1148 828 pts/8 S 13:53:55 0:00 more root 3253 0.2 0.3 256 252 pts/8 S 13:53:20 0:00 -sh root 3250 0.1 1.3 1504 1100 ? S 13:53:19 0:00 in.telnetd root 175 0.0 1.1 2380 948 ? S 20:51:31 0:01 /usr/sbin/nscd root 0 0.0 0.0 0 0 ? T 20:51:06 0:02 sched root 1 0.0 0.1 672 92 ? S 20:51:06 0:11 /etc/init - root 2 0.0 0.0 0 0 ? S 20:51:06 0:01 pageout root 63 0.0 0.2 2004 132 ? S 20:51:19 0:00 /usr/lib/sysevent/ root 118 0.0 0.0 2084 ? ? S 20:51:26 0:00 /usr/sbin/rpcbind root 143 0.0 0.3 2096 272 ? S 20:51:27 0:00 /usr/sbin/inetd -s
(プロセスの強制停止)
# kill -9 4667

(プロセスの名前での停止)
# pkill telnet telnetd

なお、killコマンドpkillコマンドはプロセスに対し、シグナルというものを送りつける。シグナルには以下の種類があり、デフォルトは15番のSIGTERMを発行する。つまり「# kill 4018」は「# kill -15 4018」と同じである。良く使うのは15番が有効にならない場合で、「# kill -9 4018」の強制終了を使用する。

NAME Value Default
SIGHUP
SIGINT
SIGQUIT
SIGILL
SIGTRAP
SIGABRT
SIGEMT
SIGFPE
SIGKILL
SIGBUS
SIGSEGV
SIGSYS
SIGPIPE
SIGALRM
SIGTERM
SIGUSR1
SIGUSR2
SIGCHLD
SIGPWR
SIGWINCH
SIGURG
SIGPOLL
SIGSTOP
SIGTSTP
SIGCONT
SIGTTIN
SIGTTOU
SIGVTALRM
SIGPROF
SIGXCPU
SIGXFSZ
SIGWAITING
SIGLWP
SIGFREEZE
SIGTHAW
SIGCANCEL
SIGRTMIN
(SIGRTMIN+1)
(SIGRTMAX-1)
SIGRTMAX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
*
*
*
*
Exit Hangup (see termio(7I))
Exit Interrupt (see termio(7I))
Core Quit (see termio(7I))
Core Illegal Instruction
Core Trace or Breakpoint Trap
Core Abort
Core Emulation Trap
Core Arithmetic Exception
Exit Killed
Core Bus Error
Core Segmentation Fault
Core Bad System Call
Exit Broken Pipe
Exit Alarm Clock
Exit Terminated
Exit User Signal 1
Exit User Signal 2
Ignore Child Status Changed
Ignore Power Fail or Restart
Ignore Window Size Change
Ignore Urgent Socket Condition
Exit Pollable Event (see streamio(7I))
Stop Stopped (signal)
Stop Stopped (user) (see termio(7I))
Ignore Continued
Stop Stopped (tty input) (see termio(7I))
Stop Stopped (tty output) (see termio(7I))
Exit Virtual Timer Expired
Exit Profiling Timer Expired
Core CPU time limit exceeded (see getrlimit(2))
Core File size limit exceeded (see getrlimit(2))
Ignore Concurrency signal reserved by threads library
Ignore Inter-LWP signal reserved by threads library
Ignore Check point Freeze
Ignore Check point Thaw
Ignore Cancellation signal reserved by threads library
Exit First real time signal
Exit Second real time signal
Exit Second-to-last real time signal
Exit Last real time signal

さて、psコマンドでプロセスの状態を確認できた訳であるが、詳細な情報は、実は/procディレクトリに格納されている。プロセスIDも当然というか、/proc配下にはプロセスID(10進数)のディレクトリが作成されている。そのディレクトリはプロセスを起動したユーザが、所有者になる。他にもプロセスの詳細な情報が記述されている
# ps -ef | grep 6111
root  6111  194  0  15:17:24  ?  0:00  in.telnetd

# ls -la /proc | grep 6111
dr-x--x--x 5 root root 736 6月 11日 15:17 6111

# ls -F /proc/6111
as  ctl  lpsinfo  lwp/  pagedata  root@  usage
auxv  cwd@  lstatus  map  psinfo  sigact  watch
cred  fd/  lusage  object/  rmap  status  xmap


Google
WWW を検索 Solarisでいきましょか?」内を検索





Copyright (C) 2008 Solarisでいきましょか? All rights reserved