質問

2008年03月31日 17時09分
  • スクリプトでのディレクトリ作成・削除

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

いつもお世話になっております。

弊社開発部門からテスト環境へ、修正パッチを摘要する作業を行っております。
複数サーバの同じディレクトリにパッチを摘要するため、シェルスクリプトを利用しておりますが、以下の様に作成した一時フォルダを削除する事ができません。
かなり我流なのでお恥ずかしいですが、ご指摘あればご教授ください。

スクリプトはautomntでマウントしたディレクトリに置いております。
一時フォルダも同じ階層に作成し、バックアップ(書庫化)後削除しております。

--
HOST=hostname -s
NOW=date ’+%Y%m%d’
VERSION=$1

mkdir ${HOST}-${NOW}-v${VERSION}

書庫はほぼ同名なのに、バックアップ場所に転送後、一時ファイルは削除されております。

書庫 ${HOST}-${NOW}-v${VERSION}.tar.gz

以上、宜しくお願いします。

1件の回答があります

回答

手元の環境(openSUSE 10.3)でご報告の通りスクリプトを組み

!/bin/bash

HOST=hostname -s
NOW=date ’+%Y%m%d’
VERSION=$1

mkdir ${HOST}-${NOW}-v${VERSION}

test.sh として実行属性を持たせ、
$ ./test.sh 01
…というように実行しますと、期待通り ${HOST}-${NOW}-v01 という名前のディレクトリができ、そのパーミッションは drwxr-xr-x となります。当然ですが、test.sh を実行したユーザ権限であれば
$ rmdir ${HOST}-${NOW}-v01
でディレクトリの削除は可能なはず…

で、可能なはずが実際には削除できない…ということでしたら、まさかとは思うのですが、一応以下を確認して見てもらえませんでしょうか(けしてバカにしているのではありません。あくまで念のため…ということで)。

(1) ディレクトリの中に何かファイルが残っているのに rmdir で削除しようとしていないか
(2) 作成されたディレクトリのパーミッションを確認する
(3) ディレクトリ(及びその中のファイル)を作成したユーザ権限または root 権限で削除を行っているか
(4) rm -rf ${HOST}-${NOW}-v${VERSION}(当然ですが、引数のディレクトリ名には本当にできているディレクトリ名を指定してください) で削除を試みたとき、何かエラーメッセージは返ってくるか
(5) ディレクトリ内に、削除できないパーミッションのファイルが存在していないか
(6) type rm としてみて、rm が本来の /bin/rm ではなくカスタマイズされていたり、何かエイリアスがかかっていないか
(7) 作成したディレクトリが置かれている領域のファイルシステムが ext2 もしくは ext3 の場合、 lsattr でアトリビューションを調べてみて、削除できないようになっていないか

あまりにも当たり前のこと過ぎて「そんなことはすべて確認済だ」と言われてしまいそうですが、上記でまだ確認されていないことが残っていましたら、確認してみてください。

2008年04月01日 09時56分

あなたもコメントしましょう!