bash
以下のような1ファイルにファイル名とSQLテキストがまとめて書かれているファイルを filename1.sql、filename2.sql、filename3.sql のように別々のファイルに分割して、ファイルの中身に "select * from t1;" のような SQL テキストになるようにする bash ス…
bash の変数展開を使って、FQDN のホスト名(最初のドットより前)の部分だけ取得してみたメモ test.sh #!/usr/bin/bash PG_HOST=${PG_HOST:-redshift-cluster-2.foobar.ap-northeast-1.redshift.amazonaws.com} INSTANCE_IDENTIFIER=${PG_HOST%%.*} echo ${…
ヒアドキュメントの中でも""で括った文字列リテラルと同様、 変数展開やコマンド置換が行われます。つまり$MY_VARや$(date)と書くといつもと同じように展開されます。これを抑止する(=''で括ったときのように扱う)にはEOSの部分を下記のようにクォートします…
bash で環境変数にセット(export)せずにコマンドに渡したメモ。 PG_CONCURRENCY=1 PG_TRAN=1 SQL_SCRIPT=sql/pg_database.sql ./redshift_exec_query.sh & 参考 bashで環境変数をexportせずにシェルスクリプトを実行したい場合はコマンドの前に記述するこ…
bash でシェル変数のデフォルト値をセッツしたメモ。 PG_USER=${PG_USER:-awsuser} PG_DB=${PG_DB:-dev} PG_PORT=${PG_PORT:-5439} 参考 Bash: 変数のデフォルト値の定義は`${変数名:-初期値}`でやる - Qiita
ファイルを作成する for i in {0..364} do YYMMDD=$(date --date "20180101 $i days" +%Y%m%d) echo ${YYMMDD} > table01_${YYMMDD}.txt done 作成したファイルを確認する $ ls |head table01_20180101.txt table01_20180102.txt table01_20180103.txt table…
- や + で始まるファイルを開こうとすると以下のようにエラーになるので、 $ less +ASM1_ora_19821.trc Missing filename ("less --help" for help) 以下のように -- とオプションをつけるとよい。 $ less -- +ASM1_ora_19821.trc 参考 less(1) - Linux manu…
SQL*Plus にヒアドキュメントで SQL を渡し、全体をバッククオート(`)で囲めばよい。"$"などはエスケープする必要がある。 $ TRACE_DIR=`sqlplus -s <
bash-3.2$ for i in {1..10} do touch $i.pc touch $i.c done bash-3.2$ touch 0.pc bash-3.2$ touch 11.c bash-3.2$ ls 0.pc 1.c 1.pc 10.c 10.pc 11.c 2.c 2.pc 3.c 3.pc 4.c 4.pc 5.c 5.pc 6.c 6.pc 7.c 7.pc 8.c 8.pc 9.c 9.pc bash-3.2$ sdiff -s <(fin…
-bash-3.00$ jobs -l [1] 7328 Running tail -f a & [2]- 7339 Running perl -e 'while(1) {}' & [3]+ 7535 Running tail -f a & ↑の「-」とか「+」とかは何を意味するんだろう?手元の Solaris 10 でちょっと確認してみた。 -bash-3.00$ cat /etc/release O…
Oracle Database や Grid Infrastructure の製品マニュアル(Oracle Databaseのインストール前の作業、クラスタ用Oracle Grid Infrastructureの拡張インストール前の作業)に /etc/security/limits.conf と /etc/profile を以下のように設定するよう書かれて…
今年の春に作った Oracle Database on Linux が使用しているメモリサイズを表示するシェルスクリプトをとりあえず github に push しました。かなりてきとーなシェルスクリプトです。精査してませんし、改善すべき点もたくさんあると思います。 ソースコード…
90日よりも前に更新されたファイルを削除しようとして、 $ find . -type f -mtime +90 -print0|xargs -0 rm ↑を実行しようかと。。。 ただ、本当に大丈夫かなということで、 $ find . -type f -mtime +90 -print0|xargs -n1 -0 stat --format=%y|sort -n|per…
$ while :; do pgrep impdp || echo fin|mail -s 'fin' ablog_at_ezweb.ne.jp ; sleep 60; done & $ disown %1 追記: いんぽり終わったら1分間隔であほみたいにメールが飛んできて、眠かったけど起きれましたw
bash でビルトインコマンドがあるかどうか調べるには help を使えば良い。 $ which source /usr/bin/which: no source in (/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin) $ help source source: source filename [arguments] Read…
#!/bin/bash export LANG=C export NLS_LANG=American_America.JA16SJISTILDE cd $(cd $(dirname $0);pwd) sqlplus -s system/manager@192.168.1.10:1521/orcl <
「[ 」は外部コマンド。/usr/bin 以下にある実行可能ファイル。「 [ 」がコマンド本体で「 ] 」はパラメータ。 「 [ 」の直後にスペースがないとエラーになるのはそのため。 $ which [ /usr/bin/[ $ ls -l /usr/bin/[ -rwxr-xr-x 1 root root 31048 Sep 4 07…
テスト用に100Mのファイルを作成する。 $ dd if=/dev/zero of=dummy bs=1024k count=100 $ ls -lh ... -rw-rw-r-- 1 neo neo 100M 2月 12 13:58 dummy 頭に nohup をつけて scp を実行する。 $ nohup scp dummy oracle@192.168.153.17:~/ nohup: appending o…
$ cat hoge.sh #!/bin/bash cat <<EOF > $0 #!/bin/bash exit 1 EOF exit 0 $ ./hoge.sh $ echo $? 0 $ ./hoge.sh $ echo $? 1 $ cat hoge.sh #!/bin/bash exit 1 初回実行時は戻り値が 0 だが、2 回目以降は戻り値が 1 になる。</eof>
compare.sh #!/bin/bash # a and b don't exist if [[ ! -f a && ! -f b ]];then echo a and b don\'t exist # b doesn't exist elif [[ -f a && ! -f b ]];then echo b doesn\'t exist # a doesn't exist elif [[ ! -f a && -f b ]];then echo a doesn\'t e…
来る日も来る日も、Oracle Database の export ユーティリティーでとった dump ファイルを別の環境に import。。。 ユーザを drop して create して、import。ただ、気をつけないと drop した後に、あれ? このユーザはどんなシステム権限を持ってたっけ?オ…
$ touch a $ touch b -t `date -d "-1 days" '+%Y%m%d%H%M'` $ ls -l total 0 -rw-r--r-- 1 oracle oinstall 0 Feb 3 16:10 a -rw-r--r-- 1 oracle oinstall 0 Feb 2 16:10 b $ ls|while read line do if [ "`stat --print=%y $line|perl -ple 's/([0-9\-:\s…
$ touch a $ stat --print=%y a 2010-02-03 15:44:12.000000000 +0900
シェルスクリプトのユニットテストフレームワーク "shUnit2" を使ってみた - ablog のつづき。 実際に自分で作った bash スクリプトのユニットテストを実行してみた。最初のディレクトリ構成はこんなの。 $ su - oracle $ cd /home/oracle/scripts $ tree -p…
Oracle Database のデータをスキーマ単位で export する単純な bash スクリプトを作ってみた。 yoheia/ora_exp_dmp.sh at master · yoheia/yoheia · GitHub #!/bin/bash export LANG=C export NLS_LANG=American_America.JA16SJISTILDE BASE_DIR=$(cd $(dirn…
ないだろうと思いながらぐぐってみたら、 shUnit2 is a xUnit unit test framework for Bourne based shell scripts, and it is designed to work in a similar manner to JUnit, PyUnit, etc. If you have ever had the desire to write a unit test for a …
$ for i in {1..365}; do touch -t `date -d "-$i days" '+%Y%m%d%H%M'` hoge-`date -d "-$i days" '+%Y-%m-%d-%H%M%S'`.log; done $ ls -ltr|head -10 total 0 -rw-r--r-- 1 oracle oinstall 0 Jan 28 2009 hoge-2009-01-28-173905.log -rw-r--r-- 1 oracle…
$ ls -l -rw-r--r-- 1 oracle oinstall 0 1月 13 18:45 a -rw-r--r-- 1 oracle oinstall 0 1月 13 18:46 b $ if [[ a -ne b ]]; then > echo a is newer than b. > else > echo a is older than b. > fi a is older than b. 参考 http://www.geocities.jp/ge…
$ a=1 $ ls|while read LINE > do > a=2 > done $ echo $a 1 と、ループの中で変数 a の値を変更してもループの外の変数 a の値は変わらない。 forやwhile文などのリダイレクト処理はカレントシェルではなく、 サブシェルで実行される http://lagendra.s.kan…
保持期限を過ぎたファイルをタイムスタンプではなく、ファイル名に含まれる日付から判断して削除するシェルスクリプトを bash で書いてみた。 delete.sh #!/bin/bash EXPIRE_DATE=`date -d '-31 days' '+%Y%m%d'` find ./log -name "*.log"|while read LINE …