アーカイブ

‘Linux’ カテゴリーのアーカイブ

Linuxで容量の大きいディレクトリを調べる

2011 年 4 月 10 日 コメントはありません
# du -m /home | sort -nr | head -5

で容量の大きいディレクトリTOP5調べられる。

カテゴリー: Linux, SysAdmin タグ: ,

wgetでURLにアクセスできるか簡易的にチェックする

2011 年 2 月 17 日 コメントはありません

Webサーバがちゃんと立ち上がったかどうか、URLにアクセスしてチェックしたいので。

wget -o /dev/null -O - http://twitter.com/ > /dev/null
if [ $? -eq 0 ] ; then
    echo "OK"
else
    echo "Failure!!"
fi

な感じかなぁ。

仕事に使えるLinuxシェルスクリプト~bashで作る実用サンプル41

著者/訳者:千葉 真人

出版社:日経BP社( 2004-11-25 )

単行本 ( 381 ページ )


カテゴリー: Linux, SysAdmin タグ: ,

watchでコマンドの出力を監視する

2010 年 10 月 31 日 コメントはありません

Unixには watch という、n秒ごとに定期的にコマンドを実行してその出力を表示するコマンドがあります。

例えば netstat -na した結果を wc で数えて現在のコネクション数を1秒ごとに表示するには

$ watch -n 1 'netstat -na | wc -l'

とやります。このコマンドを知る前までは

$ while true; do netstat -na | wc -l; sleep 1; done

とやっていてタイプするのが面倒だったので、かなり楽になりました。

補足ですが、時系列でコマンドの出力を表示させたい場合もあるので、while true; do netstat -na | wc -l; sleep 1; done のやり方も場合によっては全然有効だと思います。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

著者/訳者:ブルース ブリン

出版社:ソフトバンククリエイティブ( 2003-02 )

単行本 ( 434 ページ )


カテゴリー: Linux タグ:

Gitの共有リポジトリを運用する場合の個人的なベストプラクティス

2009 年 12 月 17 日 コメントはありません

最近Gitの共有リポジトリを構築する機会があったのですが、以下のような感じで運用しています。

  • gitプロトコルではなくsshでアクセス(ポート開けるのだるいので)
  • サーバ側にgitユーザを作って、アクセスさせたい人にsshの公開鍵をもらってそれを /home/git/.ssh/authorized_keys に追加して公開鍵認証
  • git clone ssh://git@lampetty.net/var/cache/git/hoge.git みたいな感じでclone

いちいちサーバ側にユーザ追加して、gitリポジトリのディレクトリにパーミッション付与するよりこっちの方がたぶん楽。

カテゴリー: Git, Linux タグ: ,

bashでコマンド履歴を残さない方法

2009 年 8 月 15 日 コメントはありません

bashには過去に実行したコマンドを履歴として残しているので、CTRL+pなどでその履歴をさかのぼり過去に実行したコマンドをそのまま実行したり、ちょこっと直して実行することができます。しかし、この便利な機能は一方で、 rm などのファイルを削除したりするような危険なコマンドを、履歴からいとも簡単に実行してしまい、結果として大切なファイルを消してしまったりするようなミスを誘発する恐れがあります。

そんなことを考える人に「特定のコマンドだけ履歴に残したくない(=.bash_historyに残さない)という技を紹介したいと思います。具体的には

export HISTIGNORE='rm*:mv*'

のように、環境変数HISTIGNOREに履歴に残したくないコマンドを設定します。:(コロン)でコマンドを区切ることで複数のコマンドを設定することが可能です。上記の例では rm と mv を履歴に残さないようにしています。

実際に試してみると

$ touch hoge
$ rm hoge
$ history
   ...
   98  touch hoge
   99  history

のようにrmコマンドはhistoryには残っていません。実行前にコマンドを確認しないで、うっかり履歴からrmコマンドで必要なファイルを消してしまった、というようなオペレーションミス対策になると思うので、重要なサーバではぜひ設定してみると良いと思います。

bashクックブック

著者/訳者:Carl Albing JP Vossen Cameron Newham

出版社:オライリージャパン( 2008-09-26 )

大型本 ( 644 ページ )


カテゴリー: Linux タグ:

Apacheが”Couldn’t create accept lock”で起動しない場合の対処方法

2009 年 6 月 10 日 コメントはありません

これの続編なのですが、複数人が共同で使っているサーバなどで、Apacheのプロセスを何個も起動していると、使えるセマフォがなくなるという事態に遭遇することがあります。対処方法は、Apacheを止めるか

$ for semid in `ipcs -s | grep www-data | cut -f2 -d" "`; do ipcrm -s $semid; done

としてセマフォを削除すれば解決しますが、どうしてもたくさんのApacheのプロセスを立ち上げたい場合は、kernelパラメータのkernel.semの値を大きくしてみると良いでしょう。

Ubuntu 9.04 Server版の kernel.sem のデフォルト値は

$ cat /proc/sys/kernel/sem
250     32000   32      128

となっていて、この4つの数値は左から

  • SEMMSL: セマフォ集合ごとのセマフォ数の最大値。
  • SEMMNS: システム全体での、全てのセマフォ集合におけるセマフォ数の制限。
  • SEMOPM: semop(2)コールに指定されるオペレーション数の最大値。
  • SEMMNIシステム全体でのセマフォ識別子の最大値。

というものらしいです。

今回はためしにこの4つの数値を倍に設定してみましょう。設定するには /etc/sysctl.conf に以下の行を追加します。

kernel.sem    = 500 64000 64 256

完了したら

$ sudo sysctl -p

を実行するとすぐに反映されます。これでApacheが意味不明な”Couldn’t create accept lock”というエラーを吐かなくなるはずです。

カテゴリー: Linux タグ: ,