[解決済み] 予期しないbashの終了時に作成された一時ファイルを削除する
2022-11-26 17:49:38
質問
bashスクリプトで一時ファイルを作成しています。処理終了時に削除しているのですが、スクリプトがかなり長く実行されているため、実行中にスクリプトを終了したり、単に CTRL-C を実行しても、一時ファイルが削除されません。
これらのイベントをキャッチして、実行が終了する前にファイルをクリーンアップする方法はありますか?
また、これらの一時ファイルの名前と場所について、何らかのベスト プラクティスがありますか?
私は現在、使用している間によくわかりません。
TMP1=`mktemp -p /tmp`
TMP2=`mktemp -p /tmp`
...
と
TMP1=/tmp/`basename $0`1.$$
TMP2=/tmp/`basename $0`2.$$
...
それとも、もっと良い解決策があるのでしょうか?
どのように解決するのですか?
"を設定するとよいでしょう。 トラップ を設定して、終了時または control-c で実行し、クリーンアップすることができます。
trap '{ rm -f -- "$LOCKFILE"; }' EXIT
あるいは、私の好きな Unix イズムのひとつに、ファイルを開いてから、開いている間にそれを削除することがあります。 ファイルはファイルシステム上に残り、読み書きができますが、プログラムが終了するとすぐにファイルは消えます。 しかし、bashでそれをどのように行うかについては、よくわかりません。
ところで、あなた自身の解決策を使う代わりに mktemp を支持する一つの議論をします: ユーザーがあなたのプログラムが巨大な一時ファイルを作成することを予期しているなら、彼は
TMPDIR
を /var/tmp のような大きな場所に設定したいと思うかもしれません。mktemp はそれを認識しますが、手動の解決策(2番目のオプション)はそれを認識しません。 私は頻繁に
TMPDIR=/var/tmp gvim -d foo bar
をよく使いますが、例えば
関連
-
[解決済み] Bashスクリプトで、ある条件が発生したらスクリプト全体を終了させるにはどうしたらいいですか?
-
[解決済み] bash で複数のサブプロセスが終了するのを待ち、いずれかのサブプロセスがコード !=0 で終了したときに終了コード !=0 を返すにはどうすればよいですか?
-
[解決済み] Bash関数におけるreturnとexitの違いについて
-
[解決済み] Bashでパイプ出力と終了ステータスをキャプチャする
-
[解決済み】複数のコマンドのBash終了状態を効率的に確認する方法
-
[解決済み】コマンドに失敗すると即座にbashを終了させる "set -e "の効果を元に戻すには?
-
[解決済み] bashで一時ファイルを作成する
-
[解決済み] シェルスクリプトで文字列が空でもスペースでもないことをチェックする
-
[解決済み] unset の使用と変数への空の設定
-
[解決済み] bashでHMAC-SHA1
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】シェルプログラミングにおける$(command)と`command`の違いは?
-
[解決済み] bashでWebサーバーの応答を待つループを作成するには?
-
[解決済み] スクリプトの実行に関連したファイルの参照
-
[解決済み] 実行中のBASHスクリプトのパスを決定する [重複].
-
[解決済み] Cronジョブおよびランダム時間(指定時間内
-
[解決済み] Bashの履歴にコマンドを表示させないようにするには?
-
[解決済み] Bashでファイルの内容を既存ファイルの末尾に追加する [重複]。
-
[解決済み] bashでファイル(引数)を編集しているコマンドを "その場 "で実行するには?
-
[解決済み] WindowsのバッチとLinuxのBashの両方で実行できるスクリプトは?
-
[解決済み] グレースフル・シャットダウンプロセスのシグナルはどのような順番で送ればよいのですか?