]
トップ «前の日記(2008-08-19) 最新 次の日記(2008-08-23)» 編集

Yukiharu YABUKI の tDiary



このtDiaryを検索します。

2008-08-21 [長年日記]

_ Debian で sysctl のソースが見たくなったら、どうするのか。

まずは、sysctl がどのパッケージに属しているのか確認します。
    dpkg -S sysctl | grep bin
dpkg -S の出力は、属するパッケージ名と、パス付きファイル名であるので、求めている sysctl はコマンドなんで、grep で bin を指定してみた。これだと、/bin /sbin /usr/bin /usr/sbin などがカバーできるし。
dpkg -S sysctl | grep bin
procps: /sbin/sysctl
結果により、procps パッケージに属していることがわかったので、apt-get source procsps して、ソースを取得する。下記のような感じ。
yabuki@Ernalda:~/src/deb-package/procps$ apt-get source procps
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
331kB のソースアーカイブを取得する必要があります。
取得:1 http://ftp.debian.org unstable/main procps 1:3.2.7-9 (dsc) [986B]
取得:2 http://ftp.debian.org unstable/main procps 1:3.2.7-9 (tar) [282kB]
取得:3 http://ftp.debian.org unstable/main procps 1:3.2.7-9 (diff) [47.8kB]
331kB を 2s で取得しました (158kB/s)
dpkg-source: extracting procps in procps-3.2.7
dpkg-source: unpacking procps_3.2.7.orig.tar.gz
dpkg-source: applying ./procps_3.2.7-9.diff.gz
すると、
yabuki@Ernalda:~/src/deb-package/procps$ ls -la
合計 344
drwxr-sr-x  3 yabuki yabuki   4096 2008-08-21 10:16 .
drwxr-sr-x 36 yabuki yabuki   4096 2008-08-21 10:16 ..
drwxr-xr-x  5 yabuki yabuki   4096 2008-08-21 10:16 procps-3.2.7
-rw-r--r--  1 yabuki yabuki  47775 2008-08-10 11:02 procps_3.2.7-9.diff.gz
-rw-r--r--  1 yabuki yabuki    986 2008-08-10 11:02 procps_3.2.7-9.dsc
-rw-r--r--  1 yabuki yabuki 281965 2006-06-27 08:17 procps_3.2.7.orig.tar.gz
な状態になっているので、cd procps-3.2.7 してから、ls すると、
yabuki@Ernalda:~/src/deb-package/procps/procps-3.2.7$ ls
AUTHORS      dummy.c    procps.lsm   sysctl.c       v
BUGS         free.1     procps.spec  sysctl.conf    vmstat.8
COPYING      free.c     ps           sysctl.conf.5  vmstat.c
COPYING.LIB  kill.1     pwdx.1       t              w.1
CodingStyle  minimal.c  pwdx.c       tload.1        w.c
Makefile     pgrep.1    skill.1      tload.c        watch.1
NEWS         pgrep.c    skill.c      top.1          watch.c
README       pkill.1    slabtop.1    top.c
README.top   pmap.1     slabtop.c    top.h
TODO         pmap.c     snice.1      uptime.1
debian       proc       sysctl.8     uptime.c
ってな感じ。目的の sysctl.c を発見しました。

_ pwdx

あるプロセスのカレントディレクトリを知りたかったら、procps に入っている pwdx プロセス番号 で調べる事ができる。ただし、pwdx を実行するユーザが、その調べるプロセスのオーナーでない場合
$ pwdx 1
1: Permission denied
という風におこられる。
sudo pwdx 1
Password:
1: /
のように、特権を使えばok。ちなみに、pid が 1 のプロセスは init である。普通の例は、
ps auxw | grep bash
などでログインシェルの pid を引っ張って来て、試してみると良い。
$ pwdx 4088
4088: /home/yabuki
のような結果が得られる事だろう。

_ pmap

$ ps auxw | grep bash | head -1
yabuki    4088  0.0  0.0   5800   240 pts/0    Ss   Aug20   0:00 bash
$ pmap 4088
4088:   bash
08048000    644K r-x--  /bin/bash
080e9000     24K rw---  /bin/bash
080ef000    716K rw---    [ anon ]
b7b09000     36K r-x--  /lib/tls/i686/cmov/libnss_files-2.3.6.so
b7b12000      8K rw---  /lib/tls/i686/cmov/libnss_files-2.3.6.so
b7b14000     32K r-x--  /lib/tls/i686/cmov/libnss_nis-2.3.6.so
b7b1c000      8K rw---  /lib/tls/i686/cmov/libnss_nis-2.3.6.so
b7b1e000     72K r-x--  /lib/tls/i686/cmov/libnsl-2.3.6.so
b7b30000      8K rw---  /lib/tls/i686/cmov/libnsl-2.3.6.so
b7b32000      8K rw---    [ anon ]
b7b34000     28K r-x--  /lib/tls/i686/cmov/libnss_compat-2.3.6.so
b7b3b000      8K rw---  /lib/tls/i686/cmov/libnss_compat-2.3.6.so
b7b3d000    440K r----  /usr/lib/locale/locale-archive
b7bab000   2048K r----  /usr/lib/locale/locale-archive
b7dab000      4K rw---    [ anon ]
b7dac000   1180K r-x--  /lib/tls/i686/cmov/libc-2.3.6.so
b7ed3000     20K r----  /lib/tls/i686/cmov/libc-2.3.6.so
b7ed8000      8K rw---  /lib/tls/i686/cmov/libc-2.3.6.so
b7eda000     16K rw---    [ anon ]
b7ede000      8K r-x--  /lib/tls/i686/cmov/libdl-2.3.6.so
b7ee0000      8K rw---  /lib/tls/i686/cmov/libdl-2.3.6.so
b7ee2000    224K r-x--  /lib/libncurses.so.5.5
b7f1a000     32K rw---  /lib/libncurses.so.5.5
b7f22000      4K rw---    [ anon ]
b7f2f000     24K r--s-  /usr/lib/gconv/gconv-modules.cache
b7f35000      8K rw---    [ anon ]
b7f37000      4K r-x--    [ anon ]
b7f38000     84K r-x--  /lib/ld-2.3.6.so
b7f4d000      8K rw---  /lib/ld-2.3.6.so
bfb11000     88K rw---    [ stack ]
 total     5800K

_ monit

本家は、(http://www.tildeslash.com/monit/) Barking at daemons というフレーズから、犬のイメージは番犬くんからか。良いイメージ戦略ですね。Web の 方は、ありがたいことに日本語で読める。(http://packages.debian.org/ja/etch/monit) 以下は、etch で monit の情報を取得した結果である。
$ apt-cache show monit
Package: monit
Priority: optional
Section: admin
Installed-Size: 664
Maintainer: Stefan Alfredsson < alfs@debian.org >
Architecture: i386
Version: 1:4.8.1-2.1
Depends: libc6 (>= 2.3.6-6), libssl0.9.8 (>= 0.9.8c-1)
Filename: pool/main/m/monit/monit_4.8.1-2.1_i386.deb
Size: 254726
MD5sum: 626ad3e4922d6aaafa3e9d875fed652a
SHA1: 46d5774046246ffb67364f6d4e909e2ad624775a
SHA256: 950a9e4f89a7365928bf05b7b474ef240eed8f12604aae422819a5dafc7c8d76
Description: A utility for monitoring and managing daemons or similar programs
 monit is a utility for monitoring and managing daemons or similar
 programs running on a Unix system. It will start specified programs
 if they are not running and restart programs not responding.
 .
 monit supports:
  * Daemon mode - poll programs at a specified interval
  * Monitoring modes - active, passive or manual
  * Start, stop and restart of programs
  * Group and manage groups of programs
  * Process dependency definition
  * Logging to syslog or own logfile
  * Configuration - comprehensive controlfile
  * Runtime and TCP/IP port checking (tcp and udp)
  * SSL support for port checking
  * Unix domain socket checking
  * Process status and process timeout
  * Process cpu usage
  * Process memory usage
  * Process zombie check
  * Check the systems load average
  * Check a file or directory timestamp
  * Alert, stop or restart a process based on its characteristics
  * MD5 checksum for programs started and stopped by monit
  * Alert notification for program timeout, restart, checksum, stop
    resource and timestamp error
  * Flexible and customizable email alert messages
  * Protocol verification. HTTP, FTP, SMTP, POP, IMAP, NNTP, SSH, DWP,
    LDAPv2 and LDAPv3
  * An http interface with optional SSL support to make monit
    accessible from a webbrowser
Tag: admin::monitoring, interface::daemon, network::hiavailability, network::server, role::program, use::monitor , works-with::software:running
本日のツッコミ(全2件) [ツッコミを入れる]
_ n_saito (2008-08-21 23:53)

apt-get install dlocate<br>dlocate bin/sysctl<br>(ぼそ

_ yabuki (2008-08-22 00:22)

別解で、apt-file search や、auto-aptもいかがというフィードバックは別の場所でもらいました。<br><br>dpkg -S bin/sysctl の良い所は、かならず入っていて、追加でインストールするところですが、毎回ファイルをなめにいくので遅い。locate系はdbに入っているから答えを得るのが早いのが利点ですよね。