bashの自己ファイルを消したらどうなるか
はい、ちょっと話題になったので自分でも作ってみました。
はい、ちょっと話題になったので自分でも作ってみました。
test01.sh
#!/bin/shecho "start"sleep 1rm $0sleep 1echo "end"
test02.sh#!/bin/shecho "start"sleep 1truncate -s0 "$0"sleep 1echo "end"
rm自分バージョンと、trancate自分バージョン。
rmでは自己ファイルを消しますが、バックでまだ残ってるので進みます。
一方、trancateでファイルを0にする感じです。
結果はこちら
rmでは自己ファイルを消しますが、バックでまだ残ってるので進みます。
一方、trancateでファイルを0にする感じです。
結果はこちら
[tmp]$ sh test01.shstartend[tmp]$ sh test02.shstart[tmp]$
これは教えてもらった事ですが、rm自体はリンクを消すだけだから(よって早い)実態としては残ってる。trancateコマンドはファイルを直接触りに行くから消えると。
参考:
https://www.atmarkit.co.jp/ait/articles/1712/01/news017.html
参考:
https://www.atmarkit.co.jp/ait/articles/1712/01/news017.html
コメント