アカウント名:
パスワード:
てっきり最初にスクリプト全部読み込んでから走らせてると思ってた。
京大での事故で広く知られたように、シェルは最初にスクリプト全体を読み込むのではなく、「1行ずつ順次読み込む。そしてスクリプト終端に達したり exit や致命的エラーなどによりスクリプトは終了する。
走らせているスクリプトを変更する機会は今までになかった。期待どおりに動いていないのがわかったらkillしてから書き換えてるし。それでも、本番で長時間走らせている時に不具合見つかったらやっちゃうのかな。
スクリプトを改変するときはバックアップ後に別名コピーしてテストして問題がなければ元の名前に上書きしてた。小手先処理の簡単なスクリプトしか作らないので、バージョン管理とかその手のことはやってない現場仕事ですが。ループがあっても小さいものだし、それくらいなら最初に全部読み込まれそう。
逐次読み込みするにしてもシェル側でファイルハンドル握って排他制御くらいしろよと思った。
UNIX系のファイルシステムなら、ロックしててもmvでファイル入れ替え可能です。inodeでファイルの実体を管理しているので、名前を変えたり削除しても、ファイル名からの参照ができなくなるだけで実体は残っており、すでにオープンしているファイルハンドルからはそのまま元ファイルにアクセスし続けられます。
ファイルハンドルを保持せず、都度オープンするような実装だと新ファイルにアクセスすることになりますが、その場合は「mvコマンドで安全にファイルを入れ替えて」もアウト。バッチファイルはそういう挙動だったかと思います。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
しらんかった (スコア:5, 参考になる)
てっきり最初にスクリプト全部読み込んでから走らせてると思ってた。
京大での事故で広く知られたように、シェルは最初にスクリプト全体を読み込むのではなく、「1行ずつ順次読み込む。そしてスクリプト終端に達したり exit や致命的エラーなどによりスクリプトは終了する。
走らせているスクリプトを変更する機会は今までになかった。
期待どおりに動いていないのがわかったらkillしてから書き換えてるし。
それでも、本番で長時間走らせている時に不具合見つかったらやっちゃうのかな。
スクリプトを改変するときはバックアップ後に別名コピーしてテストして問題がなければ元の名前に上書きしてた。
小手先処理の簡単なスクリプトしか作らないので、バージョン管理とかその手のことはやってない現場仕事ですが。
ループがあっても小さいものだし、それくらいなら最初に全部読み込まれそう。
Re: (スコア:0)
逐次読み込みするにしてもシェル側でファイルハンドル握って排他制御くらいしろよと思った。
Re: (スコア:0)
Re:しらんかった (スコア:1)
UNIX系のファイルシステムなら、ロックしててもmvでファイル入れ替え可能です。
inodeでファイルの実体を管理しているので、
名前を変えたり削除しても、ファイル名からの参照ができなくなるだけで実体は残っており、
すでにオープンしているファイルハンドルからはそのまま元ファイルにアクセスし続けられます。
ファイルハンドルを保持せず、都度オープンするような実装だと新ファイルにアクセスすることになりますが、
その場合は「mvコマンドで安全にファイルを入れ替えて」もアウト。
バッチファイルはそういう挙動だったかと思います。