Open Source WEB




2006-02-28 [FYI] Apacheの設定を調べる

Apacheの設定をいろいろ試したいとき,おもわずググッてしまうそこの貴方 (って儂のこと? ^^;).

自信を持ってApacheを操るために によれば,

  • マニュアルは最低1回,目を通す
  • 設定ファイルはコンテクストを意識する
  • まずデフォルトの httpd.conf を捨てる
  • Apacheは"モジュール"が命

とのこと.この文書,一読をおすすめします.

via どーんとやってみよう

--nobsun


Name:
Comment:

There is no comment.


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. 指定したシグナルの配送はブロックされる
  2. シグナルハンドラが終了
  3. ブロックされていたシグナルが送られてくる
  4. シグナルハンドラ起動 -> (1) へ

でループする.

実験するときSIGINTを指定すると Control-C で止められなくなるので気をつけてね.

ふつうのLinuxプログラミング読書会 で出た話題.

--nobsun


Name:
Comment:
tffycmkfgm: (Tue Jun 28 23:46:28 2011 )
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
cqleaijgzl: (Wed Jun 29 19:10:47 2011 )
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
bivcqhlypc: (Fri Sep 9 23:37:53 2011 )
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
bivcqhlypc: (Fri Sep 9 23:38:43 2011 )
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
sdgueuremy: (Sun Nov 27 07:53:25 2011 )
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
dcsmkyosrw: (Sun Nov 27 17:14:39 2011 )
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
jssmmemoup: (Tue Nov 29 09:14:46 2011 )
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
egvxfeffnu: (Tue Nov 29 10:56:32 2011 )
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
roqulntyro: (Tue Nov 29 12:36:47 2011 )
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
qtmomxtgzi: (Tue Nov 29 14:17:12 2011 )
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
qvuizplxmx: (Tue Nov 29 15:58:53 2011 )
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
mzkgagowib: (Tue Nov 29 17:38:34 2011 )
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
ngqewsvnal: (Tue Nov 29 19:18:47 2011 )
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
lrqxiqwfdt: (Thu Jan 5 22:25:11 2012 )
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
domclaocts: (Thu Jan 19 06:05:29 2012 )
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
wohadwyegj: (Thu Jan 19 07:21:30 2012 )
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
tboqnggfzg: (Thu Jan 19 08:37:00 2012 )
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
noqgqtjmwd: (Mon Jan 30 02:40:54 2012 )
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
hulcfsmfae: (Mon Jan 30 05:48:38 2012 )
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel


2006-02-24 [Hacker] コードリーディング

Hacker(Cracker のことじゃないよ!)になるは,プログラムコードをたくさん 読むことが大切.っていうけど,ほんまもんの Hacker はどんな風にコードを 読むんだろう.

なんと,これを観賞できる(もちろん観賞が目的ではないでしょうが) サイトがある.

IPAで行われている「電子政府に用いられるOSのセキュリティ品質評価方法に 関する調査研究」のなかで 『ソフトウェアのソースコードを読解・批評する方法論の確立を目指して』おこなわれている活動 がある.メンバがコードを読むところが日誌 に記録されている.

これがまたメチャメチャ凄くて面白い.

--nobsun


Name:
Comment:

There is no comment.


2006-02-23 [FYI] 情報セキュリティ対策 実践情報

情報セキュリティ技術についても,IPA セキュリティセンターのサイトが非常 に勉強になります.

--nobsun


Name:
Comment:

There is no comment.


2006-02-22 [FYI] PKI関連技術

PKIの技術は安全で信頼できるサービスを提供するために不可欠な技術ですが, 知識があやふやだったりして実装時やテスト時にあわててしらべるなんて,泥 縄をやってしまいます.

そんなときに情報がよくまとまってわかりやすいのは IPA セキュリティセン ターのサイトです.とくに

--nobsun


Name:
Comment:

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


Name:
Comment:

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) からの秒数)に変換するには、

  1. date->time-utc関数でSRFIの<time>型に変換する
  2. 2をtime->seconds関数でPOSIX時間に変換する。
(time->seconds (date->time-utc today))

--yasuyuki


Name:
Comment:

There is no comment.


2006-02-17 [Gauche] POSIX時間をSRFI-19の<date>型に変換する

POSIX時間(エポック(00:00:00 UTC, January 1, 1970) からの秒数)を SRFI-19の<date>型に変換するには、

  1. seconds->time関数でSRFIの<time>型に変換する
  2. 1をtime-utc->date関数で<date>型に変換する
(use srfi-19)

(time-utc->date (seconds->time (sys-time)))

--yasuyuki


Name:
Comment:

There is no comment.


2006-02-16 [misc] リンク切れのシンボリックリンクを削除する

たとえば,ホームディレクトリ以下にあるすべてのサブディレクトリですべて のリンク切れしたシンボリックリンクを削除する.

% find ~/ -xtype l -exec rm {} \;

っと...symlinksというのがあった orz

--nobsun


Name:
Comment:
takaBSD: (Thu Feb 16 18:27:24 2006 )
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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

There is no comment.


2006-02-06 [Gauche] スレッドとシグナルマスクとプロセス

Gaucheには高レベルのスレッドAPIとプロセスAPIが用意されていて便利.

ただし,

Gaucheでは、make-thread(スレッド手続き参照) で作られた全てのスレッドは、 デフォルトで全てのシグナル(予約済みを除く) をブロックします。これは、 全てのシグナルがメインスレッドへ送られるということです。

というのに注意.make-threadの中で,なにもせずに run-process を呼ぶとシグナルマスク が引き継がれて,SIGTERMで死なないプロセスができてしまう.

--nobsun


Name:
Comment:
nobsun: (Mon Feb 6 14:37:05 2006 )
run-process にシグナルマスクを引数として渡せると便利かも?
shiro: (Thu Feb 9 05:45:42 2006 )
あーなるほど。sigprocmaskしてからexecするまでの間にハザードが出来るけど、fork -> シグナルハンドラ削除 -> sigprocmask -> exec とすればいいかな。


2006-02-03 [Gauche] サーバーの負荷を調べる

Gaucheでは、sys-getloadavg関数が使える。

$ gosh
gosh> (sys-getloadavg)
(0.97 1.04 1.04)

--yasuyuki


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:
shibata: (Thu Feb 2 13:15:25 2006 )
Mac OS Xだと微妙に表示が違くてイヤんですね。
$ uptime
12:20  up 21 days, 17:14, 3 users, load averages: 0.02 0.01 0.00
び: (Mon Feb 6 09:52:34 2006 )
NetBSDだとさらにちょっと違ってます。AM/PMは勘弁して欲しいと思う。
% uptime
 9:51AM  up 8 days, 19:01, 1 user, load averages: 0.08, 0.11, 0.08


このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us