LINUX コマンド

2009-01-21

やる夫がログローテーションの時間を変更するようです。

久々の更新です。自分でも既に閉鎖してしまた感あり・・・。

やる夫がログ管理をするようです。でログローテーション方法を記載しましたが、特にローテーション時間については触れなかったので、補足します。”/etc/crontab”を修正していただければと思います。デフォルトでは朝4時にセットしてますね。

# vi /etc/crontab
-----
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
-----

特に修正しなくてもよいと思います。他のバッチ系cronとかは、朝0時だったり1時だったり・・・。するのでサーバ負荷的にも、このままの方がよいかと思います。

          ____
       / \  /\ キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \   サーバ負荷的にも、このままの方がよいかと思います
    |      |r┬-|    |  
     \     `ー'´   /   
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

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

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

2008-08-05

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

egrep コマンド

パターンにマッチした行を表示します。grepよりも高度な検索が可能です。下記のようにパターン”neet”or”employee”にマッチする行を抽出することができます。今まで”grep |”をズラズラとつなげていたが、こっちの方がエレガントですね・・・。

# cat profile.txt
yaruo,neet,20
yaranaio,employee,24
dekiruo,employee,23
dokuo,neet,30
dady,part,25
# egrep '(neet|employee)' profile.txt
yaruo,neet,20
yaranaio,employee,24
dekiruo,employee,23
dokuo,neet,30

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

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) | トラックバック (0)

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)

より以前の記事一覧