このエントリーをはてなブックマークに追加


ユニークな一時ファイル名を作成する

ユニークな値の一時ディレクトリやファイルの作成にmktempコマンドがありますが、PIDを利用することもできます。
(PIDはプロセス番号のことです)

mktempについては逆引きUNIXコマンド/ユニークな値の一時ディレクトリ・ファイルを作成する方法を参照してください。

 

PIDの利用

シェルスクリプトの特殊な変数として$$があります。
$$は動作しているシェルスクリプトのプロセスID(PID)が格納されています。

以下のサンプルシェルスクリプトを複数起動してプロセスIDを利用しているため、ユニークなファイル名(ディレクトリ名)を作成することができます。
trapコマンドを利用してシグナルを受信したらワークファイルを削除する後処理を追加してあります。
trapコマンドについては、逆引きシェルスクリプト/シグナルを受ける方法を参照のこと。

#!/bin/bash

trap "rm /tmp/temporary.$$; exit 1" 1 2 3 15

while :
do
  date >> /tmp/temporary.$$
  sleep 1
done

実行例

以下の通り、複数の本スクリプトを起動すると/tmp/ディレクトリにワークファイルができていることが確認できます。
ワークファイルの後ろにはPIDが付加されています。
また、Ctrl+Cを押された時、上記のサンプルスクリプトではワークファイルを削除しスクリプトが終了します。

uniq_file-01.gif
 

 

添付ファイル: fileuniq_file.sh 457件 [詳細] fileuniq_file-01.gif 548件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:26:58