全文検索:
- 22 Bash flock 2重起動防止
- h flock 2重起動防止 ====== ===== Cronで実行する場合 ===== <code> flock -n /tmp/somthing.lock something.sh </code> ==== 実行例 ==== <code| console1> $ flock -n /tmp/flock.lock sleep 360 </code> 「-n」オプションだと、実行せずに終了します。 <code| console2> $ floc
- 09 color表示
- ====== 09 color表示 ====== <code> $ echo -e '\e[VALUE[;VALUE..]mSTRINGS\e[m' </code> VALUE <code> Text attributes 0 All attributes off 1 Bold on 4 Underscore (on monochrome display adapt... n 43 Yellow 44 Blue 45 Magenta 46 Cyan 47 White </code> 1.赤文字にする。 <code console> echo -e "\e[31m AAAA
- 01 ファイルの指定行を抜き出す
- ===== 指定行を表示 ===== これで、hogehoge.confの100行目を表示 <code console> $ sed -n 100p /etc/hogehoge.conf </code> ===== 指定行間を表示 ===== これで、hogehoge.confの100行目~120行目を表示 <code console> $ sed -n 100,120p /etc/hogehoge.conf </code> ===== 指定行目以降を表示 ===== これで100行目以降を表示 <code> $ t
- 10 IPアドレス判定
- ====== 10 IPアドレス判定 ====== <code console> if [ -n "`echo $IP |sed 's/^\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)... echo "IPアドレスではありません。" exit fi </code> ===== 単純にgrepで検索 ===== <code console> grep -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /var/log/secure </code> こっちの方が正確 <code console> grep -e "[0-9]\{1,3\}\
- 13 簡単なパケロスチェックプログラム
- チェック ===== 60回ずつpnigを打ち続けるプログラム 毎日00:00にローテートする <code console> #!/bin/sh IP=$1 LOG_DIR="./logs" LOG_FI... FILE echo -n > $LOG_FILE fi fi done </code> ===== Pingパケロス時Tracerouteチェック ===== 1秒毎にpingを打... って、パケロスが発生した時にtracerouteを打つプログラム 毎日00:00にローテートする <code console> #!/bin/sh IP=$1 LOG_DIR="./logs" LOG_FI... echo -n > $LOG_FILE fi fi sleep 1 done </code> ===== Macの場合 ===== Macはpingのオプションがちょっと違うので、ちょっ
- 15 awkでカウント
- ==== awkを使って行数のカウントを行ってみる ==== 下記のリストを利用 ==== <code console> $ cat list A B C D E F G H I C D C </code> ==== どの文字列が何個あるのか出してみる ==== <code console> $ cat a | awk '{count[$0]++} END {for(i in count) {print ... : 3個 D : 2個 E : 1個 F : 1個 G : 1個 H : 1個 I : 1個 </code> ==== 2個以上存在するもののみ表示 ==== <code console> $ cat
- 19 expectで自動su
- く実行するコマンドを自動で実行できるようしてみる。 ===== 1.シェルを用意 ===== <code |~/bin/su.sh> #!/bin/sh PW="[PASSWORD]" expect -c... su - expect matsui: send -- ${PW}\n interact " </code> ==== 実行権追加 ==== <code> $ chmod 755 ~/bin/su.sh </code> ===== 2.bashrcに追加 ===== <code |~/.bashrc> if [ -f ./bin/su.sh ]; the
- 24 バックアップシェル(backup.sh)
- バックアップシェル(backup.sh) ====== Cronでバックアップ用シェルのメモ <code> #!/bin/bash BACKUP_DIR=/home/backups BACKUP_LIS... fi done < $BKLIST } rsync_dir exit; </code> ===== conf file ===== <code> # cat /home/backups/conf/host_name ## directory rsync /var/www/vhos... mysql:all ## mysqldump each db #mysql:hogedb </code> ===== Cron ===== <code> # crontab -l PATH=/sbi
- 02 リモートファイルチェック
- ====== 02 リモートファイルチェック ====== <code> chk_remote_file() { if [ `ssh ${1} test -e ${2} ; echo \$?` !=... ]; then return 1 fi return 0 } </code> ====== リモートディレクトリチェック ====== <code> chk_remote_dir() { if [ `ssh ${1} test -d ${2} ; echo \$?` != "0" ]; then return 1 fi return 0 } </code> {{tag>bash}}
- 03 実行シェルのディレクトリ
- ====== 03 実行シェルのディレクトリ ====== <code console> DIR=`dirname $0` echo $DIR </code> <code console> $ dirname /usr/bin/nkf /usr/bin </code> {{tag>bash}}
- 04 引数の取得
- バラメータ変数に関しては、[[bash:02_parameter_variable|こちら]] <code> #!/bin/bash i=1 while [ -n "$1" ] # $1が空っぽならループ... Arg $i = $1" shift i=`expr $i + 1` done </code> 実行結果 <code console> $ ./arg.sh a b c d e f g h i j k Arg 1 = a Arg 2 = b Arg 3 = c Arg 4 = d Arg 5 = e Arg 6 = f Arg 7 = g Arg 8 = h Arg 9 = i Arg 10 = j Arg 11 = k </code> {{tag>bash}}
- 06 応答で処理を分岐する
- ====== 06 応答で処理を分岐する ====== <code console> #/bin/sh while : do echo "1) ls -sF" echo "2) pwd" ec... *) echo "No such number.";; esac done </code> ・実行結果 <code console> $ sh sample01.sh 1) ls -sF 2) pwd 3) w 4) clear q|Q) exit 2 /home/matsui/work 1) ls -sF 2) pwd 3) w 4) clear q|Q) exit q $ </code> {{tag>bash}}
- 16 awkでチェック
- = 特定行をチェックしたい場合 ===== ==== 下記の結果をチェックしたい ==== <code console> # dmraid -s *** Group superset isw_difce... or status : ok subsets: 0 devs : 2 spares : 0 </code> ==== status 行がokなら「1]を返す ==== <code:bash> # dmraid -s | tr -d ' ' | awk -F":" 'BEGIN {r=0} /^status/ {if ($2=="ok") {r=1} } END {print r}' 1 </code> {{tag>awk}}
- 17 swapを食っているプロセスを調べる
- apを食っているプロセスを調べる ====== ===== CentOS 5系 ===== <code:bash> #!/bin/bash for i in `ls /proc/ | grep ^[0-... $i -o cmd,user | grep -v 'CMD' fi fi done </code> ===== Cent 6系 ===== <code:bash> #!/bin/bash for i in `ls /proc/ | grep ^[0-9]` do if [ -e /proc/$i/... f "$i\t$SWAP kb\t" ps -p $i -o cmd,user | grep -v 'CMD' fi fi done </code> {{tag>bash swap}}
- 20 awkで合計
- ====== 20 awkで合計 ====== ===== 集計する ===== <code> $ cat a 1 2 3 4 5 $ cat a | awk '{s+=$1} END {print s}' 15 </code> ===== カラムが複数 ===== <code> $ cat a 1 2 2 3 3 5 4 8 5 10 $ cat a| awk '{s1+=$1} {s2+=$2} END {print s1" "s2}' 15 28 </code> {{tag>awk}}