Yukiharu YABUKI の tDiary
このtDiaryを検索します。
2008-08-21 [長年日記]
_ Debian で sysctl のソースが見たくなったら、どうするのか。
まずは、sysctl がどのパッケージに属しているのか確認します。dpkg -S sysctl | grep bindpkg -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
apt-get install dlocate<br>dlocate bin/sysctl<br>(ぼそ
別解で、apt-file search や、auto-aptもいかがというフィードバックは別の場所でもらいました。<br><br>dpkg -S bin/sysctl の良い所は、かならず入っていて、追加でインストールするところですが、毎回ファイルをなめにいくので遅い。locate系はdbに入っているから答えを得るのが早いのが利点ですよね。