パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

バックアップ実行中にスクリプト上書きしたらスパコンデータ消失」記事へのコメント

  • てっきり最初にスクリプト全部読み込んでから走らせてると思ってた。

    京大での事故で広く知られたように、シェルは最初にスクリプト全体を読み込むのではなく、「1行ずつ順次読み込む。そしてスクリプト終端に達したり exit や致命的エラーなどによりスクリプトは終了する。

    走らせているスクリプトを変更する機会は今までになかった。
    期待どおりに動いていないのがわかったらkillしてから書き換えてるし。
    それでも、本番で長時間走らせている時に不具合見つかったらやっちゃうのかな。

    スクリプトを改変するときはバックアップ後に別名コピーしてテストして問題がなければ元の名前に上書きしてた。
    小手先処理の簡単なスクリプトしか作らないので、バージョン管理とかその手のことはやってない現場仕事ですが。
    ループがあっても小さいものだし、それくらいなら最初に全部読み込まれそう。

    • by Anonymous Coward

      逐次読み込みするにしてもシェル側でファイルハンドル握って排他制御くらいしろよと思った。

      • by Anonymous Coward
        そういう余計なことしてないからmvコマンド一発で安全にファイル入れ替えられる(のにそれをしなかった)という話なので
        • UNIX系のファイルシステムなら、ロックしててもmvでファイル入れ替え可能です。
          inodeでファイルの実体を管理しているので、
          名前を変えたり削除しても、ファイル名からの参照ができなくなるだけで実体は残っており、
          すでにオープンしているファイルハンドルからはそのまま元ファイルにアクセスし続けられます。

          ファイルハンドルを保持せず、都度オープンするような実装だと新ファイルにアクセスすることになりますが、
          その場合は「mvコマンドで安全にファイルを入れ替えて」もアウト。
          バッチファイルはそういう挙動だったかと思います。

          親コメント

アレゲは一日にしてならず -- アレゲ見習い

処理中...