MW211 EXIT

devlog
Linux/メモリリークの確認
2014年07月19日
メモリ使用量を確認する方法。

全体の空き状況を確認するには「free」コマンドを使う。
┌──────────────────────────────────────┐
│# free                                                                      │
├──────────────────────────────────────┤
│              total         used         free       shared      buffers     │
│  Mem:        66666        44444        22222            0        11111     │
│ Swap:            0            0            0                               │
│Total:        66666        44444        22222                               │
└──────────────────────────────────────┘
「total」=「used」+「free」なので、
「Mem」における「free」の「total」に対する割合がある程度あれば問題なし。

プロセス個別の使用状況を確認するには「top」コマンドを使う。
┌──────────────────────────────────────┐
│# top                                                                       │
├──────────────────────────────────────┤
│Mem: 44444K used, 22222K free, 0K shrd, 11111K buff, 12121K cached          │
│Load average: 0.00, 0.00, 0.00    (State: S=sleeping R=running, W=waiting)  │
│                                                                            │
│  PID USER     STATUS   RSS  PPID %MEM COMMAND                              │
│ 1001 root     S <     6000     1 11.0 process1                             │
│ 1002 root     S <     1000     1  2.4 process2                             │
└──────────────────────────────────────┘
ある期間の前後で計測し、「%MEM」の値が劇的に増加していなければまずはOK。
さらに長期間での前後で計測し、じわりじわりと増加していないかも確認。
分類:Linuxシェル
Linuxシェル/起動中の場合のみkill
2014年07月17日
特定のプロセスを終了させるが、やみくもに「killall」をしても
起動していなければエラーとなる。
ま、気にしないというのもありだが、チェックした上で実行するには…。
┌──────────────────────────────────────┐
│isKill=`ps -ef | grep " プロセス名 " | grep -v grep | wc -l`                │
│if [ $isKill = 1 ]; then                                                    │
│    killall プロセス名                                                      │
│    sleep 1                                                                 │
│fi                                                                          │
└──────────────────────────────────────┘
「ps」コマンドで当該プロセスの行を「grep」して、行数を求める。
但し、そのままだと「grep」している自身の行も含まれてしまうので
それを除いて行数を求める。
で、一行あれば(たぶん二行以上はない)、「kill」実行可ってことだ。
分類:Linuxシェル
Linux/ファイル検索
2014年07月14日
┌──────────────────────────────────────┐
│find パス -name ファイル名                                                  │
└──────────────────────────────────────┘
パス配下(孫階層以降も含む)から、指定したファイル名を検索し
結果をフルパスで表示(出力)してくれる。

例としては、以下のような感じ。
┌──────────────────────────────────────┐
│find / -name hoge.txt                                                       │
└──────────────────────────────────────┘
分類:Linuxシェル
Linux/システム時刻を確認するコマンド
2014年07月04日
「date」

結果例)「Wed Aug 27 14:33:48 JST 2014」
分類:Linuxシェル
Linuxシェル/cd移動
2014年06月24日
シェル内で「cd」コマンドでカレントディレクトリを移動するように記述しても
実行した結果、実行時のままのディレクトリにいるということがある。

ということで、こういう場合でも移動できるようにする方法。
┌──────────────────────────────────────┐
│. ./シェル.sh                                                               │
└──────────────────────────────────────┘
先頭に「.」をつけるとよい。

但し、これは非推奨らしくいわば裏技のようだ。
分類:Linuxシェル
Linux/二重圧縮(zip)
2013年09月14日
「tar」コマンドを二回連続で実行すると上書されたが、「zip」コマンドの場合は?

まず一回目。
┌──────────────────────────────────────┐
│$ zip z.zip a.txt                                                           │
│  adding: a.txt (deflated ??%)                                              │
└──────────────────────────────────────┘
そして二回目。
┌──────────────────────────────────────┐
│$ zip z.zip b.txt                                                           │
│  adding: b.txt (deflated ??%)                                              │
└──────────────────────────────────────┘

さて、結果は?解凍してみよう。
┌──────────────────────────────────────┐
│$ unzip z.zip                                                               │
│Archive:  z.zip                                                             │
│  inflating: a.txt                                                          │
│  inflating: b.txt                                                          │
└──────────────────────────────────────┘
なんとこちらは追加になる。

ちなみに圧縮するファイルの中身(「a.txt」など)が同名の場合には、
上書されるようだ。
分類:Linuxシェル
Linux/二重圧縮(tar)
2013年09月13日
「tar」を二回連続して実行した場合。

まず一回目。
┌──────────────────────────────────────┐
│$ tar -cf z.tar a.txt                                                       │
│$ tar -tf z.tar                                                             │
│a.txt                                                                       │
└──────────────────────────────────────┘

そして二回目。
┌──────────────────────────────────────┐
│$ tar -cf z.tar b.txt                                                       │
│$ tar -tf z.tar                                                             │
│b.txt                                                                       │
└──────────────────────────────────────┘
上書されてしまう。

上書されて困る場合には「--backup=numbered」を付けると、世代管理しつつ
バックアップしてくれる。
┌──────────────────────────────────────┐
│$ tar --backup=numbered -cf z.tar b.txt                                     │
└──────────────────────────────────────┘
この場合だと、「z.tar.~1~」といった退避ファイルができる。
世代管理が不要なら「--backup」だけでもバックアップされる。


上書自体をエラーではじく方法は…?
わからない。事前に「ls」とかで確認して分岐か?
オプションとかあればいいんだが、とにかく既定は強制上書のようだ。
分類:Linuxシェル
シェル/ファイル分割
2013年08月25日
「EOF」という文字のある行を境にファイルを分割するシェル。
┌──────────────────────────────────────┐
│#!/bin/sh                                                                   │
│sed '1,/EOF/{ w out1.txt                                                    │
│d                                                                           │
│}' in.txt > out2.txt                                                        │
└──────────────────────────────────────┘
分類:Linuxシェル
Linux/ダミーファイルの作成方法
2013年08月21日
ディスクをいっぱいにしたい時などのダミーファイル作成方法。
┌──────────────────────────────────────┐
│$ dd if=/dev/zero of=testdata bs=1024 count=100                             │
│100+0 records in                                                            │
│100+0 records out                                                           │
├──────────────────────────────────────┤
│$ ls -l                                                                     │
│-rw-rw-r--    1 root     root       102400 Sep 10 14:22 testdata            │
└──────────────────────────────────────┘
上記のようにすれば100KBの空ファイルが作成される。
「/dev/zero」は「\0」の塊を指す特殊ファイルで、これを入力ファイルとして
任意の出力ファイルに出力すればよい。
「bs=1024」はブロックサイズ(1024(=1KB)程度でよいだろう)で、
「count=100」はそのブロックの回数、つまり「bs」×「count」がサイズとなる。
分類:Linuxシェル
Linux/timeコマンド
2013年08月08日
「time」コマンドを使うと、コマンドの実行時間を計測することができる。
┌──────────────────────────────────────┐
│$ time コマンド                                                             │
│real    0m 00.00s                                                           │
│user    0m 00.00s                                                           │
│sys     0m 00.00s                                                           │
└──────────────────────────────────────┘

例えば、「ls」コマンドの実行時間を測る場合にはこんな感じ。
┌──────────────────────────────────────┐
│$ time ls                                                                   │
└──────────────────────────────────────┘

結果をログに記録したい場合には、括弧で括って、「2>」で出力すればよい。
#「>>」であれば追加出力(「>」は上書出力)
┌──────────────────────────────────────┐
│(time ls) 2>> log.txt                                                       │
└──────────────────────────────────────┘
「2>」の指定は標準エラー出力の向き先の指定を行うものだから、
実行時間は標準エラー出力に出力されるってことらしい。
分類:Linuxシェル
前へ 1 2 3 次へ