Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
- 2004: 01 02 03 04 05 06 07 08 09 10 11 12
- 2005: 01 02 03 04 05 06 07 08 09 10 11 12
- 2006: 01 02 03 04 05 06 07 08 09 10 11 12
- 2006-02-28 [FYI] Apacheの設定を調べる
- 2006-02-27 [C] シグナル処理
- 2006-02-24 [Hacker] コードリーディング
- 2006-02-23 [FYI] 情報セキュリティ対策 実践情報
- 2006-02-22 [FYI] PKI関連技術
- 2006-02-21 [sarge] コンソールで日本語表示
- 2006-02-20 [Gauche] SRFI-19の<date>型をPOSIX時間に変換する
- 2006-02-17 [Gauche] POSIX時間をSRFI-19の<date>型に変換する
- 2006-02-16 [misc] リンク切れのシンボリックリンクを削除する
- 2006-02-15 [Gauche] パッケージシステム gauche-package
- 2006-02-14 [misc] 整数除算
- 2006-02-13 [sslclient] 認証局チェーンを使う
- 2006-02-10 [OpenSSL] CApath に置く証明書ファイルの名前
- 2006-02-09 [mod_ssl] SSLVerifyDepthディレクティブ
- 2006-02-08 [OpenSSL] SSLクライアントのテスト
- 2006-02-07 [OpenSSL] Apache (mod_ssl) サーバをテストする
- 2006-02-06 [Gauche] スレッドとシグナルマスクとプロセス
- 2006-02-03 [Gauche] サーバーの負荷を調べる
- 2006-02-02 [C] サーバーの負荷を調べる
- 2006-02-01 [command] サーバーの負荷を調べる
2006-02-28 [FYI] Apacheの設定を調べる
Apacheの設定をいろいろ試したいとき,おもわずググッてしまうそこの貴方 (って儂のこと? ^^;).
自信を持ってApacheを操るために によれば,
- マニュアルは最低1回,目を通す
- 設定ファイルはコンテクストを意識する
- まずデフォルトの httpd.conf を捨てる
- Apacheは"モジュール"が命
とのこと.この文書,一読をおすすめします.
via どーんとやってみよう
--nobsun
2006-02-27 [C] シグナル処理
実験: シグナルハンドラの中からtrapしたシグナルと同種のシグナルを自分にむ かって投げるとどうなる?
#include <stdio.h>
#include <signal.h>
void handle(int sig)
{
static int i = 0;
printf("%d, %d\n", sig, i);
kill(getpid(), sig);
i++;
}
int main()
{
struct sigaction act, old;
act.sa_handler = handle;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_RESTART;
sigaction(SIGTERM, &act, &old);
return printf("test %d\n", kill(getpid(), SIGTERM));
}
- 指定したシグナルの配送はブロックされる
- シグナルハンドラが終了
- ブロックされていたシグナルが送られてくる
- シグナルハンドラ起動 -> (1) へ
でループする.
実験するときSIGINTを指定すると Control-C で止められなくなるので気をつけてね.
ふつうのLinuxプログラミング読書会 で出た話題.
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-02-24 [Hacker] コードリーディング
Hacker(Cracker のことじゃないよ!)になるは,プログラムコードをたくさん 読むことが大切.っていうけど,ほんまもんの Hacker はどんな風にコードを 読むんだろう.
なんと,これを観賞できる(もちろん観賞が目的ではないでしょうが) サイトがある.
IPAで行われている「電子政府に用いられるOSのセキュリティ品質評価方法に 関する調査研究」のなかで 『ソフトウェアのソースコードを読解・批評する方法論の確立を目指して』おこなわれている活動 がある.メンバがコードを読むところが日誌 に記録されている.
これがまたメチャメチャ凄くて面白い.
--nobsun
There is no comment.
2006-02-23 [FYI] 情報セキュリティ対策 実践情報
情報セキュリティ技術についても,IPA セキュリティセンターのサイトが非常 に勉強になります.
--nobsun
There is no comment.
2006-02-22 [FYI] PKI関連技術
PKIの技術は安全で信頼できるサービスを提供するために不可欠な技術ですが, 知識があやふやだったりして実装時やテスト時にあわててしらべるなんて,泥 縄をやってしまいます.
そんなときに情報がよくまとまってわかりやすいのは IPA セキュリティセン ターのサイトです.とくに
--nobsun
There is no comment.
2006-02-21 [sarge] コンソールで日本語表示
Debian はサーバ用途で使うことが多いので,X Window のデスクトップ環境を インストールしないことが多い.日本語が使いたいときに意外に情報が少ない 気がする.(単に探索能力がないのでは...> 儂)
武藤さんの日記 にちゃんとした情報がある.
# modprobe vga16fb
linux-2.6 をインストールしている場合はさらに
# modprobe fbcon
こうしておいて,
$ jfbterm -q -c other,EUC-JP,iconv,UTF-8
--nobsun
There is no comment.
2006-02-20 [Gauche] SRFI-19の<date>型をPOSIX時間に変換する
現在時刻を元に<date>型データを生成しtodayという名前をつけておく。
(use srfi-19) (define today (time-utc->date (seconds->time (sys-time))))
POSIX時間(エポック(00:00:00 UTC, January 1, 1970) からの秒数)に変換するには、
- date->time-utc関数でSRFIの<time>型に変換する
- 2をtime->seconds関数でPOSIX時間に変換する。
(time->seconds (date->time-utc today))
--yasuyuki
There is no comment.
2006-02-17 [Gauche] POSIX時間をSRFI-19の<date>型に変換する
POSIX時間(エポック(00:00:00 UTC, January 1, 1970) からの秒数)を SRFI-19の<date>型に変換するには、
- seconds->time関数でSRFIの<time>型に変換する
- 1をtime-utc->date関数で<date>型に変換する
(use srfi-19) (time-utc->date (seconds->time (sys-time)))
--yasuyuki
There is no comment.
2006-02-16 [misc] リンク切れのシンボリックリンクを削除する
たとえば,ホームディレクトリ以下にあるすべてのサブディレクトリですべて のリンク切れしたシンボリックリンクを削除する.
% find ~/ -xtype l -exec rm {} \;
っと...symlinksというのがあった orz
--nobsun
FreeBSD 5.4 では、「-xtype」というオプションも、symlinks もありません... orz Linux と同じ GNU の find を使うには、ports から misc/findutils をインストールしないといけません。gfind としてインストールされますが。 symlinks は、sysutils/symlinks をインストールします。
2006-02-15 [Gauche] パッケージシステム gauche-package
Gauche のディストリビューションには gauche-package というユーティリティ が附属している.すでにこのコラムでも2005-11-18とか 2005-11-21などで使われている.
% gauche-package install -C "--prefix=$HOME --with-cgidir=$HOME/public_html" http://www.kahua.org/download/kahua/Kahua-0.3.5-spvr-mt.tgz
のようにつかう.-C オプションでは configure スクリプトに渡すオプション を指定できる.
--nobsun
There is no comment.
2006-02-14 [misc] 整数除算
被除数と除数がともに正の場合にはあまり気にならないが,どちらかあるいは 両方が負の場合には,商や余りの符号が気になる.
Cだと
#include <stdio.h>
int
main ()
{
int m = 5;
int n = 3;
printf("(%d %d) (%d %d)\n", m, n, m/n , m%n );
printf("(%d %d) (%d %d)\n", -m, n, (-m)/n , (-m)%n );
printf("(%d %d) (%d %d)\n", m, -n, m/(-n), m%(-n));
printf("(%d %d) (%d %d)\n", -m, -n, (-m)/(-n), (-m)%(-n));
return 0;
}
というコードで調べると手元の計算機では
(5 3) (1 2) (-5 3) (-1 -2) (5 -3) (-1 2) (-5 -3) (1 -2)
という出力になる.ところがなんと,これは C99 より前は実装依存だったらしい. C99の規格では上のようになることが定められているらしい.
上の場合,余りの符号は被除数の符号と一致する.
あまり機会はないが,多倍長の整数除算を設計する場合には余りの符号が除数 の符号と一致する除算の方が便利である.このような除算法を non-restoring division というらしい.
Gauche や Ruby や Haskell などの言語では両方用意されている. たとえば Haskell だと
Prelude> mapM_ print $ [((x,y),(quotRem x y))| x <- [5,-5], y <- [3,-3]] ((5,3),(1,2)) ((5,-3),(-1,2)) ((-5,3),(-1,-2)) ((-5,-3),(1,-2)) Prelude> mapM_ print $ [((x,y),(divMod x y))| x <- [5,-5], y <- [3,-3]] ((5,3),(1,2)) ((5,-3),(-2,-1)) ((-5,3),(-2,1)) ((-5,-3),(1,-2))
--nobsun
There is no comment.
2006-02-13 [sslclient] 認証局チェーンを使う
お手軽(本当かなぁ?)SSLクライアントラッパーsslclientで認証局チェーンを 使うときは,-A オプションで認証局証明書格納ディレクトリを指定して, -V オプションで検証深度を指定する.たとえば,
% sslclient -V 3 -A /etc/ssl/ca -c /etc/ssl/ca/client.crt -k /etc/ssl/ca/client.key server.example.com 443 ./client-program
こんな感じ.-c オプションはサーバから要求された場合に送るクライアント 証明書,-k オプションはそれに対応するクライアントの秘密鍵.
--nobsun
There is no comment.
2006-02-10 [OpenSSL] CApath に置く証明書ファイルの名前
opensslコマンドで指定する -CApath や Apache の mod_ssl の設定中の SSLCACertificatePath ディレクティブで指定するパスに置く証明書の名前に は決まりがあって,証明書発行者名のハッシュ+.0 でなくてはならない. これをつくるには以下のようなシェルスクリプトを使う.
#!/bin/sh
#
# usage: certlink.sh filename [filename ...]
for CERTFILE in $*; do
# make sure file exists and is a valid cert
test -f "$CERTFILE" || continue
HASH=$(openssl x509 -noout -hash -in "$CERTFILE")
test -n "$HASH" || continue
# use lowest available iterator for symlink
for ITER in 0 1 2 3 4 5 6 7 8 9; do
test -f "${HASH}.${ITER}" && continue
ln -s "$CERTFILE" "${HASH}.${ITER}"
test -L "${HASH}.${ITER}" && break
done
done
--nobsun
There is no comment.
2006-02-09 [mod_ssl] SSLVerifyDepthディレクティブ
SSLクライアント認証する場合,SSLVerifyClientディレクティブを require にし,SSLCACertificateFileディレクティブでクライアントの証明書を検証す るためのCAのファイルをするのだが,認証局チェーンをつかっている場合には SSLCACertificatePathディレクティブとSSLVerifyDepthディレクティブを適切 に指定する必要がある.
SSLVerifyDepth はデフォルトでは 1 だが,認証局チェーンが使われていると きにはその最大の長さ以上を指定しておかないといけない.
SSLCACertificatePath /etc/ssl SSLVerifyClient require SSLVerifyDepth 5
--nobsun
There is no comment.
2006-02-08 [OpenSSL] SSLクライアントのテスト
クライアントのSSL接続のテストするときにも,openssl コマンドラインツー ルが使える.
openssl s_server -accept 4433 -cert server.crt -key server.key -Verify 3 -CApath /etc/ssl
などとやると
verify depth is 3, must return a certificate Using default temp DH parameters ACCEPT
と出力されて接続まち状態になる.たとえば,これに
openssl s_client -connect 127.0.0.1:4433 -CApath ~/ca -verify 3 -cert ~/ca/client.crt -key ~/ca/client.key
と接続してみると
depth=2 /C=JP/ST=... verify return:1 depth=1 /C=JP/ST=... verify return:1 depth=0 /C=JP/ST=... verify return:1 -----BEGIN SSL SESSION PARAMETERS----- MIIDDgIBAQICAwEEAgA5BCAiH2CmaoP7dAO5HX577BGzFaO0v5ZxO+lcmG25A8nk QAQwKTlHpJkXnpwZMESjgY6NkyO1T/8xZZtP0Xbbin4mw3uX1xA3LHIg7lSKesXS VhZmoQYCBEPv9kGiBAICASyjggKVMIICkTCCAfqgAwIBAgIBATANBgkqhkiG9w0B AQUFADCBhTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBUNoaWJhMQ4wDAYDVQQHEwVJ bnphaTESMBAGA1UEChMJU2FtcG91T3JnMQswCQYDVQQLEwJDQTERMA8GA1UEAxMI Y2xpZW50Q0ExIjAgBgkqhkiG9w0BCQEWE2NsaWVudGNhQHNhbXBvdS5vcmcwHhcN MDYwMjEzMDEzNTU5WhcNMTYwMjExMDEzNTU5WjCBhDELMAkGA1UEBhMCSlAxDjAM BgNVBAgTBUNoaWJhMQ4wDAYDVQQHEwVJbnphaTESMBAGA1UEChMJU2FtcG91T3Jn MQswCQYDVQQLEwJFRTESMBAGA1UEAxMJMTI3LjAuMC4xMSAwHgYJKoZIhvcNAQkB FhFjbGllbnRAc2FtcG91Lm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA k74Psul8d1B58gV14KlbChdP77nPLxixH9xCZ+wXStL1OmlvQnKKvPjxPcCk+b9Q k0RhOJ0u/V5paN3z0ytkpzIVbT08zKVNKfgLEzjVFKrzSAvjSctFXcjplQoMIPJA 72ie6JB9zj9bLj/OoQ40z+K1Of7NrvG/kcMLQogT3NsCAwEAAaMQMA4wDAYDVR0T BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQDHlp4wx7HpzVWD0TEdPJAIhGvuy5EV FqyhyHpdOns5i2jWENlw4YqG9yQ5F6qDUjOKPBAxeZZigh93v+h2mYheYA+3po68 y+AdJRmEE9f20pSoHBrfVH2ldrPsrUMQQ8RUgxFgFWvBfHHBgM8gdYYTnNR7Ye/s rOpYDKeMs6TTyaQGBAQBAAAA -----END SSL SESSION PARAMETERS----- Client certificate -----BEGIN CERTIFICATE----- MIICkTCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCSlAx DjAMBgNVBAgTBUNoaWJhMQ4wDAYDVQQHEwVJbnphaTESMBAGA1UEChMJU2FtcG91 T3JnMQswCQYDVQQLEwJDQTERMA8GA1UEAxMIY2xpZW50Q0ExIjAgBgkqhkiG9w0B CQEWE2NsaWVudGNhQHNhbXBvdS5vcmcwHhcNMDYwMjEzMDEzNTU5WhcNMTYwMjEx MDEzNTU5WjCBhDELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBUNoaWJhMQ4wDAYDVQQH EwVJbnphaTESMBAGA1UEChMJU2FtcG91T3JnMQswCQYDVQQLEwJFRTESMBAGA1UE AxMJMTI3LjAuMC4xMSAwHgYJKoZIhvcNAQkBFhFjbGllbnRAc2FtcG91Lm9yZzCB nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk74Psul8d1B58gV14KlbChdP77nP LxixH9xCZ+wXStL1OmlvQnKKvPjxPcCk+b9Qk0RhOJ0u/V5paN3z0ytkpzIVbT08 zKVNKfgLEzjVFKrzSAvjSctFXcjplQoMIPJA72ie6JB9zj9bLj/OoQ40z+K1Of7N rvG/kcMLQogT3NsCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUF AAOBgQDHlp4wx7HpzVWD0TEdPJAIhGvuy5EVFqyhyHpdOns5i2jWENlw4YqG9yQ5 F6qDUjOKPBAxeZZigh93v+h2mYheYA+3po68y+AdJRmEE9f20pSoHBrfVH2ldrPs rUMQQ8RUgxFgFWvBfHHBgM8gdYYTnNR7Ye/srOpYDKeMs6TTyQ== -----END CERTIFICATE----- subject=/C=JP/ST=... issuer=/C=JP/ST=... Shared ciphers:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:DHE-DSS-RC4-SHA:RC4-SHA:RC4-MD5:EXP1024-DHE-DSS-DES-CBC-SHA:EXP1024-DES-CBC-SHA:EXP1024-RC2-CBC-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP1024-DHE-DSS-RC4-SHA:EXP1024-RC4-SHA:EXP1024-RC4-MD5:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5 CIPHER is DHE-RSA-AES256-SHA
のように表示され,SSL接続されたことがわかる.
--nobsun
There is no comment.
2006-02-07 [OpenSSL] Apache (mod_ssl) サーバをテストする
OpenSSL のコマンドラインツールを使うとSSLサーバとの通信をテストできる.
% openssl s_client -connect www-ssl.example.com:443 -CApath /etc/ssl -verify 3 -cert ~/ssl/my.crt -key ~/ssl/my.key
-CApathはサーバ側の証明書がチェーンになっている場合,中間のCAの証明書 を置くパスを指定している.-verifyオプションでしらべるチェーン長さを指 定する.これが実際のチェーンの長さ以下だと検証が失敗する.ただし,こ のツールでは接続を続けることができる.コマンドラインオプションの -cert 以降はサーバ側でクライアントの証明書を要求しているときに必要.
上のようにタイプすると,たとえば,以下のような応答が表示される.
verify depth is 3
CONNECTED(00000003)
depth=2 /C=JP/ST=...
verify return:1
depth=1 /C=JP/ST=...
verify return:1
depth=0 /C=JP/ST=...
verify return:1
---
Certificate chain
0 s:/C=JP/ST=...
i:/C=JP/ST=...
1 s:/C=JP/ST=...
i:/C=JP/ST=...
2 s:/C=JP/ST=...
i:/C=JP/ST=...
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICkTCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCSlAx
DjAMBgNVBAgTBUNoaWJhMQ4wDAYDVQQHEwVJbnphaTESMBAGA1UEChMJU2FtcG91
T3JnMQswCQYDVQQLEwJDQTERMA8GA1UEAxMIc2VydmVyQ0ExIjAgBgkqhkiG9w0B
CQEWE3NlcnZlcmNhQHNhbXBvdS5vcmcwHhcNMDYwMjEzMDEzNTUzWhcNMTYwMjEx
MDEzNTUzWjCBhDELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBUNoaWJhMQ4wDAYDVQQH
EwVJbnphaTESMBAGA1UEChMJU2FtcG91T3JnMQswCQYDVQQLEwJFRTESMBAGA1UE
AxMJMTI3LjAuMC4xMSAwHgYJKoZIhvcNAQkBFhFzZXJ2ZXJAc2FtcG91Lm9yZzCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArbbiABh0OmJWx8GHdujolvtEYZxz
rsREwsHqUYty2cN99CegnAWUNKkflwmUTEmLM+KzsWxaGclU5RSuyp6/V+u79i9n
8Zus0bVUYqfsxmvStKYOc40LfHbUBK21lvC/88SMVdID6hKPHgQ9w8WQAMSGQJbv
pBlmS4gxijWb6w0CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUF
AAOBgQAp6ZKXmVzYqiwinD81TZNEepXDX2Plj8mW+Ckwv0WhXpRJdVvDf6s33R+/
/2MgaECs7RzOAgReexzljpyWkwEr34J2DAGlelhANMdfCQ8aif0jt3V/OMtGyulA
xuQ44aGOsnGplwGUgFsJBv8KCkM2WJzqe2HY6jf1xItG85dafw==
-----END CERTIFICATE-----
subject=/C=JP/ST=...
issuer=/C=JP/ST=...
---
Acceptable client certificate CA names
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
/C=JP/ST=...
---
SSL handshake has read 3973 bytes and written 2699 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID:
Session-ID-ctx:
Master-Key: E5DF1CD6CFE2B222E75F501ED785370429CB85C1E14D9F6F3E77B894222A50117508126E315B50CFA5A8329EB156C758
Key-Arg : None
Start Time: 1139800588
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
これでSSL接続ができたことがわかる.この後はふつうの通信と同じよう使え るので,たとえば,
GET / HTTP/1.0
と(GET ... の行の後に空行)入力すると
HTTP/1.1 200 OK Date: Mon, 13 Feb 2006 02:45:45 GMT Server: Apache/1.3.33 (Debian GNU/Linux) mod_ssl/2.8.24 OpenSSL/0.9.7g Last-Modified: Thu, 09 Feb 2006 00:09:10 GMT ETag: "8ec32-62-43ea8826" Accept-Ranges: bytes Content-Length: 98 Connection: close Content-Type: text/html; charset=iso-8859-1 <html> <head> <title>test page</title> </head> <body> <p> <h1>test page</h1> </p> </body> </html>
のようなレスポンスがかえってくる.最後に
closed
と表示されておわり.
--nobsun
There is no comment.
2006-02-06 [Gauche] スレッドとシグナルマスクとプロセス
Gaucheには高レベルのスレッドAPIとプロセスAPIが用意されていて便利.
ただし,
Gaucheでは、make-thread(スレッド手続き参照) で作られた全てのスレッドは、 デフォルトで全てのシグナル(予約済みを除く) をブロックします。これは、 全てのシグナルがメインスレッドへ送られるということです。
というのに注意.make-threadの中で,なにもせずに run-process を呼ぶとシグナルマスク が引き継がれて,SIGTERMで死なないプロセスができてしまう.
--nobsun
run-process にシグナルマスクを引数として渡せると便利かも?
あーなるほど。sigprocmaskしてからexecするまでの間にハザードが出来るけど、fork -> シグナルハンドラ削除 -> sigprocmask -> exec とすればいいかな。
2006-02-03 [Gauche] サーバーの負荷を調べる
Gaucheでは、sys-getloadavg関数が使える。
$ gosh gosh> (sys-getloadavg) (0.97 1.04 1.04)
--yasuyuki
There is no comment.
2006-02-02 [C] サーバーの負荷を調べる
uptimeコマンドは、UNIXシステムコールのgetloadovg()関数を呼んでいるらしい。
$ man getloadavg
GETLOADAVG(3) System Library Functions Manual GETLOADAVG(3)
NAME
getloadavg - get system load averages
SYNOPSIS
#include <stdlib.h>
int
getloadavg(double loadavg[], int nelem);
DESCRIPTION
The getloadavg() function returns the number of processes in the system
run queue averaged over various periods of time. Up to nelem samples are
retrieved and assigned to successive elements of loadavg[]. The system
imposes a maximum of 3 samples, representing averages over the last 1, 5,
and 15 minutes, respectively.
DIAGNOSTICS
If the load average was unobtainable, -1 is returned; otherwise, the num-
ber of samples actually retrieved is returned.
SEE ALSO
uptime(1), proc(5)
HISTORY
The getloadavg() function appeared in 4.3BSD-Reno.
4.3 Berkeley Distribution June 4, 1993 4.3 Berkeley Distribution
--yasuyuki
There is no comment.
2006-02-01 [command] サーバーの負荷を調べる
Linux以外のOSには/proc/loadavgは存在しないようだが、 負荷を調べるにはuptimeコマンドが使える。
$ uptime 14:44:56 up 94 days, 1:31, 3 users, load average: 1.43, 1.17, 1.07
最後の3つの数字が1分、5分、15分平均負荷である。
--yasuyuki
Mac OS Xだと微妙に表示が違くてイヤんですね。 $ uptime 12:20 up 21 days, 17:14, 3 users, load averages: 0.02 0.01 0.00
NetBSDだとさらにちょっと違ってます。AM/PMは勘弁して欲しいと思う。 % uptime 9:51AM up 8 days, 19:01, 1 user, load averages: 0.08, 0.11, 0.08
There is no comment.