Category Archives: shell

「Shell入門」if文でディレクトリとファイルの存在を判定するサンプル

1.ディレクトリの存在確認

#!/bin/bash

DIR=”USERINFO”

if [ -d ${DIR} ]; then
echo “exist”
else
echo “not exist”
fi

2.ファイルの存在確認
#!/bin/bash

TARGET_FILE=”zhang.txt”

if [ -f ${TARGET_FILE} ]; then
echo “exist”
else
echo “not exist”
fi

3.NOT条件
#!/bin/bash

changfa=true

if [ ! $changfa ]; then
echo “not true”
else
echo “true”
fi

「shell入門」プロセスPIDを取得する方法

1. C オプションで指定
$ ps –no-heading -C <prog_name> -o pid

2.grepコマンド
$ cft_detach_process &
$ ps -e -o pid,cmd | grep cft_detach_process | grep -v grep | awk ‘{ print $1 }’

3.正規表現
$ ps -e -o pid,cmd | grep -E “^.*cft_detach_process$” | awk ‘{print $1}’
$ ps -e -o pid,cmd | awk ‘/^.*cft_detach_process$/ {print $1}’

4.pidofコマンド
$ cft_detach_process &
$ pidof cft_detach_process

5.$!を使用して直前のPIDを取得
#!/bin/bash
cft_detach_process &
pid=$!

「shell入門」PIDを取得するサンプル

サンプルコード:
#!/bin/bash

echo “PID of this script: $$”
echo “PPID of this script: $PPID”
echo “UID of this script: $UID”

結果:
PID of this script: 7686
PPID of this script: 3656
UID of this script: 1000

「shell入門」ファイルの中身を読み込むサンプル

1.サンプル
readfile.sh
#!/bin/bash
CFT=`cat ファイル名`
while read line
do
echo $line
done << FILE
$CFT
FILE

2.実行コマンド
$ sh readfile.sh

「shell」5日前より古いファイルを削除するメモ

#cat filedel.sh
#!/bin/sh
location=”/var/www/data”
find $location -mtime +5 -type f |xargs rm -f

#crontab -l
20 5 1 * * /bin/sh /root/shell/filedel.sh

「shell」ifconfigでネットワークトラフィックを監視するサンプルコード

サンプルコード:
#!/bin/bash
# Link: www.sample.com
###
while :
do
Time=`date +%F” “%T.%N`
rx_before=`ifconfig eth0 |sed -n 8p |awk ‘{print $2}’| cut -c7-`
tx_before=`ifconfig eth0 |sed -n 8p |awk ‘{print $6}’| cut -c7-`
sleep 2
rx_after=`ifconfig eth0 |sed -n 8p |awk ‘{print $2}’| cut -c7-`
tx_after=`ifconfig eth0 |sed -n 8p |awk ‘{print $6}’| cut -c7-`

rx_result=$[(rx_after – rx_before)/512]
tx_result=$[(tx_after – tx_before)/512]
echo -e “$Time nNow_In_Speed: ‘$rx_result’Kbps Now_OUt_Speed: ‘$tx_result’Kbpsn”
done

「shell」LinuxでMySQLのバックアップをするサンプルコード

サンプルコード
#!/bin/sh
# mysql data backup script
#
# use mysqldump –help,get more detail.
#
BakDir=/root/back/ysqlbackup
LogFile=/root/back/mysql/mysqlbak.log
DATE=`date +%Y%m%d%H%M%S`
echo ” ” >> $LogFile
echo ” ” >> $LogFile
echo “——————————————-” >> $LogFile
echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile
echo “————————–” >> $LogFile
cd $BakDir
DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tar.gz
/usr/local/bin/mysqldump -u user -pname  –database -h 127.0.0.1 sampledb> $DumpFile
echo “Dump Done” >> $LogFile
tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1
echo “[$GZDumpFile]Backup Success!” >> $LogFile
rm -f $DumpFile
#cd $BakDir/daily
cd $BakDir
echo “Backup Done!”
echo “please Check $BakDir Directory!”
echo “copy it to your local disk or ftp to somewhere !!!”
find $BakDir -ctime +30 -exec rm {} ;
echo “delete file over 30 days”

「shell 」Tomcatを自動起動するスクリプトコード

サンプルコード
#!/bin/bash
if [ ! -f /tmp/down_count ];then
echo “0” &gt; /tmp/down_count
fi
curl -I tomcat-host -o “/tmp/status” &gt;/dev/null 2&gt;&amp;1
code=`awk ‘NR==1 {print $2}’ /tmp/status`
if [ “$[code]” -ge 500 ];then
down=`expr $(cat /tmp/down_count) + 1`
echo “$down” &gt; /tmp/down_count
if [ “$down” -gt 3 ];then
if [ ! -f “/tmp/restart_count” ];then
echo “0” &gt; /tmp/restart_count
fi
restart_count=`expr $(cat /tmp/restart_count) + 1`
echo “$restart_count” &gt; /tmp/restart_count
if [ “$restart_count” -le 2 ];then
echo “tomcat down at `date`” &gt;&gt; /tmp/down_info
/etc/init.d/tomcat6 restart
fi
fi
else
echo “0” &gt; /tmp/down_count
echo “0” &gt; /tmp/restart_count
fi

「shell」正規表現を使ってIPアドレスかどうかをチェックするコード

サンプルコード:
# vi check_ip.sh
#!/usr/bin/sh
CheckIPAddr()
{
echo $1|grep “^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$” > /dev/null;
if [ $? -ne 0 ]
then
return 1
fi
ipaddr=$1
a=`echo $ipaddr|awk -F . ‘{print $1}’`
b=`echo $ipaddr|awk -F . ‘{print $2}’`
c=`echo $ipaddr|awk -F . ‘{print $3}’`
d=`echo $ipaddr|awk -F . ‘{print $4}’`
for num in $a $b $c $d
do
if [ $num -gt 255 ] || [ $num -lt 0 ]
then
return 1
fi
done
return 0
}
if [ $# -ne 1 ];then
echo “Usage: $0 ipaddress.”
exit
else
CheckIPAddr $1
fi

Linuxにshellでファイルが存在するかどうかを確認する方法

サンプルコード:
MACCESS=`date -d yesterday +%Y%m%d`
FILE=”access_$MACCESS.log.tgz”
cd /data/nginx/logs
if [ -f “$FILE” ];then
echo “OK”
else
echo “error $FILE” > error.log
mail -s “$FILE backup fail” ctmkdf@arkgame.com <error.log
fi

1 / 512345