アカウント名:
パスワード:
cd $SQUID_PIDFILE_DIR && rm -rf ./* && rmdir $SQUID_PIDFILE_DIR
別コメントでも指摘されていますが,> cd $SQUID_PIDFILE_DIR && rm -rf ./* && rmdir $SQUID_PIDFILE_DIRは,正しく機能しないので,真似しないように.
というか、こういう原始的なスクリプトが普通なの?
デーモンの起動は、普通は全部この手のシェルスクリプトでラップしてますよ。実行バイナリをダイレクトに起動するのもできなくはないでしょうけど、そもそもメリットが無いですよね。
>>デーモンの起動は、普通は全部この手のシェルスクリプトでラップしてますよ。systemd 「ぐふふふふふ・・・」
うるさい!おまえ(systemd)なんて普通じゃねぇ!# もうね、面倒で面倒で。
プログラム言語については関数型がどうとかカプセル化でこうとかやたら工夫してるのに、こんなガバガバな足回りじゃ本当意味ないよなぁ。
変数の中身が想定どおりなのを確認してからrmすればいいのになぜ中身を確認せずにcdして&& rm?その変数に"/"が入ってたらダメじゃん。
$SQUID_PIDFILE_DIRが空の場合は、実行者のhomeディレクトリ以下が丸ごと消えますね
いやルートディレクトリ以下丸ごとrm -rf /*
お恥ずかしい。勘違い。
作法として正しいとかは置いといて、自分が中にいるじゃんかよ
根本的に、rm の機能を制限するわけにはいかないのかい?
-rfはオプションですので…
いくつかのディレクトリは -rff にしないと消えないようにするとかかね。
そうすると普段から -rtf つける奴がでてくるんだよ。
同時に rmdir -rf $SQUID_PIDFILE_DIRで済むようにrmdirを変更するとか?
そもそも、パスを示す変数に「/*」を足そうとするのがよくないわけで直接パスだけ指定するようにしておいてパスの指定がなければ何もしないようにすれば(もちろん-fがなければエラー出すべきだろうけど)少なくとも、大惨事は避けられるのでは
# 指定ディレクトリを再帰的に消去するの機能がrmdirにないのが個人的には不思議なくらい
rmdir をわざわざ拡張せずともrm -rf $SQUID_PIDFILE_DIRでよくね?
GNUのrmではある程度ガードかかってますよchrootとかしながら遊んでみては?
消さないって選択肢もありまして、先日10年ぐらい前に書いたスクリプトを久しぶりにメンテしたら、一時フォルダの中に作ったファイルをディレクトリ毎消す部分をコメントアウトしてた/tmpの下だったし、年2~3回の再起動で消される設定だったから、それでいいと思ったんだろうな。気持ちはわかる
/tmpといえば、腹立つことを思い出す、/tmp下に、起動スクリプトを置いてる設計っておかしいですよね?10日以上、連続運転(または10日電源OFF)で再起動させてたら、起動スクリプトが消され起動しなくなった。(在庫の商品がほぼ全滅した)これって、故意に時限爆弾しこんでるよな?こんなところに、起動スクリプトを置いてる設計を指摘してるのに、まともに話を聞かずこれをlinuxの仕様ですっていいきって修正しなかった会社あるからな。
/tmp (/var/tmp) は再起動で消えるのをあてにするとか、find -ctime で古いのから消すとかは見たことある。
それだと値が/だと駄目では?いま試せないのですが。。
set -uってbshのオプションつけてる。
うわ、絶対パスだと消せる!rmdir . だと消せないのに。これでいいのか?
だって消そうとしているディレクトリ配下をカレントディレクトリとしているプロセスを全部調べ上げるって無駄じゃん昔からそういうことを考慮してOSを設計していたならともかくさ、過去のしがらみと拡張の歴史もあるわけだしカレントディレクトリの実体が存在しなくなったプロセスが必要に応じてエラー検出すればいいんですよ(hard linkやsymbolic linkされたディレクトリも要考慮なのですよ)
Solarisだと現在いるディレクトリは使用中で削除できないから、Linuxでも一度ディレクトリを変えなきゃいけないと思ってスクリプト作ってたわ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
このタイプのバグを未然に防ぐには (スコア:1)
cd $SQUID_PIDFILE_DIR && rm -rf ./* && rmdir $SQUID_PIDFILE_DIR
Re:このタイプのバグを未然に防ぐには (スコア:1)
別コメントでも指摘されていますが,
> cd $SQUID_PIDFILE_DIR && rm -rf ./* && rmdir $SQUID_PIDFILE_DIR
は,正しく機能しないので,真似しないように.
Re:このタイプのバグを未然に防ぐには (スコア:1)
Re: (スコア:0)
というか、こういう原始的なスクリプトが普通なの?
Re:このタイプのバグを未然に防ぐには (スコア:2)
デーモンの起動は、普通は全部この手のシェルスクリプトでラップしてますよ。
実行バイナリをダイレクトに起動するのもできなくはないでしょうけど、そもそもメリットが無いですよね。
Re:このタイプのバグを未然に防ぐには (スコア:3, おもしろおかしい)
>>デーモンの起動は、普通は全部この手のシェルスクリプトでラップしてますよ。
systemd 「ぐふふふふふ・・・」
Re:このタイプのバグを未然に防ぐには (スコア:2)
うるさい!おまえ(systemd)なんて普通じゃねぇ!
# もうね、面倒で面倒で。
Re: (スコア:0)
プログラム言語については関数型がどうとかカプセル化でこうとか
やたら工夫してるのに、こんなガバガバな足回りじゃ本当意味ないよなぁ。
Re: (スコア:0)
変数の中身が想定どおりなのを確認してからrmすればいいのに
なぜ中身を確認せずにcdして&& rm?
その変数に"/"が入ってたらダメじゃん。
Re: (スコア:0)
$SQUID_PIDFILE_DIRが空の場合は、実行者のhomeディレクトリ以下が丸ごと消えますね
Re: (スコア:0)
いやルートディレクトリ以下丸ごと
rm -rf /*
Re: (スコア:0)
お恥ずかしい。勘違い。
Re: (スコア:0)
作法として正しいとかは置いといて、自分が中にいるじゃんかよ
Re: (スコア:0)
根本的に、rm の機能を制限するわけにはいかないのかい?
Re: (スコア:0)
-rfはオプションですので…
Re: (スコア:0)
いくつかのディレクトリは -rff にしないと消えないようにするとかかね。
Re: (スコア:0)
そうすると普段から -rtf つける奴がでてくるんだよ。
Re: (スコア:0)
同時に
rmdir -rf $SQUID_PIDFILE_DIR
で済むようにrmdirを変更するとか?
そもそも、パスを示す変数に「/*」を足そうとするのがよくないわけで
直接パスだけ指定するようにしておいて
パスの指定がなければ何もしないようにすれば(もちろん-fがなければエラー出すべきだろうけど)
少なくとも、大惨事は避けられるのでは
# 指定ディレクトリを再帰的に消去するの機能がrmdirにないのが個人的には不思議なくらい
Re: (スコア:0)
rmdir をわざわざ拡張せずとも
rm -rf $SQUID_PIDFILE_DIR
でよくね?
Re: (スコア:0)
GNUのrmではある程度ガードかかってますよ
chrootとかしながら遊んでみては?
Re: (スコア:0)
消さないって選択肢もありまして、
先日10年ぐらい前に書いたスクリプトを久しぶりにメンテしたら、一時フォルダの中に作ったファイルをディレクトリ毎消す部分をコメントアウトしてた
/tmpの下だったし、年2~3回の再起動で消される設定だったから、それでいいと思ったんだろうな。
気持ちはわかる
Re:このタイプのバグを未然に防ぐには (スコア:2, 興味深い)
/tmpといえば、腹立つことを思い出す、/tmp下に、起動スクリプトを置いてる設計っておかしいですよね?
10日以上、連続運転(または10日電源OFF)で再起動させてたら、起動スクリプトが消され起動しなくなった。
(在庫の商品がほぼ全滅した)
これって、故意に時限爆弾しこんでるよな?
こんなところに、起動スクリプトを置いてる設計を指摘してるのに、まともに話を聞かず
これをlinuxの仕様ですっていいきって修正しなかった会社あるからな。
Re: (スコア:0)
/tmp (/var/tmp) は再起動で消えるのをあてにするとか、find -ctime で古いのから消すとかは見たことある。
Re: (スコア:0)
それだと値が/だと駄目では?
いま試せないのですが。。
Re: (スコア:0)
set -u
ってbshのオプションつけてる。
rmdir?Linuxはカレントディレクトリ消せちゃうの? (スコア:0)
うわ、絶対パスだと消せる!rmdir . だと消せないのに。これでいいのか?
Re: (スコア:0)
だって消そうとしているディレクトリ配下をカレントディレクトリとしているプロセスを全部調べ上げるって無駄じゃん
昔からそういうことを考慮してOSを設計していたならともかくさ、過去のしがらみと拡張の歴史もあるわけだし
カレントディレクトリの実体が存在しなくなったプロセスが必要に応じてエラー検出すればいいんですよ
(hard linkやsymbolic linkされたディレクトリも要考慮なのですよ)
Re: (スコア:0)
Solarisだと現在いるディレクトリは使用中で削除できないから、Linuxでも一度ディレクトリを変えなきゃいけないと思ってスクリプト作ってたわ。