LINUX コマンド

2008-07-03

split [ファイル管理コマンド]

split コマンド

ファイルを複数に分割するコマンドです。分割元ファイルはそのまま残ります。分割ファイル名は、指定文字列に”aa”、”ab”・・・となります。

# ls -l
合計 136172
-rw-r--r--  1 root root 139160749  7月  3 16:19 yaruo_db.dump
# split -C 10m yaruo_db.dump  yaruo_db.dump_spt-
# ls -l
合計 272392
-rw-r--r--  1 root root 139160749  7月  3 16:19 yaruo_db.dump
-rw-r--r--  1 root root  10485716  7月  3 16:25 yaruo_db.dump_spt-aa
-rw-r--r--  1 root root  10485672  7月  3 16:25 yaruo_db.dump_spt-ab
-rw-r--r--  1 root root  10485704  7月  3 16:25 yaruo_db.dump_spt-ac
-rw-r--r--  1 root root  10485718  7月  3 16:25 yaruo_db.dump_spt-ad
-rw-r--r--  1 root root  10485671  7月  3 16:25 yaruo_db.dump_spt-ae
-rw-r--r--  1 root root  10485722  7月  3 16:25 yaruo_db.dump_spt-af
-rw-r--r--  1 root root  10485698  7月  3 16:25 yaruo_db.dump_spt-ag
-rw-r--r--  1 root root  10485677  7月  3 16:25 yaruo_db.dump_spt-ah
-rw-r--r--  1 root root  10485706  7月  3 16:25 yaruo_db.dump_spt-ai
-rw-r--r--  1 root root  10485694  7月  3 16:25 yaruo_db.dump_spt-aj
-rw-r--r--  1 root root  10485698  7月  3 16:25 yaruo_db.dump_spt-ak
-rw-r--r--  1 root root  10485677  7月  3 16:25 yaruo_db.dump_spt-al
-rw-r--r--  1 root root  10485695  7月  3 16:25 yaruo_db.dump_spt-am
-rw-r--r--  1 root root   2846701  7月  3 16:25 yaruo_db.dump_spt-an

  • -l オプションは、指定した行数分ずつファイルを分割します
  • -b オプションは、指定したバイト数ずつファイルを分割します
  • -C バイト数:指定したバイト数を超えない範囲でファイルを分割します

# cat yaruo_db.dump_spt* >>  yaruo_db.dump_new

結合するときはこんな感じですかね・・・。

| | コメント (0) | トラックバック (0)

2008-07-01

watch [プロセス管理コマンド]

watch コマンド

[shell] やる夫がお手軽監視スクリプトを作成したようです。でくり返しコマンドを実行するshellを紹介しましたが、もっと楽なものがあったようです。

  • watch -n [秒数] [command]

#  watch -n 1 "mysqladmin processlist | grep 192.168.2"
Every 1.0s: mysqladmin processlist | grep 192.168.2     Tue Jul  1 08:38:54 2008

| 5930744 | neet | 192.168.2.11:2330  | yaruo_db | Sleep   | 444  |
| 5932367 | neet | 192.168.2.12:2424  | yaruo_db | Sleep   | 440  |
| 5932368 | neet | 192.168.2.12:2427  | yaruo_db | Sleep   | 319  |

mysqlプロセスリストの監視です。上記では1秒間隔。”-n”オプションを付けないと2秒間隔での監視となります。

| | コメント (0) | トラックバック (0)

2008-06-04

[shell] やる夫がリストファイル分だけループ処理するshellを作成しました。

リストファイル分だけループ処理する。

リストファイルがあり、そのリストファイル分だけ、ループし処理を行うshellを紹介します。下記例では、”list.txt”ファイルを読み込み、そのリスト分(行)だけループし、結果を”rsult.txt”として出力するサンプルshellとなります。

あまりいい例が思い浮かびませんでした。sed使えばって言われればそれまで・・・。

$ ls
list.txt    yaruo.sh   
$ vi yaruo.sh
-----
#! /bin/sh

while read line  #line変数には、list.txtの一行を格納
do

 #ココで、実施したい処理を記載
  echo "neet corporation '$line'" >> rsult.txt

done < list.txt
-----
$ cat list.txt
1.yaruo
2.yaruo
3.yaruo
4.yaruo
5.yaruo
$ ./yaruo.sh
$ ls
list.txt    rsult.txt    yaruo.sh
$ cat result.txt
neet corporation '1.yaruo'

続きを読む "[shell] やる夫がリストファイル分だけループ処理するshellを作成しました。"

| | コメント (0) | トラックバック (0)

2008-06-02

[shell] やる夫には、hosts書込み権限がありません。

hosts設定

サービス機へのログインはどのように実施しているでしょうか?やる夫の会社では、踏み台gatewayサーバから、各サービス機へログインするようです。gatewayサーバは、セキュリティ班が管理していて、hostsもろくに編集させてくれません。

かといって、いちいちエクセル管理からIPアドレスを検索してサービス機へログインするのも面倒臭いですね。なのでやる夫は、hostsをアカウントディレクトリで個別に管理するようにしたようです。

構成図

    +--------+ +--------+
    |indigo01| |indigo02|
    +---+----+ +---+----+
        |          |
    +---+----------+------- 192.168.2.0/24    

        |                  (サービス機セグメント)
    +---+---+
    |
gateway| <-- コレ経由でサービス機へログイン
    +---+---+
        |
        +---------+------- 192.168.1.0/24
        |         |       (会社作業端末)
    +---+---+ +---+---+ 
    |client1| |client2|
    +---
----+ +-------+  


     ____
   /      \ ( ;;;;(     いちいちセキュリティ班にhosts追加してって連絡するのも
  /  _ノ  ヽ__\) ;;;;)     メンドクサイ・・・
/    (─)  (─ /;;/   telnetログインする時だけなので
|       (__人__) l;;,´        まぁよかろうもん・・・
/      ∩ ノ)━・'/ 
(  \ / _ノ´.|  |
.\  "  /__|  | 
  \ /___ /  

やる夫のサンプルshell

要は、/etc/hosts に書き込み権限がないので、アカウントディレクトリで個別にhostsを管理してしまうという感じです。

$ pwd
/home/yaruo
$ vi yaruo.ch
-----
#!/bin/sh HOST=$1
set `grep $HOST hosts | grep -v "^#" | wc -l`
if [ $1 -eq 0 ];
then
        eval telnet $HOST
else
        set `grep $HOST hosts | grep -v "^#"`
        eval telnet $1
fi
-----
$ cat hosts
192.168.2.10 indigo01
192.168.2.11 indigo02

$ yaruo.ch indigo01
Trying 192.168.2.10...
Connected to 192.168.2.10.
Escape character is '^]'.
Red Hat Enterprise Linux ES release 4 (Nahant Update 3)
Kernel 2.6.9-34.ELsmp on an i686
login:

続きを読む "[shell] やる夫には、hosts書込み権限がありません。"

| | コメント (0) | トラックバック (1)

2008-05-13

やる夫がメモリの空き容量を調べるようです。

free コマンド

メモリの使用量を調調べます。ちょっとだけ見方を記載します。

オプション無し

$ free
             total       used       free     shared    buffers     cached
Mem:       8161968    6252848    1909120          0     168084    1416452
-/+ buffers/cache:    4668312    3493656
                                 ^^^^^^^ -①
Swap:     12586916          0   12586916
                      ^^^^^^^ -②

見やすい値

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7970       6106       1864          0        164       1383
-/+ buffers/cache:       4558       3411
Swap:        12291          0      12291

  • -m オプションでMB表示になります。見やすいですね。

メモリの空き容量を調べる

①がメモリの空き容量となります。計算方法としては下記になります。上記例だと3GB程余裕があるようです、すごいですね・・・。②の値が高いとswapしていることになります。

  • free + buffres + cached = メモリ空き容量

自然状態のときと、トラブル時の値を何度も見て慣れておく必要があると思います。

リアルタイム表示

$ free -s 5
             total       used       free     shared    buffers     cached
Mem:       8161968    6253488    1908480          0     168084    1415636
-/+ buffers/cache:    4669768    3492200
Swap:     12586916          0   12586916              total       used       free     shared    buffers     cached
Mem:       8161968    6253648    1908320          0     168084    1415636
-/+ buffers/cache:    4669928    3492040
Swap:     12586916          0   12586916

  • -s [n] オプションでn秒感覚で結果を表示します。上記例だと5秒間隔です。

| | コメント (0) | トラックバック (0)

2008-05-09

やる夫がaliasを作成したようです。

alias について

コマンドのエイリアスコマンドを作成するにはaliasコマンドを使用します。エイリアスとはコマンドのショートカットのようなものです。

ログアウトしてしまうと、設定内容がクリアされてしまうので、ログイン時に読まれるファイルに登録してあげる必要があります。homeディレクトリにある”.bashrc”を編集します。”.bashrc”はログイン時に読み込まれるファイルです。

     ____
   /      \ ( ;;;;(
  /  _ノ  ヽ__\) ;;;;) 
/    (─)  (─ /;;/   
|       (__人__) l;;,´   いつも決まったコマンドうつのにも  
/      ∩ ノ)━・'/     うざいお・・・。
(  \ / _ノ´.|  |
.\  "  /__|  | 
  \ /___ / 

         |
     \  __  /
     _ (m) _
        |ミ|
      /  `´  \
       ____
     /⌒  ⌒\
   /( ●)  (●)\    aliasに登録しちゃえばいいんだお!
  /::::::⌒(__人__)⌒::::::\  
  |     |r┬-|     |    
  \      `ー'´     /

最近ネタがないのと、モチベーション↓により、やる夫の下りメンドクサイ今日この頃・・・。

# vi ~/.bashrc
-----
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
+ alias yaruo='cd /usr/local/yaruo/shell ;pwd'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
-----
# source

  • + は新たに追加した行です。
  • source は”.bashrc”の編集を有効にします。

コマンドから設定

# alias yaruo='cd /usr/local/yaruo/shell ;pwd'

| | コメント (0) | トラックバック (0)

2008-05-07

やる夫がコマンドでバイナリファイルを添付してメールするようです。

バイナリファイルを添付してメール

uuencodeコマンドを利用して、ファイル添付する方法を記載します。uuencodeコマンドは、バイナリファイルを暗号化してテキスト出力にしてくれるコマンドです。

uuencodeコマンドはデフォルトで入っていない可能性があります。”which”とかで確認してみて下さい。

uuencodeコマンドのインストール

yumでインストール

# yum -y install sharutils

rpmでインストール

redhatであれば、4枚目のCD-Romに入っている筈です。

# rpm -ivh sharutils-4.2.1-22.i386.rpm
警告: sharutils-4.2.1-22.2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...
########################################### [100%]
   1:sharutils
########################################### [100%]
# which uuencode
/usr/bin/uuencode

コマンドからバイナリファイルを添付してメール

下記例では、”/user/local/yaruo/yaruo.tar”ファイルを”yaruo.yyyymmdd.tar”というファイル名で添付して、”yaruo@neet.co.jp”へメールするようになっています。

# /usr/bin/uuencode /user/local/yaruo/yaruo.tar yaruo.`date +%Y%m%`.tar | mail -s "yaruo mail" yaruo@neet.co.jp

書式

  • /usr/bin/uuencode [file_name] [update_filename] | mail -s "subject" [mailaddress]

こんな感じでメールが届きます。

Subject:yaruo mail

begin 644 yaruo.20080507.tar
M'XL(""G)($@``W-L;W=Q=65R:65S+C(P,#@P-3`V+G1A<@#M&VMOVS8PG_LK
MN$]S"D_0TW:&I5@?WI8M<X8D13$4A2'+3$Q$$EU);I;]^ATEZF&2DI,V3C*'
MUX?D.XKB/7FZDV8AO8SF,\^SC32DUY]7."$X-6S3')F>.=B[#S`!!JZ;'P&$
MHV4[`V_/LDSXXSJ.;>_!<6`-]Y!Y+W??`*LT\Q.$]A)*LZYQF^C_4WA+5W'V
M([(0.B<1/K0L[\`PS13UV%FZC]`Q#:X.S0)G,L0IO4X/+<.$(?M]E-TL\=*?
M;:0DPVQS#*ZD*\J8I;Q-)-^?WWEZD6!1ZDO*+#G7>2;*.J?E#$ND<L9T%00X
M%>6;8)`@SO<?N/0*2RJ;T97250L"B8-P):LFIS$EB[<K*&EV(TED1L*0[0E+
MG!`J2A&6![F=)/<Y28L]2*'(<K[6<%D.F/G@T(%D].ETAC-?C%M@=%E"I(!*
MXQ"RC_@+)8'*`ICXY(C"L>IMHB0"BV#--ZJ@7%T/OJNT\W)`EZJJ29@),XVI
M=S8V!*1U50YI[3HI=B3TG9``RMY1;O6J,7F1\3NYNUM,,(=$I.O[+)X%=21!
MMWCK[(DWYMRB,;<IT=N1QES)M5-PO2FEW_56U?/H3SX+;C<UYAY$"+O1\)%:
MF:/\C7W=RKQS*U.R,OLNK4S'[&YE/G931(,&#1HT:-"@08,&#1HT:-"@08,&
G#1HT:-"@08,&#1HT:-"@08,&#1HT:-"@08.&)PK_`5C4>```>```
`
end

ちゃんと添付されています。本文のこのバイナリ文字列はなんとも汚いですがしょうがない。

ログを定期的に添付してメールするように、仕込んだのですが、考えてみればいちいち”tar.gz”を回答して見るのもなんかなぁ・・・。近いうち変更します。

| | コメント (0) | トラックバック (0)

2008-04-25

[shell] やる夫がcase文でshellを作成したようです。

case文でホスト名判定して、処理を変える

最近ネタがない・・・。下記のようなshellを作ることがあったのでカキマスタ。

例えばやる夫のサービス環境が下記のような感じで、各サーバの用途によってshellの実行結果を変更したいとき、case文を使ってみては如何でしょうか?

  • indigo05 ~ indigo08 サーバはwebサーバ
  • navyblue1 ~ navyblue4 サーバはaplサーバ

          ____
       / \  /\ キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \   iti is not a pertinent server...
    |      |r┬-|    |  
     \     `ー'´   /   
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwwwwwwwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

標準出力って普通英語で書きますよね(もちろんエキサイト翻訳)・・・。日本語で出力すれば親切かと思いきや人によって、リモートツールの文字コードがバラバラなので、英語で書いて上げるのが親切だと思っています。

英語で書いて気取ってるんじゃねぇ~よって言う、やる夫の考えは実は間違え・・・。

# vi sample_case.sh
-----
### hostname set
nodename=`hostname`

###-----
### deploy
case "$nodename" in

    ### indigo05~indigo08サーバにmatch
    indigo0[5-8])
        echo "yaruo_1"  ※ココに処理を書く
        ;;

    ### navyblue1~naviblue4サーバにmatch
    navyblue[1-4])
        echo "yaruo_2"
        ;;

    ### 上記matchしなかったサーバ
    *)
        echo "it is not a pertinent server..."
        exit 1
        ;;

esac
-----

| | コメント (0) | トラックバック (0)

2008-04-23

xargs [ファイル管理コマンド]

xargsコマンド

標準出力から引数を読み込み、指定のコマンドを実行するコマンドです。

  • # [command] | xargs [command]

下記では、”/usr/local/yaruo/conf”ディレクトリから、”.conf”のつくファイルを検索し、その標準出力結果から、”yaruo”という文字列を”grep”するものです。

# find /usr/local/yaruo/conf -name  \*.conf -type f | xargs grep -n yaruo
/usr/local/yaruo/conf/httpd-yaruo.conf:4:##    /usr/local/yaruo/conf/httpd-yaruo-default.conf
/usr/local/yaruo/conf/httpd-yaruo.conf:266:<Directory /usr/local/yaruo/neet>
/usr/local/yaruo/conf/httpd-yaruo.conf:270:<Directory /usr/local/yaruo/neet_key>
/usr/local/yaruo/conf/httpd-yaruo.conf:274:<Directory /usr/local/yaruo/drp>
/usr/local/yaruo/conf/httpd-perl.conf:32:DocumentRoot /usr/local/yaruo/htdocs
/usr/local/yaruo/conf/httpd-perl.conf:33:<Directory "/usr/local/yaruo/htdocs">

  • grep -n オプションは、行番号を表示します。
  • find -type f オプションは、通常ファイルのみを検索表示します(シンボリックリンクとかは外す)。

標準出力結果から、あるコマンドを叩きたい場合に利用します。へぇ~。

| | コメント (0) | トラックバック (0)

2008-04-21

vmstat [プロセス管理コマンド]

vmstat コマンド

メモリーやCPUの負荷率や使用状況を表示するコマンドです、サーバ負荷の確認時に利用します。”vmstat [n]”でn秒感覚で出力します。

$ vmstat 5
   procs                      memory      swap          io     system      cpu
r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
0  0  0  43528   4484  33748  58208    0    1     6     4    2     1  3  3  3
0  0  0  43528   4492  33756  58260    0    0     0    32 1018   494  1  8 91
1  0  0  43528   4492  33756  58324    0    0     0    38  966   515  2  8 91
[↓swapしている]
0  0  2  43528   4492  33756  58344  789   89     0    30  710   256  2  5 93
1  0  0  43528   4492  33760  58384  650   72     2    46  727   281  2  4 93

  • procs アクティブなプロセスに関する統計
  • memory メモリーの使用量と使用可能量に関するデータ
  • swap  スワップに関する統計
  • iO デバイスとの転送量
  • system システム全体の割り込みおよびコンテキストの切り替えレート
  • cpu CPUの使用量の割合

| | コメント (0) | トラックバック (0)

2008-04-17

[shell] やる夫がsleep使ったshellを作成したようです。

sleep を利用して特定時間にコマンドを実行する

他にも使い方はあるのかも知れませんが、一般的には、”sleep [n]”で n秒間待機します。下記サンプルでは、mysqlのプロセスリストを、15秒間置きに取得して、prosesslistyyyymmddHHMMSS という形式で出力するものです。

# vi prosesslist.sh
-----
#!/bin/sh
yaruo_num=0

# 240回ループします。15秒×240で1時間分の取得
while [ $yaruo_num -ne 240 ]
do

    mysqladmin processlist > prosesslist`date +%Y%m%d%H%M%S`
    sleep 15    #15秒間の待機
    yaruo_num=`expr $yaruo_num + 1`

done
-----
# ls
[実行]
prosesslist.sh
# ./prosesslist.sh

[結果]
# ls
prosesslist.sh  prosesslist20080417101918  prosesslist20080417101933

| | コメント (0) | トラックバック (0)

2008-04-09

[shell] やる夫がshellで計算するようです。

shellによる計算

shell自体は計算機能を持たないので、exprを使用します。そうなんだ・・・。

下記サンプルshellでは、yaruo.logの行数を取得して、Lineに格納し、その値に対して-1を実施しています。

    / ̄ ̄ ̄ \
   / ::::\:::/:::: \   ・・・・・・・
 /  <●>::::::<●>  \     shellの基本的なことなのですが・・・。
 |    (__人__)     |
 \    ` ⌒´    /

# wc -l yaruo.log
33 yaruo.log
# vi sample.sh
-----
Line=`wc -l yaruo.log | cut -f1 -d' '`
### extra line
head_num=`expr $Line - 1`
echo $line
-----
# ./sample.sh
32

  • wc -l でyaruo.logの行数を取得します。
  • cut -f1 -d' ' で行数取得結果の整形をします。

| | コメント (0) | トラックバック (0)

2008-04-07

scp [ネットワーク管理コマンド]

scp コマンド

ネットワーク管理コマンドなのかどうかはちょっと微妙ですが、ネットワーク間のファイル転送ができるコマンドです。冗長構成をとっている環境で同じ設定ファイルをコピーするときに便利です。

サーバ構成


    +--------+   +--------+
    |indigo01|   |indigo02|
    +---+----+   +---+--/etc/neet/yaruo.cfg
        |  <--copy   | 
    ----+------------+----------- 192.168.2.0/24   

indigo02の”/etc/neet/yaruo.cfg”ファイルをindigo01の”/etc/neet”配下へコピーする例です。

[indigo01]# pwd
/etc/neet
[indigo01]# ls
yaranaio.cfg
[indigo01]# scp indigo02:/etc/neet/yaruo.cfg /etc/neet/yaruo.cfg
The authenticity of host 'indigo02 (192.168.2.11)' can't be established.
RSA1 key fingerprint is 6c:22:9c:74:d4:1b:46:23:47:9d:ne:et:ya:r5:u7:oe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'indigo02,192.168.2.11' (RSA1) to the list of known hosts.
root@indigo02's password:
yaruo.cfg                                                                              100% 2549     2.5KB/s   00:00
[indigo01]# ls
yaranaio.cfg yaruo.cfg
[indigo01]# scp /etc/neet/yaruo.cfg indigo02:/etc/neet/yaruo.cfg.bak
※こうするとindigo02へ”/etc/neet/yaruo.cfg.bak”としてコピーします。

| | コメント (0) | トラックバック (0)

2008-04-01

bg/fg [プロセス管理コマンド]

bg コマンド

バックグランドでジョブを実行するように切り替えるコマンドです。

ないとは思いますが、長いこと時間のかかるDBレストアコマンドを、フォアグランドで実施したとします。夜な夜なの作業で、寝ぼけて[Ctrl]+[c]を押下してみたとか・・・。

       ____
     /⌒  ⌒\
   /( ●)  (●)\    レストアコマンド打ったし後は
  /::::::⌒(__人__)⌒::::: \           4時間程暇になるお!
  |     |r┬-|     |     
  \      `ー'´     /

      ____
     /_ノ ' ヽ_\
   /(≡)   (≡)\    ニコニコでカイジの続きみるお!

  / /// (__人__) ///\
  |     |r┬-|      |
  \     ` ー'´    /

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ    利根川最高だお!
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒) 
| / / /     |r┬-|    | (⌒)/ / / //
| :::::::::::(⌒)    | |  |   /|^| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|     ノ     | |  |   \| |             |   / ̄ ̄ ̄
ヽ    /     `ー'´     | |            |  <  質問には 
 |    |   l||l 从人 l||l   | |     VAIO     |   \ 一切お答え出来ません・・・・!
 ヽ    ---一ー_~、⌒)、⌒)^),|_|              |     \___
  ヽ _____,ノ|____|_|____________|

           ____
       /:::::::::::::::: \
      /::::::─三三─\     メモリがたんなくなって
    /:::::::: ( ○)三(○)\         PCおちた・・・ちょ・・・おま・・・
    |::::::::::::::::::::(__人__)::::  |  ________
     \:::::::::   |r┬-|   ,/ .| |          |
    ノ::::::::::::  `ー'´   \ | |          |  
  /:::::::::::::::::::::             | |          |  
 |::::::::::::::::: l               | |          |

レストア中盤で、こうなってしまっては悲劇です。再度レストア実施しなければなりません。メンテナンス時間とか遅れちゃいますね。

            / ̄ ̄\
          /   _ノ  \
          |    ( ●)(●)
          |     (__人__)  
             |     ` ⌒´ノ    遅れた理由は!?
              |         } 
              ヽ        }
            ヽ、.,__ __ノ
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|

    / ̄ ̄ ̄ \
   / ::::\:::/:::: \   ・・・・・・・。
 /  <●>::::::<●>  \   質問には一切お答えしません。 
 |    (__人__)     |
 \    ` ⌒´    /

      / ̄ ̄\   
    /ノ( _ノ  \       ・・・・・・。
    | ⌒(( ●)(●)   
    .|     (__人__) /⌒l
     |     ` ⌒´ノ |`'''|
    / ⌒ヽ     }  |  |              
   /  へ  \   }__/ /             / ̄ ̄\    ニコニ・・・
 / / |      ノ   ノ           / ●)) ((●\’, ・ 
( _ ノ    |      \´       _    (   (_人_)’∴ ),  ’
       |       \_,, -‐ ''"   ̄ ゙̄''―---└'´ ̄`ヽ   て
       .|                  ______ ノ    (
       ヽ           _,, -‐ ''"  ノ       ヽ   r'" ̄
         \       , '´        し/..     | J
          \     (           /      |
            \    \         し-  '^`-J

# updatedb

[1]+  Stopped                 updatedb

# jobs
[1]+  Stopped                 updatedb
# bg 1
[1]+ updatedb &
# ps axuw | grep updatedb
root      7664  0.0  0.0  3568  464 pts/1    S+   07:57   0:00 grep updatedb
[1]+  Done                    updatedb

# updatedb &
[1] 7871
#
[1]+  Done                    updatedb

そうならないように、重要なコマンドはバックグラウンドで実施するようにしましょう。特に私のPCはがっつん×2で落ちるので、正直困ってます。メンテ中に2回も落ちたことあり・・・orzやっててよかった、cron処理・・・。

下記例では、ジョブの一時停止と、バックグランドへの切り替え方法になります。対象コマンドは、やたらと時間のかかる”updatedb”でやtってみます。

  • jobs で現在のジョブの登録状況を確認します。Stoppedは停止中ですね。
  • bg [job登録番号] でバックグランドへ切り替えします。上記例だと[1]ですね。
  • コマンド実行時に & を後ろに付けると、はじめからバックグランドで動きます。

fg コマンド

フォアグラウンドでジョブを実行するよう切り替えるコマンドです。

# updatedb

[1]+  Stopped                 updatedb
# fg 1
updatedb

| | コメント (0) | トラックバック (1)

2008-03-25

ipcs/ipcrm [プロセス管理コマンド]

ipcs コマンド

プロセスで使用している、共有メモリ量やセマフォの量を確認できます。

# ipcs -a

------ 共有メモリセグメント --------
キー     shmid      所有者  権限     バイト  nattch     状態
0x00000000 32768      gdm       600        196608     2          対象

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems

------ メッセージキュー --------
キー     msqid      所有者  権限     使用バイト数 メッセージ

ipcrm コマンド

apacheとかのプロセスを落としても、まだメモリを使用しているときがあります。なんか悪さしているようでしたら、”ipcrm”で削除できます。

これで解決できるようなトラブルではたいしたことはない筈・・・。どうにもこうにもって人は他をあったった方がよろし・・・。

ipcrm -s 32768

| | コメント (0) | トラックバック (0)

2008-03-15

cat [ファイル管理コマンド]

cat コマンド

catコマンドはテキストファイルの内容を閲覧やファイルを連結できます。

オプション

オプション 機能
-n 行番号を表示
-b 空白以外に行番号を表示
-s 連続空白を1行の空白にする

実行例

# cat yaruo.log
neet1
neet2
# cat yaranaio.log
neet3
neet4
# cat yaruo.log yaranaio.log > dekiruo.log
# cat dekiruo.log
neet1
neet2
neet3
neet4
# cat -n yaruo.log
1 neet1
2 neet2

| | コメント (0) | トラックバック (0)

2008-03-10

touch [ファイル管理コマンド]

touch コマンド

空ファイルの作成やタイムスタンプの変更/更新時に利用します。フラグ的な感じで、あるディレクトリに対しファイルを作成したいときなどに利用すると思います。

# ls -lu
-rw-r--r--   1 root root 12829188  1月  3 05:07 yaruo.txt
# touch yaranaio.txt
# ls -l yaranaio.txt
-rw-r--r--   1 root root        0  3月 10 16:08 yaranaio.txt

  • -t オプションは、指定した時刻と日付に変更します。上記例では1/3 05:07になるようにタイムスタンプの変更をしています。
  • オプションがなければ、からファイルを作成します。

備考

ついでなんですが、一般ユーザがログインすることを禁止するときも。touchコマンドを利用します。解除するときは、単に削除すればよいだけです。

# touch /etc/nologin

| | コメント (0) | トラックバック (0)

2008-03-07

[linux] やる夫がcronの設定をするようです。

cronについて

cronとは、ジョブを自動実行するためのデーモンプロセスです。例えば毎朝7時にあるshellを実行するとか・・・。sarとかもcronで動いていたと思った。

cron設定方法

cronの設定方法をいくつか記載します。

# 毎日3:05、18:05にyaruo.shを実行
5 3,18 * * * /home/yaruo/bin/yaruo.sh > yaruo.log 2>&1

# 5分おきにyaruo.shを実行
*/5 * * * *  /home/yaruo/bin/yaruo.sh

# 3/7 12:30にyaruo.shを実行
30 12 7 3 *  /home/yaruo/bin/yaruo.sh

# 日曜日12:00にyaruo.shを実行
0 12 * * * 0 /home/yaruo/bin/yaruo.sh

/deb/null 2>&1 標準出力だけでなく、標準エラー出力もリダイレクトするための指示です。ようは余計な画面表示がなくなります。

cron設定をすると”/var/spool/cron/”配下に設定ファイルが作成されます。rootユーザでcron設定すると、”/var/spool/cron/root”というファイルが出来ている筈です。

cronログについて

ログは”/var/log/cron”に出力されます。indigo01はhost_nameを指しています。

# tail /var/log/cron
Mar  7 07:51:46 indigo01 crontab[10196]: (root) BEGIN EDIT (root)
Mar  7 07:51:51 indigo01 crontab[10196]: (root) REPLACE (root)
Mar  7 07:51:51 indigo01 crontab[10196]: (root) END EDIT (root)
Mar  7 07:52:01 indigo01 crond[10200]: (root) CMD (date)
Mar  7 07:52:01 indigo01 crond[3181]: (root) RELOAD (cron/root)

cronを設定しても直ぐに反映されません。上記例だと07:52:01にcron設定ファイルをRELOADしているので、この時点で晴れてcron設定が有効になります。試験的にcronを仕掛けるときは、3分後とかに設定するとよいでしょう。

----------------------------------------

日経 Linux (リナックス) 2008年 03月号 [雑誌]
日経BP出版センター日経BP出版センター日経BP出版センター
定価 : ¥ 1,490
2008-02-08
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-03-06

やる夫がBasic認証の設定をするようです。

Basic認証について

Basic認証とは、HTTPで定義される認証の一つです。まれにどこかのサイトにアクセスしたときに出てきて見かけたことあると思います。

Yaruo














簡易的な認証方法だと思っています。なので一度認証を通過してしまうと、Webブラウザを閉じるまでその情報が有効になってしまいます。

Basic認証してるから安心と思うと結構勘違いです、接続もとのアドレスが分かっていれば、そのIPのみ受付を許可するように制限かけたり、した方がよいです。まぁネットカフェとかでアクセスするときは慎重に(?)すればよい。いや・・・会社情報にネットカフェからアクセスすることがおかしいのだが・・・。

            / ̄ ̄\
          /   _ノ  \
          |    ( ●)(●)
          |     (__人__)  
             |     ` ⌒´ノ    クライアントにも社内wikiを開放したいから
              |         }    Global開放しちゃったので、
              ヽ        }               念のためBasic認証かけといて・・・
            ヽ、.,__ __ノ
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|

          ____
       / \  /\  キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \    Basic認証だけだと
    |      |r┬-|    |          セキュリティに問題あるお!
     \     `ー'´   /               やらない夫は分かってないお!
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

      / ̄ ̄\   
    /ノ( _ノ  \            お前に言われなくても、クライアントのIPだけ
    | ⌒(( ●)(●)            アクセスできるように絞ってんだよ!
    .|     (__人__) /⌒l
     |     ` ⌒´ノ |`'''|
    / ⌒ヽ     }  |  |              
   /  へ  \   }__/ /             / ̄ ̄\    ベーっシッk
 / / |      ノ   ノ           / ●)) ((●\’, ・ 
( _ ノ    |      \´       _    (   (_人_)’∴ ),  ’
       |       \_,, -‐ ''"   ̄ ゙̄''―---└'´ ̄`ヽ   て
       .|                  ______ ノ    (
       ヽ           _,, -‐ ''"  ノ       ヽ   r'" ̄
         \       , '´        し/..     | J
          \     (           /      |
            \    \         し-  '^`-J

Basic認証設定方法

ディレクトリ構成

  • /home/yaruo/public_html/neet_wiki

”neet_wiki”配下に、Basic認証を設定することとします。設定方法は簡単で、”.htaccess”と”.htpasswd”ファイルを用意してあげればOKです。

.htaccess

neet_wikiディレクトリに対して、新規作成します。今回は接続元のIP制限をしません。

# vi /home/yaruo/public_html/neet_wiki/.htpasswd
-----
# Basic認証設定をしたいディレクトリのフルパスを記入する。
AuthUserFile /home/yaruo/public_html/neet_wiki/.htpasswd
AuthGroupFile /dev/null
# ””の中身は”┗(^o^ )┓パスワード入れてね”でもよい。
AuthName "Input ID and Password."
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
    # 接続もとの設定は下記のような感じでお願いします。
    #allow from 210.165.9.195
</Files>
-----

.htpasswd

ユーザID”yaruo”でパスワード”neet”として”.htpasswd”を作成してみます。

# htpasswd -c /home/yaruo/public_html/neet_wiki/.htpasswd yaruo
New password:
Re-type new password:
Adding password for user yaruo

この時点で、Basic認証の設定は完了です。

| | コメント (0) | トラックバック (1)

2008-03-05

wc [ファイル管理コマンド]

wc コマンド

勉強した筈なんだけど、忘れてしまってました・・・。ファイルの大きさを調べるコマンドです。ちょっと最近使ったので・・・。

# cat yaruo.txt
yaruo yaranaio

neet

20080305
# wc -l yaruo.txt
5 yaruo.txt
# wc -w yaruo.txt
4 yaruo.txt
# wc -c yaruo.txt
31 yaruo.txt

  • -l オプションはファイルの行数を表示します
  • -w オプションは単語数を表示します。
  • -c オプションは文字数を表示します。

----------------------------------------

Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)
高町 健一郎 大津 真 佐藤 竜一 小林 峰子 安田 幸弘
アイ・ディ・ジー・ジャパンアイ・ディ・ジー・ジャパンアイ・ディ・ジー・ジャパン
定価 : ¥ 1,680
2007-10-06
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

Linux コマンド リファレンス

プロセス管理コマンド

システム管理コマンド

ユーザ管理コマンド

ファイル管理コマンド

パッケージ管理コマンド

ネットワーク管理コマンド

| | コメント (0) | トラックバック (0)

2008-03-04

top [プロセス管理コマンド]

top コマンド

プロセスの稼動状況をリアルタイムで表示するコマンドです。主にトラブル時に使うと思います。MemoryとCPUの使用率でソートできます。下記例ではMemoryの稼働状況でソートしたものです。
       ____
     /⌒  ⌒\
   /( ―)  (―)\     常識だお!
  /::::::⌒(__人__)⌒::::: \
  |              |
  \               /

# top
Shift + m[Enter]
-----
top - 16:06:58 up 225 days,  3:44,  2 users,  load average: 0.02, 0.01, 0.00
Tasks: 181 total,   1 running, 180 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.6% us,  1.8% sy,  0.0% ni, 97.6% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   8308268k total,  7938588k used,   369680k free,   148708k buffers
Swap:  2096472k total,      228k used,  2096244k free,  6567612k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14924 mysql     16   0 1995m 215m 3872 S  0.0  2.7  17:50.78 mysqld
14378 mysql     16   0 2013m 189m 3840 S  0.3  2.3   1:15.34 mysqld
14139 mysql     16   0 1997m 159m 3464 S  0.0  2.0   0:06.62 mysqld
17553 mysql     16   0 1990m 157m 3340 S  0.0  1.9   0:20.70 mysqld

| | コメント (0) | トラックバック (0)

2008-02-21

[shell] やる夫がshell実行中に対話させたいようです。

shell実行中に値をプロンプト入力するには

単純なサンプルshellです。shell実行中に、プロンプト表示してキーボードから値を入力するには、”read -p”を利用すればよいようです。

スクリプト

# vi yaruo.sh
-----
#! /bin/sh

yaruo="y"

while [ $yaruo = "y" ];
do

    read -p "input:" yaranaio

    if [ $yaranaio = "quit" ]; then

        yaruo="$yaranaio"

    fi

        #プログラム処理
        echo "$yaranaioと入力しました。"
        echo "quit でプログラム終了。"

done
-----

実行結果

shellの実行結果は下記になります。”quit”を入力するまで、shellが起動し続けます。”Ctrl+C”でも終了できますが・・・。

# ./yaruo.sh
input:vipper <--"vipperと入力してみます。"
vipperと入力しました。
quit でプログラム終了。
input:quit
#

----------------------------------------

UNIX C SHELLフィールドガイド
G アンダーソン P. アンダーソン 落水 浩一郎 大木 敦雄
パーソナルメディアパーソナルメディアパーソナルメディア
定価 : ¥ 3,675
1987-10
amazonで詳しく見る

| | コメント (0) | トラックバック (0)

2008-02-14

やる夫がアカウント管理をするようです。

アカウント管理について

プロジェクトリソースの入れ替え時期になると、アカウント管理をよくやると思います。基本的なことなので、先輩方は”ちょっとやっといて”って感じでお願いしてきます。

            / ̄ ̄\
          /   _ノ  \
          |     -□-□)
          |     (__人__)   新メンバーが加わったので
             |     ` ⌒´ノ       アカウント作成しておいてくれない?
              |         }
              ヽ        }    (アカウント作成くらいできるだろ・・・
            ヽ、.,__ __ノ                  常識的に考えて・・・)
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|
;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;:::::::::::::::::::::::\:::::゙、|||:::/::::::::::|:::

         ___
       /::::::::::  u\
      /:::::::::⌒ 三. ⌒\   
    /:::::::::: ( ○)三(○)\ 
    |::::::::::::::::⌒(__人__)⌒  |   了解したお・・・。
     \::::::::::   ` ⌒´   ,/ 
    ノ::::::::::u         \ 
    /:::::::::::::::::      u      

っと言っては見たものの、頻繁に入れ替えのあるプロジェクトだと、まぁ覚えているのですが、たまにやる作業だと、うっかり忘れてしまうことが良くあると思います。また、ユーザ作成コマンド”useradd”のオプションは数多くあるので、結局どうすればよいか・・・(この作り方は正しいのか?)等色々あると思います。下記に必要最小限にまとめて見ました。

useradd コマンド

ユーザを新規に作成するコマンドです。コマンド実行時に、新規ユーザーのホームディレクトリや、グループなどを指定する事もできます。

下記例では、”yaruo”というグループを作成して、新規に”yaruo”というユーザを”yaruo”というユーザグループで、作成しています。また”yaruo”ユーザ作成時にホームディレクトリやログインシェルの指定をしています。セキュリティ上、”yaruo”ユーザにパスワード設定もしてしまいましょう。

グループ作成

# /usr/sbin/groupadd -g 502 yauro

  • -g オプションは、新規グループIDを指定します。

アカウント作成

# /usr/sbin/useradd -u 502 -g 502 -d /home/yaruo -s /bin/bash -m yaruo
# passwd yaruo
Changing password for user yaruo.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

  • -u オプションは、ユーザIDを指定します。
  • -g オプションは、グループを指定します。先に”502”でグループ作成してますね。
  • -d オプションは、ホームディレクトリを指定します(勝手に作ってくれます)。
  • -s オプションは、ログイン時のシェルを指定します。
  • -m オプションで、作成するユーザ名を指定(”-m”を付けなくても良い)。

既存ユーザIDの確認

ユーザIDは同じものを利用してしまうと”useradd”コマンド実行時に起こられてしまいます。デフォルトで0~99までは、ほぼ予約されているようです。重複さえしなければよいので、管理しやすいID番号を付与すればよいかと思います。既存ユーザIDの確認は、下記で確認できます。

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
yaranaio:x:501:501::/home/yaruo:/bin/bash   
yaruo:x:502:502::/home/yaruo:/bin/bash

”yaruo”が追加されていますね。

userdel コマンド

アカウントを一旦作っては見たものの、失敗した・・・とかあったら、削除してしまえばよいです。”yaruo”アカウントを削除してみます。使わないアカウントは削除してしまった方が良いかもしれません。

# /usr/sbin/userdel -r yauro

  • -r オプションは、削除するユーザのホームディレクトリも削除します。

sudo 権限付与

ついでなのでユーザに対してsudo権限を付与する方法も記載致します。下記では”yaruo”ユーザにsudo権限を追加しています。”/usr/sbin/visudo”を実行すると”vi”操作で編集できます。

# /usr/sbin/visudo
-----
  # User privilege specification   
  root    ALL=(ALL) ALL
+ yaruo   ALL=(ALL) ALL
-----

  • ”+” は追加を意味しています。実際に記述はしません。

”visudo”コマンドは、”/etc/sudoers”を編集するツールで、構文チェックを編集時に実行します。大抵デフォルトでインストールされている筈ですが、ないときもあるようです。その場合は下記で対応できます。

# vi /etc/sudoers
-----
  # User privilege specification   
  root    ALL=(ALL) ALL
+ yaruo   ALL=(ALL) ALL
-----

----------------------------------------

Red Hat Enterprise Linux Standard Plus (ES v.4 for Intel x86、AMD64、and Intel EM64T)
レッドハットレッドハットレッドハット
定価 : ¥ 104,790
2005-07-01
amazonで詳しく見る

| | コメント (1) | トラックバック (0)