yuu_nkjm blog
2010-10-11(Mon) 編集
[Linux][command][bash] サブディレクトリにある全ての(任意の範囲の)shファイルを起動する
execというディレクトリのサブディレクトリにシェルスクリプトが複数あり,それを起動したい.
ディレクトリ構成
exec/000/simulation.sh
exec/001/simulation.sh
…
exec/010/simulation.sh
全てのshを起動
find exec/ -print|grep sh|sort
上記のコマンドを叩くと,スクリプトの一覧が獲得できる.このコマンドの実行結果を変数xに格納し,forループで回しながら,各スクリプトをevalで評価する.
#!/bin/bash
x=`find exec/ -print|grep "sh"|sort`
for i in $x
do
`chmod +x $x`
eval $i
done
指定した範囲のshを起動
複数台のPCで実行をすることを考えると範囲指定が出来たほうが便利だと言うことで,別バージョンも作った.FIRSTとLASTの値を決め打ちではなく,lsやfindを使って決定したいが,ひとまずはいいや.
#!/bin/bash
FIRST=$1
INCR=$2
LAST=$3
if [ ! -n "$2" ]
then
echo -n "Input FIRST [def val = 0]: "
read FIRST
echo -n "Input INCR [def val = 1]: "
read INCR
echo -n "Input LAST [def val = 200]: "
read LAST
fi
if [ ! -n "$FIRST" ]
then
FIRST=0
fi
if [ ! -n "$INCR" ]
then
INCR=1
fi
if [ ! -n "$LAST" ]
then
LAST=200
fi
for i in `seq -f "%03g" $FIRST $INCR $LAST`
do
x=`find settings/exec/$i -print|grep "sh"|sort`
if [ ! -n "$x" ]
then
break
fi
`chmod +x $x`
eval $x
done
起動例
[usr@hoge ~/workspace]$ ./execSimulations.sh 5 1 7
settings/exec/005/simulation.sh
settings/exec/006/simulation.sh
settings/exec/007/simulation.sh
[usr@hoge ~/workspace]$ ./execSimulations.sh
Input FIRST [def val = 0]: 3
Input INCR [def val = 1]: -1
Input LAST [def val = 200]: 0
settings/exec/003/simulation.sh
settings/exec/002/simulation.sh
settings/exec/001/simulation.sh
settings/exec/000/simulation.sh
それにしても,Windowsでもbash欲しい….win-bashってどうなんやろうか.NYACUS(今はNYAOSなのか)ってWindows上でのシェル拡張を使っているけど,乗り換えてみようかな.
2012-10-11(Thu) 編集
[openSUSE][Linux] 起動時のfsckをスキップする
起動時のfsck(ファイルシステムチェック,ディスクチェック)をスキップしたいときは,shutdownコマンドの引数に"-f"を渡すか,カーネルパラメータにfastbootを与えるのが良さそう.
openSUSE12.1 64bitでfastbootをカーネルパラメータに与えたところ,fsckは走らなかった.これはfastbootが効いたのか,今回fsckが元々必要とされていなかったのかは未確認.
- fsck:起動時にHDDがチェックされるタイミングの設定 - Linux Memo: Vine Linux 5 設定 tips
tune2fsを使っている. - fsckのスキップ gn64の日記
fastbootを渡している. - Linuxコマンド一覧 [shutdown]
shutdown -f 再起動時に「fsck」コマンドによるファイルシステムのチェックを省略し、高速でリブートします。