Linux実践講座

Linux実践講座

コンピュータを便利に使う tips などをメモ

du コマンドでどのディレクトリが一番 disk を使用しているかを調べる

読了までの目安時間:約 10分

サーバのメンテナンスをしていると不要なファイルを削除したいなど、サブディレクトリの分はディレクトリ名を表示しないで各ディレクトリの使用量を調べたい時があります。

● どのディレクトリが disk を使用しているかを調べる


$ du -S | sort -rn

ls コマンドの結果をファイルサイズ順にソートする時は下記のように -S オプションをつけるだけでよい。


$ ls -S

● ファイルシステムのディスク容量の使用状況を表示する。
df コマンド (man)より

名前
df - ファイルシステムのディスク容量の使用状況を表示する

書式
df [options] [file...]

POSIX オプション: [-kP]

GNU オ プ シ ョ ン (簡略形式): [-ahiklmvHPT] [-t fstype] [-x fstype]
[--block-size=SIZE] [--no-sync] [--sync] [--help] [--version] [--]

説明
df は各ファイルシステムにおいて、すでに使用中のディスクの量と使用可能な
ディスクの量を表示する。

引 き数がない場合、 df は現在マウントされている (全てのタイプの) 全ファ
イルシステムについて使用量と使用可能量を表示する。引き数が指定されて い
る場合、 df は引き数 file が含まれるファイルシステムについて表示する。

POSIX 詳細
出力はデフォルトでは 512 バイト単位であるが、 -k オプションが指定された
場合は 1024 バイト単位になる。 -P オプションが指定されない場合、出力 フ
ォーマットは未定義である。 file が通常のファイル、ディレクトリ、FIFO の
いずれでもない場合の結果は規定されていない。

GNU 詳細
引き数 file がディスクデバイスファイルで、かつそこにマウント済みのフ ァ
イ ルシステムが含まれている場合、 df はそのデバイスノードの属しているフ
ァイルシステムではなく、デバイスファイルに対応している方のファイルシ ス
テムの使用可能量を表示する。

POSIX オプション
-k デフォルトの 512 バイト単位の代わりに 1024 バイト単位を用いる。

-P ‘Filesystem N-blocks Used Available Capacity Mounted on’ という
ヘッダをつけて 6 列で出力する (通常は N=512、-k オプションが指定
されたときは N=1024)。

GNU オプション
-a, --all
サ イズが 0 ブロックのファイルシステムやタイプが ‘ignore’ または
‘auto’ のファイルシステムもリスト表示に含める (デフォルトでは 省
かれる)。

-h, --human-readable
そ れぞれのサイズに、例えばメガバイトなら M のようなサイズ文字を
付加する。 10 の累乗ではなく 2 の累乗を用 い る の で 、 M は
1,048,576 バイトを表す。

-i, --inodes
ブ ロック単位での使用容量のかわりに inode の使用状況をリスト表示
する。

-k, --kilobytes
デフォルトのブロックサイズを無視し、 1024 バイトを 1 ブロック と
してサイズを表示する。

-l, --local
ローカルファイルシステムのみをリスト表示する。

-m, --megabytes
メガバイト (1,048,576 バイト) ブロック単位でサイズを表示する。

-t fstype, --type=fstype
タイプが fstype のファイルシステムのみをリスト表示する。 -t オプ
ションを複数指定すれば、複数のタイプを表示するようにできる。デフ
ォルトで省略されるものについては --all を参照すること。

-v このオプションは無視される (System V 版の df との互換性のために
ある)。

-x fstype, --exclude-type=fstype
タイプが fstype のファイルシステムを除外する。 -x オプションを複
数指定すれば、複数のファイルシステムタイプを表示から削除できる。
デフォルトでは、どのファイルシステムタイプも除外されない。デフォ
ルトで省略されるものについては --all を参照すること。

-H, --si
そ れぞれのサイズについて、例えばメガバイトなら M といったサイズ
文字を付加する。 (SIとは国際単位系のことで、これらのサイズ文字を
定 義 し て い る) 2 の累乗ではなく 10 の累乗を用いるので、 M は
1,000,000 バイトを表す。

-P, --portability
POSIX 出力形式を用いる。これはデフォルトの表示形式に似ているが、
以下の a), b), c) の点が異なる。 a) ファイルシステムについての情
報が常に 1 行で表示される。このオプションを付けるとマウントデ バ
イ ス名だけが単独で 1 行に表示されることはない。すなわちマウント
デバイス名が 20 文字以上の場合 (例えばネットワークマウントな ど)
コラムの整列が崩れることになる。 b) 丸めが繰上げになる。 c) コラ
ムのヘッダが POSIX に準拠している。

-T, --print-type
各ファイルシステムのタイプを表示する。 mount(8) を参照。

--block-size=SIZE
ブロックサイズを SIZE に設定し、環境変数の値を無視する。

--no-sync
使用量データを得る前に sync(2) を呼ばない。このオプション は df
の 動 作がかなり速くなるかもしれないが、システムによっては (特に
SunOS では) 結果が少し古くなるかもしれない。このオプションはデフ
ォルトである。

--sync 使用量データを得る前に sync(2) を呼ぶ。システムによっては (特に
SunOS では) より新しい結果を得ることができる。しかし一般的に、こ
のオプションは df の動作をずっと遅くする (特にファイルシステムが
多い場合や、更新が非常に頻繁なファイルシステムがある場合)。

● man コマンドで表示されるヘルプをファイルに保存する。


$ man hoge | col -bfx > hoge.txt

スクリプト言語 awk を使って効率的にテキストデータを処理しよう

読了までの目安時間:約 4分

AWK は、簡単なスクリプトを記述することで、効率的にテキストファイルを処理することを目的として開発されたスクリプト言語でアルフレッド・エイホ(Alfred Aho)、ペーター・ワインバーガ(Peter Weinberger)、ブライアン・カーニハン(Brian Kernighan)の3人によって開発されました。3人の頭文字を取って awk (オーク) と命名されました。

プログラミング言語awk の序章に awk について端的に述べられています。

 コンピュータの利用者は、多くの時間をデータの書式を変更したり、その整合性を検査したり、ある性質を持った項目を探したり、数を足し込んだり、あるいはレポートを出力したりするような、単純で機械的なデータ操作に費やしている。これらの仕事の多くは機械化されるべきであるが、かといってそれらを処理する特別なプログラムを毎回 C や Pascal のような一般的な言語でかくのはばかげている。
 Awk はこういった仕事を、たいていは1行か2行で済むようなとても短いプログラムで始末できるように設計されたプログラミング言語である。Awk プログラムは、入力データのなかから見つけるべきパターンと、見つかったときに実行するアクションの列とからなっている。Awkは、それらのパターンのどれかと適合する行をファイルの集合のなかから探しだし、いったんそのような行が見つかれば対応するアクションを実効する。パターンは、正規表現と、文字列、数、欄、変数、それに配列要素の比較演算との組み合わせにより行を選択できる。アクションは、そうやって選択された行に対して任意の処理を実効できる。このアクションを記述する言語は C に似ているが、宣言を持たなかったり、文字列や数も組み込みのデータ型として備えている点がちょっと違う。
 Awk は入力ファイルを操作して、それぞれの入力行を自動的に欄に分解する。入力、欄への分解、記憶領域の管理、初期化など、とても多くのことが自動的に行われるので、awk プログラムは通常、より伝統的な言語で書くよりもずっと小さくなる。それゆえ awk のごく普通の使い方は、上で述べたようなデータ操作に類するものである。1行か2行の長さのプログラムは、キーボードから直接入力して一度だけ走らせ、そして捨てられる。実際 awk は、多数の特殊な道具やプログラムにとって代わる汎用のプログラム可能な道具である。
 Awk は、簡潔な氷原と便利な演算によって、より大きなプログラムの試作品を作る際の重要な道具にもなる。数行のものから始めて、お望みの仕事をこなせるようになるまでプログラムをすこしづつ仕上げていき、他の方法も簡単に試してみたりして、その設計が妥当かどうかを検査できる。そうしたプログラムは短いので、とっつきやすく、実権の結果他によい方法が見つかった場合でも簡単にやり直せる。さらに、いったん設計が正しいことが判明すれば、awk プログラムを他の言語に翻訳するのは実にたやすい。

awk 言語の使い方を覚えて、効率よく仕事をこなせるようになりましょう。

ubuntu に gawk をインストールする


sudo apt-get install gawk

Gnu awk 3.1.5以降の仕様は、length()がバイト単位ではなく、キャラクタ単位の文字数を返すようになっているので注意。

● awk で文字数をカウントする


gawk '{n += length($0)} END {print n}' foo.txt

テキストエディタ vi の使い方を覚えよう

読了までの目安時間:約 2分

vi は、ビル・ジョイによって開発されたテキストエディターです。最近のlinuxディストリビューションでは vi コマンドで上位互換の vim や nvi が起動されているようです。

vi は
●マウスを使わない
●カーソルキーを使わない
●命令を覚える必要がある
 他に、vi はコンパクトで負荷が小さいため、作業中にテキストファイルの一部を書き換えたり、通信速度の遅いネットワークの先にあるマシンで編集したりといった作業に向いている。 また、コンパクトで負荷が小さいという利点から、最低限の UNIX環境 でも含まれている事が多く、スマートフォン、無線LANルータ、液晶テレビなど、コアシステムとしてLinuxを採用しているハードウェアの多くにviもしくは vi 互換のエディタが搭載されている。
という特徴があります。
 GUIでの操作に慣れている人には、少し敷居が高いかもしれません。しかし、マウスカーソルやカーソルキーを利用できないハードウェア上でも利用することが出来、命令を覚えると素早いカーソル移動や編集操作を効率的に行えるので操作を覚える事をお勧めします。

Vimの使い方(入門)
vi操作手引き書
のページで、分かりやすい解説をされています。 感謝です。

● vim で文字数をカウントする方法


:%s/./&/g

無料で使えるPHPグラフ生成用ライブラリ JpGraph

読了までの目安時間:約 2分

JpGraph とは

JpGraph3.xはPHP言語(PHP5.1から5.3)に対応した高機能なグラフ生成用ライブラリです。データベースと連動させ動的にグラフを描画することができることはもちろん、20種類以上のプロット形式をサポートしています。

非営利目的で使用する場合、QPL (Qt Free License) 1.0ライセンスの下で、JpGraphコミュニティ版として無料で使う事ができます。

JpGraphの特徴は下記の通りです。

  • 豊富なプロット形式であらゆるグラフニーズに対応(合計23種類)
  • データベースに連動した動的なグラフ生成が可能-日々変化する数値に対応
  • 少ないコード量で作成(オブジェクト指向機能に沿ったタイプ)
  • QRコード、スパム対策にも対応
  • PHPを使用したWebアプリケーションの世界的に幅広く使用されているグラフライブラリ

JpGraph のサンプル

http://www.gadgety.net/shin/tips/unix/php5.html#JPGRAPH のページにインストールの方法および使い方が書かれています。感謝です。

gnuplot でらくらくお絵描き

読了までの目安時間:約 2分

グラフ作成を便利にできるアプリケーションにフリーウェアの gnuplot (ニュープロット) があります。
1986年に最初のバージョンが開発され、現在は多くの OS (Linux、UNIX、Windows、Mac OS Xなど) に対応したバージョンが開発されています。

OSが Ubuntu 12.04 の場合、下記のようにすれば簡単に gnuplot をインストールする事が出来ます。


$ sudo apt-get install gnuplot-*

http://t16web.lanl.gov/Kawano/gnuplot/index.html および gnuplot のページ (Takeno Lab) で gnuplot の詳しい解説がされています。感謝です。

gnuplot を起動してコマンドラインで指示すれば簡単にグラフを描く事ができます。

plot [0:10] 1-exp(-x)

これから、gnuplot と PHP を使ってリアルタイムにグラフを表示する方法などを解説していきます。

温故知新 UNIXプログラミング環境 その1

読了までの目安時間:約 3分

簡単にLinuxをインストールして、すぐれたプログラミング環境を手に入れる事がとても簡単に出きるようになった今こそ読んでおきたい Unix の思想の原点ともいえる一冊があります。

『UNIXプログラミング環境』(アスキー出版局)

単行本: 514ページ
出版社: アスキー (1985/09)
ISBN-10: 4871483517
ISBN-13: 978-4871483513
発売日: 1985/09

この本の「はじめに」にも書いてありますが、UNIX のプログラミング哲学を知りたい人にお進めしたい本です。

 本書の目的は、この UNIX のプログラミング哲学を知ってもらうことにある。個々のツール (プログラム) についての説明に紙面の多くを割いているが、そん哲学はプログラムの結びつき方をきそにしているので、至るところにプログラムの結合とか、プログラムを使ってプログラムを組み立てるといったテーマが登場する。 UNIX システムとそのコンポーネントをうまく使うためには、プログラムの使い方だけではなくそれをどうやって環境に合わせるかを理解しなくてはならない。

 コマンド・インタープリタ、すなわちシェルはプログラムの実効だけでなく、その作成のためにも基本的なツールといえる。第3章では、読者地震の目的に合わせたシェルの使い方に焦点をあてる。内容は、新しいコマンドの作成、コマンドの引数、シェル変数、初歩的な制御フロー、入出力の切替えである。
 第4章ではフィルタを扱う。フィルタはデータがシステムを流れていくときに、幾つかの単純な変換を行う室グラムである。最初の節ではパターン検索コマンド grep とその関連コマンドを取り扱う。2節では sort などの一般的なフィルタについて説明する。さらにこの章の残りの部分は、sed や awk と呼ばれる汎用データ変換プログラムの解説にあてた。 このうち sed はストリーム・エディタの一種で、データの流れにそって編集して書き換えるプログラムである。また awk は、単純な情報検索や報告書作成のためのプログラミング言語となっている。時々シェルとやりとりしなが、これらのプログラムを使うだけで、通常のプログラム作成をしなくてすむことが多い。
 第5章では、シェルを使ってプログラムを下記、それを他のU亜にも使えるようにする方法について述べる。このトピックには、もっと高度な制御フローや変数、あるいはトラップや割込み (インタラプト) 操作が含まれる。この章の例題には、シェルと同時に sed や awk をかなり使用する。

今後、この UNIXプログラミング環境 に書いてある面白い例題やツールの使い方を紹介していきたいと思っています。

1 25 26 27
--- 広告 ---
--- 広告 ---
最近の投稿