:::: MENU ::::
Posts tagged with: Ubuntu

ルート領域がフルになりそうなのでコマンドラインで確認してみる

このサイトでは、Sientific Linux 6.xの64bitで運用しており、ハードディスク容量を見てみたところ、99%使用で、危うく100%超しそうでした。

WindowsやMacでは、GUIでグラフィカルなHDD容量チェックルーツがたくさんあります。もちろんLinuxでもないわけではありませんが、コマンドラインの方が簡単で慣れてるので、コマンドラインでチェックです。

全体の容量を見るには、df -Hでパーティション毎に、容量情報を見ることが出来ます。
調べてみたところ、ルート(/)領域が99%で、その中でも/usr以下がほぼ占めてた。

それで、/usr/以下を下記コマンドで調べてみた。

# du -s /usr/* | sort -n
1.5M ./bin
4.0K ./etc
4.0K ./games
4.0K ./lib64
4.0K ./libexec
4.0K ./sbin
4.0K ./src
36G ./vpnserver
87M ./lib
382M ./rbenv
436K ./share
688K ./include

vpnserver下が圧倒的に容量を喰っていたので、さらに調べていったら、ログが溜まっていたのが原因でした。
あっさりとログを削除したころ、HDD空き容量が99%から20%にも減りましたとさ。


ZabbixでLack of free swap spaceのエラーが出るときの対処

Zabbixで監視画面を見てみたら、あるサーバで下記のエラーが出てました。

Lack of free swap space on Server

今では、メモリをふんだんに搭載出来、わざわざSwapを作成する必要がないのですが、どうやらZabbixではswap領域を監視するようなのでエラーが出るようです。

仕方ないので、小さなswap領域を作成して対処します。

# dd if=/dev/zero of=/var/swapfile bs=1M count=2048
# chmod 600 /var/swapfile
# /sbin/mkswap /var/swapfile
# echo /var/swapfile none swap defaults 0 0 | tee -a /etc/fstab
# swapon -a

 


フロッピーディスクがないのにfdエラーが出るときの対処

フロッピーディスクがないPC機や仮想サーバでFDを削除しているのに、Linux上のエラーメッセージに下記のようなフロッピーディスク関連のエラーが出るときの対処です。

end_request: I/O error, dev fd0, sector 0

# /sbin/lsmod |grep -i floppy
floppy 57125 0

# vi /etc/modprobe.d/blacklist
blacklist floppy

# shutdown -r now

Linux上のmodprobeでfloppyを削除してあげるだけですね。


VundleでVimプラグイン導入

かなり以前から、Unix/Linuxでvi/vimを使っているんですが、恥ずかしながら、私も「いまさら聞けない .vim/bundle によるプラグイン管理」と同じ心境で、プラグインとは無縁の環境にありました。

今までに、プラグイン導入を試みたことはあるのですが、うまく動作しない事があり、ずっと諦め状態だったのです。

なので、今更ながら、Vimのプラグイン導入に挑戦です。

Vundleを使って、プラグイン管理(導入)します。(VimとGitが既にインストールされている事が前提です)

導入方法は、VundleのReadmeを見れば、ほぼ分かると思いますが、メモっておきます。

    1. Vundleを導入します
      $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
    2. 自分のホームディレクトリ下に、.vimrcを作成・修正し、下記のように記述します
      $ vim ~/.vimrc
      set nocompatible " be iMproved
      filetype off " required! set rtp+=~/.vim/bundle/vundle/
      call vundle#rc() " let Vundle manage Vundle
      " required!
      Bundle 'gmarik/vundle' " My Bundles here:
      "
      " original repos on github
      Bundle 'tpope/vim-fugitive'
      Bundle 'Lokaltog/vim-easymotion'
      Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
      Bundle 'tpope/vim-rails.git'
      " vim-scripts repos
      Bundle 'L9'
      Bundle 'FuzzyFinder'
      " non github repos
      Bundle 'git://git.wincent.com/command-t.git'
      " … filetype plugin indent on " required!
      "
      " Brief help
      " :BundleList - list configured bundles
      " :BundleInstall(!) - install(update) bundles
      " :BundleSearch(!) foo - search(or refresh cache first) for foo
      " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
      "
      " see :h vundle for more details or wiki for FAQ
      " NOTE: comments after Bundle command are not allowed..
    3. 上記の.vimrcを保存したら、vimを終了し、起動し直します
    4. vimが起動したら、ESCキーを押し、:(半角コロン)キーを押す
      下部に:(半角コロン)が表示されたら、
      BundleInstallと打ち込むと、.vimrcで指定したプラグインが導入されます

    5. 導入途中では、下部にProccessing…と表示され、全て導入が終わるとDoneと表示され完了です。

 

プラグインの追加は、.vimrc内に、

Bundle ‘プラグイン’

のように明記して、BundleInstallするだけです。

また、プラグインの更新はBundleInstallに!(半角)を追加するだけで、更新されます。

BundleInstall!

後は、使いたいプラグインを探して、プラグインの使い方を覚えるだけですね。

分かってみれば、すごく簡単でした。


コマンドライン(cui,fdisk)でHDD追加

今更感があるが、Linuxで稼働中のサーバにHDDを追加する場合が、たまにあるのでメモっておく。

追加のHDDは、既に物理的に接続されているものとする。

HDDを確認


# fdisk -l
….
ディスク /dev/sdb: 53.7 GB, 53687091200 バイト
ヘッド 64, セクタ 32, シリンダ 51200
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xa128e904

/dev/sdbのHDDが追加されたのを確認し、

領域作成


# fdisk /dev/sdb
コマンド (m でヘルプ): 1
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)

コマンド (m でヘルプ): t

領域が定義されていません

コマンド (m でヘルプ): n

コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-51200, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-51200, 初期値 51200):
初期値 51200 を使います

 

マンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): L

0 空 24 NEC DOS 81 Minix / 古い bf Solaris
1 FAT12 39 Plan 9 82 Linux スワッ c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx
…..
16進数コード (L コマンドでコードリスト表示): 83

マンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

フォーマット

# mkfs.ext4 /dev/sdb1

マウントしてみる (/optへマウント)


# mount /dev/sdb1 /opt
# df
/dev/sdb1 51606124 184136 48800552 1% /opt

恒久的にマウント

/etc/fstabへ追記

# vi /etc/fstab
…
/dev/sdb1 /opt ext4 defaults 1 2

fstabの書式に問題ないか、確認

# mount -a
# df

unzipで複数ファイルを一括解凍

分割zipファイルが大量にあったり、まとめて、あるフォルダ内の大量zipファイルを一気に解凍したい事がありますよね?

*(アスタリスク)使えば出来んじゃね?って、よく

$ unzip *.zip

とか、実行すると、下記のエラーが出ます。

caution: filename not matched: hove.zip

では、どうやるかと言うと、シングルクゥオーテーションで括ればよいです。

$ unzip '*.zip'

以上


Linuxにnamebenchをインストール

namebenchをLinuxにインストールした。
ソースからビルドしてインストールするので、Linux全般に導入可能。

尚、コンパイル・実行には、pythonで書かれているので、python必須

  1. ソースをダウンロード
    $ wget -c http://namebench.googlecode.com/files/namebench-1.3.1-source.tgz
  2. 解凍
    $ tar -xzvf namebench-1.3.1-source.tgz
  3. ビルドとインストール
    $ cd namebench-1.3.1
    $ python setup.py build
    $ sudo python setup.py install

実行するには、namebench.pyを走らせるだけ。

ちなみに、実行ファイルは/usr/bin/、データ等は、/usr/namebenchへインストールされてる。


CentOSに統合アーカイバ atoolをインストール

LinuxのCUIにて、いろんなタイプの圧縮形式に対応するアーカイバ「atool」をインストールした。

対応フォーマット:tar  gzip、bzip2、compress、lzop、7z、rar、lha、ace、arj、rpm、deb、jar、7zip、cpio

インストール:

$ wget http://download.savannah.gnu.org/releases/atool/atool-0.39.0.tar.gz
$ tar zxf atool-0.39.0.tar.gz
$ cd atool-0.39.0/
$ ./configure
$ make
$ sudo make install

よく使うコマンド:

  • 中身確認:atool -l <Filename>
  • 解凍:atool -x <Filename>
  • 圧縮: atool <Archive>.<拡張子> -a <Filename1> <Filename2>…..
    拡張子にて自動で圧縮形式を判断する

実際、圧縮・解凍・リストなど別々のプログラムで動作しているのだが、atoolだけ覚えた方が楽。

ちなみに、最新版ではないが、rpmやdebパッケージも下記URLに用意されている。
http://download.savannah.gnu.org/releases/atool/


FTPサーバをFXP対応にする

FTPサーバソフトウェアはデフォールトでは危険性があるので、FXPを使用不可にしていることが多い。

でも、FXP対応だと便利であるのも確かなので、proftpdとvsftpdをFXP対応にする。

*FXPとは、簡単に言うと、クライアントのコネクションを経由しなくとも転送元のサーバから別のサーバにデータを転送できるプロトコルです。

 

vsftpd

/etc/vsftpd/vsftpd.confに下記2行を追加


pasv_promiscuous=YES

port_promiscuous=YES

ProFTPD

/etc/proftpd.conf内のGlobalセクション内に下記1行を追加

 AllowForeignAddress on 

編集・保存後は、それぞれプログラムを再起動

 

FXP転送を使用するには、FXP対応のクライアントでないと意味ありません。


メモリ開放スクリプトをCronで実行

Linuxでも物理メモリが段々圧迫されて、未使用領域が少なくなってきます。
それほど、気にする必要はないのですが、知ってしまうと気になってしまうんですよね。

って事で、「CentOS 5で「空きメモリ」を増やす方法」のページを参考に、シェルスクリプトを借用させて頂きました。

date;
echo "total/used/free/shared/buffers/cached";
echo "before";
free -m|grep Mem:;
sync;
echo 3 > /proc/sys/vm/drop_caches;
echo 0 > /proc/sys/vm/drop_caches;
echo "after";
free -m|grep Mem:;

このスクリプトに、実行権限を与えて、/etc/cron.daily/に放り込むだけ。

但し、一度、手動でスクリプトを実行させ、問題ないことを確認した方が良いでしょう。

私の環境では、下記のようにメモリが開放されました。

            total used free shared buffers cached
before
Mem: 64396 52907 11489 0 695 49146
after
Mem: 64396 1791 62605 0 0 34

ちなみに、このスクリプトは、CentOS,Redhat,Ubuntu,Fedoraでも汎用性があるようです。

詳しくは、「減り続けるメモリ残量! 果たしてその原因は!?」をご覧頂ければと思います。


ページ:12