Home > tips

tips Archive

ファイルを消してもディスク容量が減らない場合の対応

Linux/Unixで、ファイルを消したのにディスク使用量(ファイルシステム使用量)が減らなく、OSをリブートしたら減った経験はないでしょうか?
なぜそうなるのか、対象方法はどうすればよいかをwikiにまとめました。

ファイルを消してもディスク容量が減らない場合の対応

s-bit(sビット) と sticky bit(スティキービット)

なぜかわかりませんが、Linux(UNIX)環境で、s-bit(sビット) と sticky bit(スティキービット) を混同している場面を多く見かけます。

s-bit もしくは sビット とは、ファイル/ディレクトリの持ち主権限でファイル実行したい場合に付与します。ls コマンドで表示したとき、以下のように 「s」が出力されます。

$ ls -l hellocmd
-rwsrwxr-x 1 tuser tuser 5304 Jul 8 11:16 hellocmd
$

一方、sticky bit(スティキービット)とは、元々実行プログラムをメモリにsticky(貼り付け)する場合に使うもので、古い時代のUNIXでメモリ常駐させたい場合に使うものでした。最近のLinux(UNIX)では、/tmp ディレクトリのように誰でも読み書きできるけど、ファイル/ディレクトリの持ち主だけ削除できるようにしたい場合などに使われます。ls コマンドで表示したい場合、以下のように 「t」が出力されます。

$ ls -al / | grep tmp
drwxrwxrwt 6 root root 4096 Jul 8 11:16 tmp
$

sビット と stickyビットの混同の原因は、lsコマンドで表示したときの 「s」 と 「stickyのs」がゴチャマゼになっているのかもしれませんが、sビット と stickyビットではできることが全然違います。
「stickyビット付ければいいよっ。」と言われて、「chmod +t ~」してみたものの持ち主権限でプログラムが動かないなどないように使い分けはしっかりしましょ。

10進数から16進数の相互変換

10進数から16進数へ変換するときどうやりますか?

MicrosoftWindowsな人は、 電卓アプリケーションを使うってことが多いかもしれませんね。

電卓アプリを使おうとすると…

スタートメニューからアクセサリを探して、さらに、電卓アプリを探して起動。起動したと思ったら16進になっていなかったら、表示メニューから「普通の電卓」から「関数電卓」に切り替えて、やっとのことで入力、変換。

あ~~~めんどい。

Linux(UNIX)使いなら bcコマンドでやりましょ。

10進数の192を16進数に変換するなら。コマンドラインで。

bc

obase=16

192

たったこの3行だけですよ。

是非お試しあれ。

ベリサイン + apahce + OpenSSL + mod_ssl ではまり

ベリサイン + apahce + OpenSSL + mod_ssl ではまりました。

秘密鍵作成、CSR作成を行ってベリサインに申請。

戻ってきたServerIDを保存して以下のようにssl.confに設定したのですが、Webブラウザでアクセスすると警告がでました。

SSLCertificateFile /anywhere/XXXXcert.pem ← ServerID
SSLCertificateKeyFile /anywhere/XXXXkey.pem ← 秘密鍵

調べてみるとベリサインのサイトに「2007年6月18日21:00 までにベリサインストアフロントより申請されたセキュア・サーバIDは、中間CA証明書をインストールする必要はありません。」って…
ということは、2007/6/18 21:00以降は中間CA証明書を入れる必要ありってことだったのです。

ということで、ベリサインのWebサイトから中間CA証明書をダウンロードしてファイルに保存し、ssl.confに追記、apache再起動したところ。
Webブラウザからのアクセスで警告はなくなりました。

SSLCertificateChainFile /anywhere/inca.pem ← 中間CA証明書

参考情報 :
ベリサイン サーバIDインストール手順 (新規)

その rpm いつインストールしたんだっけ?

rpm をいつ入れたかを見たいときは、以下のコマンドで表示できます。

$ rpm -qa --last

このコマンド は、rpm をインストールした日付、時刻を新しいものの順番で表示してくれます。

もう一歩踏み込んで整形して表示したい場合、

$ rpm -qa --queryformat '%{INSTALLTIME} %{NAME}\n' | awk '{printf("%-12s: %-60s\n", strftime("%F %T", $1), $2);}' | sort

このように --queryformat オプションで表示したい項目を指定して整形してやります。--queryformat で指定できるオプションは、rpm --querytagsで表示することもできます。

インストール日時といっても rpm -U~などで更新した場合は、更新日時になってしまうので注意です。

fetchmail + procmail でメール転送

どこかのメールサーバに届いたメールをなにも考えず全部別のメールサーバに転送したい場合の設定をgoogle、Technoratiで検索したらなかなかみつからなかったのでまとめてみました。

.forward とか /etc/aliases とかで転送してもよいのですが、この方法だと転送先に届かないとメールを送ったところに転送先の携帯メールアドレスとかが漏れてしまうので、今回は fetchmail + procmail でpopで取ってきて転送する方法です。

確認した環境/条件は、以下のようになってます。

Fedora 7
procmail-3.22-19.fc7
fetchmail-6.3.7-2.fc7
転送元メール(POP3)サーバ : xxx.example.com
転送元POPユーザ : foo
転送元POPパスワード: bar
転送先メールアドレス: xxxxx@donomo.ne.jp
転送に使うメールサーバ(MTA) : localhost

10分間隔で転送元に届いたメールをチェック

転送したメールも転送元のメールサーバに残す

【.fetchmailrc の記述】

set postmaster root
set nobouncemail
set logfile fetchmail.log
defaults
protocol pop3
no rewrite
no mimedecode

poll xxx.example.com
uidl
username “foo”
password “bar”
mda “/usr/bin/procmail”
keep

【.procmailrc の記述】

:0 c
! xxxxx@donomo.ne.jp

【注意事項】

.fetchmailrc と .procmailrc のアクセス権限は、600 (group と otherのread/write/execute権限なし) とする。

$ chmod 600 .fetchmailrc

$ chmod 600 .procmailrc

fetchmail.log を事前に作成しておく

$ touch fetchmail.log

【crontab の設定】

*/10 * * * * /usr/bin/fetchmail > /dev/null 2>&1

fetchmailは、daemon化して一定時間間隔でメールチェックすることもできるのですが、daemon化した fetchmailがもしも何かの理由で異常終了したりするとメールをある日突然取ってこなくなることを想定して、crontab 設定で 10分間隔で fetchmailを起動しています。

この設定で転送できるようになりました。それと、転送先をありえないメールアドレスに設定して確認したところ、メールの発信元にはエラーが返らずfetchmailを起動したユーザにエラーメールが届きます。

yum コマンド まとめ その2

yum コマンド まとめの第2段です

【パッケージグループ一覧表示】

# yum grouplist

インストールされている or インストール可能なパッケージグループの一覧表示。
パッケージグループには、’MySQL Database’、’Web Server’、’System Tools’ 等があります。

【パッケージグループのインストール】

# yum -y groupinstall パッケージグループ名

-y は、自動でy(yes)を返答するオプションです。このオプションを付けない場合、確認が入ります。
パッケージグループには、スペースが含まれるものがあります。このような場合は、'(シングルクォート)で囲む必要があります。
例) FTP Serverパッケージグループのインストール

# yum -y groupinstall ‘FTP Server’

【パッケージグループのアンインストール】

# yum -y groupremove パッケージグループ名

-y は、自動でy(yes)を返答するオプションです。このオプションを付けない場合、確認が入ります。
パッケージグループには、スペースが含まれるものがあります。このような場合は、'(シングルクォート)で囲む必要があります。

yum コマンド まとめ その1

yumとは、Yellowdog Updater Modified の略です。

Fedora 等で依存関係を考慮して rpmパッケージのインストール、アンインストール、更新等を行ってくれるツールです。
これを使えば、依存関係のわずらわしさから開放されてハッピーになれます。(笑)

yumは、/etc/yum.repos.d/ に登録されているパッケージ登録サーバ(リポジトリ)から自動でダウンロードしインストール、アンインストール、更新を行うので、ダウンロードの手間も必要ありません。

以下が簡単な使い方になります。

【パッケージのインストール(追加)】

# yum -y install パッケージ名

-y は、自動でy(yes)を返答するオプションです。このオプションを付けない場合、確認が入ります。

【パッケージのアンインストール(削除)】

# yum -y erase パッケージ名

-y は、自動でy(yes)を返答するオプションです。このオプションを付けない場合、確認が入ります。

【パッケージの更新確認】

# yum check-update

リポジトリに登録されているパッケージと自分のマシンにインストールされているパッケージのバージョン(リビジョン)を比較して相違があるものを表示してくれます。
あくまでも表示だけなので、更新は別途必要です。

【パッケージの更新】

# yum -y update パッケージ名

リポジトリに登録されているパッケージと自分のマシンにインストールされているパッケージのバージョン(リビジョン)を比較して相違があるものを更新してくれます。
また、パッケージ名を省略すると自分のマシンに登録されているパッケージ全てについてバージョン(リビジョン)の相違があればダウンロードして更新します。

rpmコマンドまとめ その1

RPMとは、RPM Package Manager の略です。
かなりわかりづらいですね。(笑)

ここでいうパッケージ(Packege)とは、 設定ファイルやら実行モジュールなどを一個のファイルにまとめたものぐらいの解釈でよいです。Red Hat Enterprise Linux(RHEL)、Fedora、Vine Linux、Debian GNU/Linux、Ubuntu Linux等ディストリビューションは様々ありますが、それぞれでパッケージの管理方法があって、Red Hat 系では、RPMというパッケージ管理方法を採用しています。
通常は、~.rpm の拡張子のファイルをインストールのときに使います。

では、実際に使ってみましょう。まずは内容表示系の操作から。

【マシンに導入されているrpmパッケージ一覧の表示】

# rpm -qa

【rpmパッケージに含まれるファイルやコマンドの一覧を表示する】

# rpm -ql パッケージ名

※パッケージ名は、rpm -qa コマンドで表示されたものを使用する。

例) bash-3.0-19.3パッケージに含まれるファイル、コマンド一覧の表示

# rpm -ql bash-3.0-19.3

【ファイルやコマンドがどのrpmパッケージに含まれるか確認する】

# rpm -qf コマンド名orファイル名

※コマンド名orファイル名は、フルパスの必要があります。

例) bashがどのパッケージに含まれるか確認する

# rpm -qf /bin/bash
bash-3.0-19.3
#

【rpmパッケージの概要を確認する】

# rpm -qi パッケージ名

例) bash-3.0-19.3パッケージの概要を表示する

# rpm -qi bash-3.0-19.3

ホーム > tips

Search
Feeds
Meta

Return to page top