数世代前のスペックのマシンを使う理由
ソフトは人間からの命令をハードに伝えるものであり、ハードに近いソフトを使用することで、人間はよりハードに近い命令を意識して、つまりより具体的に命令を行うようになるから。
常々思っていることは、処理を短時間で完了させるという点において最も大きなボトルネックになっているものは人間の処理だ、ということだ。おそらく、10年前のコンピュータと現在のコンピュータでは処理速度に雲泥の差があるだろう、しかし、10年前の人間のタイプ速度と現在の人間のタイプ速度ではそんなに変らないのではないだろうか。100年たっても人間がコンピュータに命令を出すスピードはそんなに変らないのではないかとおもう。
現在のコンピュータはCPUやメモリといったハードに近い部分からアプリケーションといったソフトに近い部分までがモデラートな階層構造をなし、各層が独立して処理を行い、各層は互いの処理内容を知らなくても正しく処理が行われるようになっている。人間はハードから最も遠い場所、ソフトに最も近い場所、から命令を出す。人間の出した命令はハードにつながる各層のソフトを通じてハードに伝達される。ハードは単純な命令しか受け取れない、たとえば、ANDやORといった2項の演算だ。多くの人間はマウスを動かして画面上の矢印を移動させる時にANDやORを意識することは無いだろう。マウスを右に動かすというハードから見れば曖昧この上ないアクションを解釈してハードに具体的な命令として伝達しハードからのリアクションを人間に伝達するのは全てソフトの仕事である。
ソフトは人間からの曖昧な命令をハードに伝える役割をしている。ソフトウェアの開発とは人間からの曖昧な命令をハードへ伝えるための具体的な命令へと変換する翻訳機能を実装することである。軽いといわれているソフトはこの翻訳作業が速いのである。人間にとってはほとんど見分けが付かないようなごまかしを行うこともあるだろう。ソフトの工夫はハードの工夫を凌駕すると期待しているからだ。CPUは1年で倍のスピードになるかもしれない、新しいアーキテクチャで数倍の処理速度を手に入れることができるかもしれない。良いハードを求める理由はなんだろうか。それは処理に時間がかかかるようになったから。短時間で処理を完了させるために必要なのは良いハードであり良いソフトだ。
ディストリビューションを選ぶ
非力なコンピュータで動く、日本語の表示、日本語の入力。この3点が順番で優先順位になるかな。いろいろ探してみて、世の中には非力なコンピュータで動くLinuxは結構数があることがわかった。メインストリームではないので、問題が生じたときに困るかもしれないけどね。日本語化が進んでいるディストリビューションを幾つか見つけた。一つは、Damn Small Linuxで、もう一つはPuppy Linuxだ。Damn Small Linuxを使ってみたが、良いできだと思う。Puppy Linuxは使っていないので良くわからない。
Damn Small Linuxはパッケージ管理がDebian(apt)系のディストリビューションらしく、aptで初期に導入されているアプリケーションの削除や変更ができそうだ。この点は非常に気に入った。カーネルが2.4と古いのは旧式のコンピュータで使われることを意識しているらしい。日本語の表示はほとんどWebページを見るときにしか使わないので、アプリケーションのメニューの翻訳が気に入らないとかそのようなことは気にしていない。WebブラウザはDilloというブラウザらしく、これに日本語表示のパッチが当たったものらしい。確かに日本語表示ができた。それ以外にもFireFoxが載っていたが、元来FireFoxは使ったためしが無いので使い勝手という点の評価はできない。viもあったので日本語入力してみた。入力した文字のコードは忘れたが、euc-JPでもUTF-8でもなかった。確か、ISOなんとかという感じの名前だったと思う。日本語に対応していないエディタで日本語入力をすると、1回のバックスペース操作で1バイトしか削除してくれないことがあるけど、そんなことも無かったと思う。結局HDDは500MBくらい消費されたと思う。これ以外のディストリビューションでどうしてHDDがいっぱいになってしまうのか不思議なくらいだ。今まで知らなかったJWMというウィンドウマネージャはFluxBoxよりも軽いそうな。あと、やっぱり容量に気を使っているせいなのか、busyboxを使ってる。できはとてもいいと思う。僕の環境だけかもしれないパッケージのアップグレードができないという点を除けば。というか僕に解決するだけのスキルが無いだけなのかもしれないが。
Damn Small Linuxの場合
僕のマシンだけかもしれないが、このディストリビューションを使う場合に気をつけておかねばならない点がある。それは、apt-get dist-upgradeとapt-get upgradeをするなということだ。それ以外は普通だと思う。もしapt経由でプログラムのインストールができなかったら、このディストリビューションを使う理由は無いもの。
HDDへのインストールがすんだらしておくこと
aptを使えるようにしておくこと。メニューの中にあるaptなんとかという項目を押す。と、apt lineが/etc/apt/sources.listに書き込まれる。これをする前は、そもそもsources.listが存在しない。このあとapt-get upgradeとするとだめだということは前に述べた。どのような症状が起こるかといえば、PCMCIAが使用中だといわれて、PCMCIAに関連するアップデートがうまくいかない。このときaptは強制終了される。さらにupgradeしようとすると、依存関係の解決できない問題が発生し、強制終了。このときapt-get -f installすると解決するかもしれないと言われたので、依存関係に問題のあったパッケージを強制的にインストールする。これでも変化なし。どうしようもなくなったので、apt-det dist-upggradeしてみた。より多くのパッケージが自動的に選択され、インストールが始まる。今度はPCMCIAの問題が出る以前にxlib-data関係の問題が出てさらに強制終了。
pdf-japaneseの導入
まずはインストール。xpdfは最初から入っていたが、この機会に入れておこう、アップグレードの代わりだ。
# apt-get xpdf-japnese xpdf
インストールの直後では日本語を含むpdfファイルを開いても日本語が表示されない。日本語表示のためにxpdfrc-japaneseをつかう。
ln -s /etc/xpdf/xpdfrc-japanese ~/.xpdfrc
編集内容は特にもんだいはなさそうだから、テンプレートのままで使うようにする。
tgifの導入
インストールから導入までまったく問題無し出力フォーマットのLaTeXeps形式とはプレビューをふくまないeps形式のことらしい。日本語でメニューが表示されるが、汚い。どこかで設定する場所があると思うのだけれど、その場所がわからない。これは宿題。
# apt-get install tgif
debian - デーモン起動を選択するにはupdate-rc.d
デーモンは削除したくない。でも、一時的に其の起動をやめさせたいときがある。たとえば、SGEの計算デーモンの起動に失敗してログインプロンプトが出てこないときとかにね。
まずはヘルプを呼んでみる。
# update-rc.d -h usage: update-rc.d [-n] [-f] <basename> remove update-rc.d [-n] <basename> defaults [NN | SS KK] update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] . -n: not really -f: force
デーモンの自動起動を止めさせたいプロセスを確認すると、動いていることがわかる。
# ps waxf | grep privoxy 13869 ? Ss 0:00 /usr/sbin/privoxy --pidfile /var/run/privoxy.pid --user privoxy /etc/privoxy/config
プロセスを終了させる。
# /etc/init.d/privoxy stop Stopping filtering proxy server: privoxy.
終了後に自動起動を止めさせるコマンドのドライラン。-fを使えと言われる。-fはシンボリックリンクの強制削除。
# update-rc.d -n privoxy remove update-rc.d: /etc/init.d/privoxy exists during rc.d purge (use -f to force)
ドライランを止めて-fオプションを付ける。これで終了。
# update-rc.d -f privoxy remove Removing any system startup links for /etc/init.d/privoxy ... /etc/rc0.d/K20privoxy /etc/rc1.d/K20privoxy /etc/rc2.d/S20privoxy /etc/rc3.d/S20privoxy /etc/rc4.d/S20privoxy /etc/rc5.d/S20privoxy /etc/rc6.d/K20privoxy
-fオプションは強制的にシンボリックリンクを削除するオプション、-nをするとドライラン(実行内容の表示だけで実際には何も行われない。)。
# update-rc.d -f segmasted remove # update-rc.d -f segexecd remove
- Kozupon.com - 不要なデーモンの停止とシステムのセキュアー化!
- Debianでの起動処理(init)とランレベル(rc.d)の制御
- VM + Deb + GE + OMPI - qzakuqの日記
- Fulldigit - update-rc.dコマンド
- update-rc.d - Google 検索
- TIPS/Linux/chkconfigとupdate-rc.d - masami Wiki*
- daemon?? update-rc.dの使い方
- [ThinkIT] 第3回:不必要な起動スクリプトの削除と起動プロセスとポートのチェック (1/2)
nslookupとかdigはbind-utilsに含まれる
nslookupはDNSサーバから受け取った情報を加工して出力している、digはしていない。ならばdigのほうが良いのではないかと思い、apt-cacheで探してみた。
$ apt-cache search dig | less
それらしきパッケージがないので、webで探す。どうやらdnsutilsというパッケージに含まれているようなのでこいつを導入。
$ su - # apt-cache search dnsutils
結構な数の依存パッケージがあるようですな。bind9-host libbind9-0 libdns22 libisc11 libisccc0 libisccfg1 liblwres9も導入される。
- Debian -- パッケージ内容検索結果 -- dig
- Debian -- etch の dnsutils パッケージに関する詳細
- dig debian - Google 検索
- [debian-users:42107] Re: dig, nslookup コマンドは使えない
- Debianでnslookupやdigが使えない場合 - RX-7乗りの適当な日々
- dig と nslookup をインストールする - make world
- 寂滅 - 毎日飲んでるよ , debian、digはどこに
eximの設定
exim4のログを見るとfrozenメールがあるようだ。
# tail /var/log/exim4/mainmog 2009-02-08 11:49:31 Start queue run: pid=5883 2009-02-08 11:49:31 1LUmyk-0005a1-Jg Message is frozen 2009-02-08 11:49:31 1LV9SH-00079P-D1 Message is frozen 2009-02-08 11:49:31 1LVVvp-00007d-NI Message is frozen 2009-02-08 11:49:31 1LU41c-0001ON-VV Message is frozen 2009-02-08 11:49:31 1LThY5-0006qr-2L Message is frozen 2009-02-08 11:49:31 1LUQVB-0003hd-WE Message is frozen 2009-02-08 11:49:31 1LVsPM-000183-JH Message is frozen 2009-02-08 11:49:31 End queue run: pid=5883
mailqでキューにたまったメールを見てみると確かにfrozenメールがある。
# mailq 6d 3.0K 1LThY5-0006qr-2L <root@(none> *** frozen *** root@(none 5d 3.0K 1LU41c-0001ON-VV <root@(none> *** frozen *** root@(none 4d 3.0K 1LUQVB-0003hd-WE <root@(none> *** frozen *** root@(none 3d 3.0K 1LUmyk-0005a1-Jg <root@(none> *** frozen *** root@(none 56h 3.0K 1LV9SH-00079P-D1 <root@(none> *** frozen *** root@(none 32h 3.0K 1LVVvp-00007d-NI <root@(none> *** frozen *** root@(none 8h 3.0K 1LVsPM-000183-JH <root@(none> *** frozen *** root@(none # ls /var/spool/exim4/ -R /var/spool/exim4/: db input msglog /var/spool/exim4/db: retry.lockfile /var/spool/exim4/input: 1LThY5-0006qr-2L-D 1LU41c-0001ON-VV-D 1LUQVB-0003hd-WE-D 1LUmyk-0005a1-Jg-D 1LV9SH-00079P-D1-D 1LVVvp-00007d-NI-D 1LVsPM-000183-JH-D 1LThY5-0006qr-2L-H 1LU41c-0001ON-VV-H 1LUQVB-0003hd-WE-H 1LUmyk-0005a1-Jg-H 1LV9SH-00079P-D1-H 1LVVvp-00007d-NI-H 1LVsPM-000183-JH-H /var/spool/exim4/msglog: 1LThY5-0006qr-2L 1LU41c-0001ON-VV 1LUQVB-0003hd-WE 1LUmyk-0005a1-Jg 1LV9SH-00079P-D1 1LVVvp-00007d-NI 1LVsPM-000183-JH
メールアドレスと1日ごとに送信されていることから察するに、おそらくrootのcron結果を送ったメールだろうな。ヘッダと内容をチェック。
# cat /var/spool/exim4/input/1LThY5-0006qr-2L-H 1LThY5-0006qr-2L-H root 0 0 <root@(none> 1233514805 0 -ident root -received_protocol local -body_linecount 39 -auth_id root -auth_sender root@(none -allow_unqualified_recipient -allow_unqualified_sender -deliver_firsttime -frozen 1233514825 -local XX 1 root@(none 156P Received: from root by localhost with local (Exim 4.63) (envelope-from <root@(none>) id 1LThY5-0006qr-2L for root@(none; Mon, 02 Feb 2009 04:00:24 +0900 025* From: root (Cron Daemon) 031F From: root@(none (Cron Daemon) 009* To: root 015T To: root@(none 092 Subject: Cron <root@debian> *************************************************************** 049 Content-Type: text/plain; charset=ANSI_X3.4-1968 028 X-Cron-Env: <SHELL=/bin/sh> 025 X-Cron-Env: <HOME=/root> 033 X-Cron-Env: <PATH=/usr/bin:/bin> 027 X-Cron-Env: <LOGNAME=root> 042I Message-Id: <E1LThY5-0006qr-2L@localhost> 038 Date: Mon, 02 Feb 2009 04:00:24 +0900
明らかにfrozenされていたメールはrootのcron結果をrootに送るメール。envelop-fromとFromとToのホスト名の部分がおかしい。(noneになっている。
# cat /etc/mailname (none) # echo localhost> /etc/mailname
取り合えず/etc/mailnameのないようが(none)になっていた(それらしいもの)なので、これをlocalhostに書き換え。これ以外可能性のあるもの言えば、/etc/exim4/update-exim4.conf.confのdc_other_hostnamesかな。
# /etc/init.d/exim4 restart
再起動して。様子見で運用。
- mailname - Google 検索
- /etc/mailname - Google 検索
- /etc/mailname debian - Google 検索
- mailname man - Google 検索
- man mailname (5) - the visible mail name of the system - Linux Manual - Digipedia
- Debian日記
- Postfix(8)
- 秋葉びず - 【実践Linux】
- Postfix の導入、その他 - オモイノホカ日々徒然
- /etc/mailname localhost - Google 検索
- もめす屋 > Debianで自宅サーバ > メールサーバの構築
- dc_other_hostnames - Google 検索
- dc_other_hostnames localhost - Google 検索
- 第10章 メールサーバー
- exim from ヘッダー - Google 検索
- ホスト名 exim - Google 検索
- exim ドメイン - Google 検索
- exim スプール - Google 検索
- メルマガ - いますぐ実践! Linux システム管理 / バックナンバー Vol.048
- 玄箱 Debianにexim4をインストールする - bnote
- exim frozen - Google 検索
- 週刊みけねこ通信 | Clara FPS
- <root@(none> *** frozen *** - Google 検索
- Debian リファレンス - Debian tips
- exim4+command - System-memo
- exim4+error - System-memo
- "Message is frozen" - Google 検索
- 53. スプールファイルのフォーマットについて
- 夜行録: 2006年10月 Archives
- 5. Eximのコマンドライン
エラー発生のチェックのためにcrontabの書き換え。エラーの起きていたcronについて頻度を上げて置く。1分ごとにcronを走らせるようにしておき、エラーが出るかチェック。
# crontab -e 0 4 * * * sh hoge.sh * * * * * sh hoge.sh
/var/log/exim4/mainlogをみるとどうやらうまくメールが飛んでいるようだ。
# tail -f /var/log/exim4/mainlog 2009-02-08 15:09:06 1LW2ql-0001h6-Ts <= root@localhost U=root P=local S=2574 2009-02-08 15:09:06 1LW2ql-0001h6-Ts => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:09:06 1LW2ql-0001h6-Ts Completed 2009-02-08 15:10:03 1LW2rh-0001hS-RS <= root@localhost U=root P=local S=2574 2009-02-08 15:10:03 1LW2rh-0001hS-RS => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:10:03 1LW2rh-0001hS-RS Completed 2009-02-08 15:11:03 1LW2sf-0001hv-NE <= root@localhost U=root P=local S=2574 2009-02-08 15:11:03 1LW2sf-0001hv-NE => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:11:03 1LW2sf-0001hv-NE Completed 2009-02-08 15:12:03 1LW2td-0001i9-G1 <= root@localhost U=root P=local S=2574 2009-02-08 15:12:03 1LW2td-0001i9-G1 => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:12:03 1LW2td-0001i9-G1 Completed 2009-02-08 15:13:03 1LW2ub-0001iQ-Mu <= root@localhost U=root P=local S=2574 2009-02-08 15:13:03 1LW2ub-0001iQ-Mu => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:13:03 1LW2ub-0001iQ-Mu Completed 2009-02-08 15:14:03 1LW2vZ-0001ig-Nv <= root@localhost U=root P=local S=2574 2009-02-08 15:14:03 1LW2vZ-0001ig-Nv => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:14:03 1LW2vZ-0001ig-Nv Completed 2009-02-08 15:15:03 1LW2wX-0001j2-Pb <= root@localhost U=root P=local S=2574 2009-02-08 15:15:03 1LW2wX-0001j2-Pb => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:15:03 1LW2wX-0001j2-Pb Completed 2009-02-08 15:16:03 1LW2xV-0001jG-R9 <= root@localhost U=root P=local S=2574 2009-02-08 15:16:03 1LW2xV-0001jG-R9 => hoge <root@localhost> R=local_user T=mail_spool 2009-02-08 15:16:03 1LW2xV-0001jG-R9 Completed
さらにmailコマンドで受信ボックスに入っているかチェック
# mail No mail for root
rootの受信ボックスとeximのエイリアスを/etc/aliasesでチェック。hogeにroot宛てのメールが転送されているのでhogeの受信ボックスをチェック。
# grep -e '^root' -e '^exim' /etc/aliases root: hoge # mail -u hoge Mail version 8.1.2 01/15/2001. Type ? for help. "/var/mail/hoge": 20 messages 20 new >N 1 root@localhost Sun Feb 08 15:09 53/2725 Cron <root@debian> ************** N 2 root@localhost Sun Feb 08 15:10 53/2725 Cron <root@debian> ************** N 3 root@localhost Sun Feb 08 15:11 53/2725 Cron <root@debian> ************** N 4 root@localhost Sun Feb 08 15:12 53/2725 Cron <root@debian> ************** N 5 root@localhost Sun Feb 08 15:13 53/2725 Cron <root@debian> ************** N 6 root@localhost Sun Feb 08 15:14 53/2725 Cron <root@debian> ************** N 7 root@localhost Sun Feb 08 15:15 53/2725 Cron <root@debian> ************** N 8 root@localhost Sun Feb 08 15:16 53/2725 Cron <root@debian> ************** N 9 root@localhost Sun Feb 08 15:17 53/2725 Cron <root@debian> ************** N 10 root@localhost Sun Feb 08 15:18 53/2725 Cron <root@debian> ************** N 11 root@localhost Sun Feb 08 15:19 53/2725 Cron <root@debian> ************** N 12 root@localhost Sun Feb 08 15:20 53/2725 Cron <root@debian> ************** N 13 root@localhost Sun Feb 08 15:21 53/2725 Cron <root@debian> ************** N 14 root@localhost Sun Feb 08 15:22 53/2725 Cron <root@debian> ************** N 15 root@localhost Sun Feb 08 15:23 53/2725 Cron <root@debian> ************** N 16 root@localhost Sun Feb 08 15:24 53/2725 Cron <root@debian> ************** N 17 root@localhost Sun Feb 08 15:25 53/2725 Cron <root@debian> ************** N 18 root@localhost Sun Feb 08 15:26 53/2725 Cron <root@debian> ************** N 19 root@localhost Sun Feb 08 15:27 53/2725 Cron <root@debian> ************** N 20 root@localhost Sun Feb 08 15:28 53/2725 Cron <root@debian> ************** & q Held 20 messages in /var/mail/hoge
たしかにroot宛てのメールがhogeに転送されていることを確認。
# crontab -e
最後に確認のために変えたctontabをもとにもどしておく。
- root メール スプール - Google 検索
- 5.4.メールスプールのチェック
- 4.4.メールスプールのチェック
- root メール 受信 - Google 検索
- Fedora JP 掲示板
- webmasterユーザでメール受信 | Linuxサーバ研究室~自作PCでサーバ構築~
- FreeBSDで毎日root宛に届くレポートメールを通常のメーラーで受信 - DaemonFreaks Blog
すでに送信されてメールキューに入っているものについては手作業で削除するしかない。もしくはfrozenメールの再送期間を制御するパラメータに設定した期間(7日)が経つまで待つ。
# mailq 7d 3.0K 1LThY5-0006qr-2L <root@(none> *** frozen *** root@(none 6d 3.0K 1LU41c-0001ON-VV <root@(none> *** frozen *** root@(none 5d 3.0K 1LUQVB-0003hd-WE <root@(none> *** frozen *** root@(none 4d 3.0K 1LUmyk-0005a1-Jg <root@(none> *** frozen *** root@(none 60h 3.0K 1LV9SH-00079P-D1 <root@(none> *** frozen *** root@(none 36h 3.0K 1LVVvp-00007d-NI <root@(none> *** frozen *** root@(none 12h 3.0K 1LVsPM-000183-JH <root@(none> *** frozen *** root@(none
マウントしたディスクの読み書きが出来ない
別のマシンからHDDを抜いてきて、マシンにつないだら、マウントは出来てrootで書き込みは出来るのだけれど、一般ユーザで読み書きできない。
# mount /dev/hdd1 /mnt # ls /mnt -l drwxr-xr-x 2 500 501 4096 2008-02-10 04:51 hoge -rw-r--r-- 1 500 501 55 2003-12-31 07:53 hoge.txt # touch /mnt/test.txt # echo test > /mnt/text.txt # ls /mnt -l drwxr-xr-x 2 500 501 4096 2008-02-10 04:51 hoge -rw-r--r-- 1 500 501 55 2003-12-31 07:53 hoge.txt -rw-r--r-- 1 root root 5 2009-02-10 18:39 test.txt # exit $ cd /mnt $ ls -l drwxr-xr-x 2 500 501 4096 2008-02-10 04:51 hoge -rw-r--r-- 1 500 501 55 2003-12-31 07:53 hoge.txt -rw-r--r-- 1 root root 5 2009-02-10 18:39 test.txt $ cat text.txt test $ touch test2.txt bash: mnt/test2.txt: Permission denied $ echo test > hoge.txt bash: mnt/hoge.txt: Permission denied
これは不思議なことではなく、HDDに収められたデータに対して読み書き実行権限のあるuidとgidが、読み書きしようとしているユーザと違うからだ。一つの方法としてrootになって収められているデータ全てのuidとgidを読み書きしようとしているユーザと同じにしてしまうという方法がある。
# cd /mnt # chown -R hoge:hoge /mnt $ ls -l /mnt drwxr-xr-x 2 hoge hoge 4096 2008-02-10 04:51 hoge -rw-r--r-- 1 hoge hoge 55 2003-12-31 07:53 hoge.txt -rw-r--r-- 1 hoge hoge 5 2009-02-10 18:39 test.txt
先ほど作成したtest.txtもhoge:hogeになったが、これで読み書き実行できるはずだ。
topコマンドでコマンドラインを表示。
同じ名前のプログラムがいくつも起動している場合に、CPU時間を大量に消費しているのはどの引数を与えた場合かなということを知りたい場合がある。topコマンドで相対的なCPU時間の消費はわかるけれど、引数が表示されないではないかという場合。"cを押す"これでプロセスが起動されたコマンドライン全てが表示される。このことはtopのmanページのフィールドの説明のcommandにも記載されている。横幅の無い画面で見ると引数の部分はほとんど切れて見えないのだけれど。