私はよく/tmp
一時ファイルを保存するためのLinuxマシンのディレクトリ(たとえば、最初にダウンロードしたいサイトからのPDFなど)と、ユーザー名でディレクトリを作成することがよくあります。ただし、すべての起動時に(すべてのファイルを含む)削除されます。今、私はそれを/var/tmp
ですが、すべての内容を削除し、ディレクトリ自体は保持したいのですが。そう:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
これを行う方法はありますか?多分権限または特別な構成で?
1つの解決策は、@reboot
cronジョブを使用することです。
@reboot mkdir -p "/tmp/$USER"
これをcrontab -e
を使用してcrontabに追加すると、マシンが起動するたびに実行されます。
または、
mkdir -p "/tmp/$USER"
シェルの起動ファイル内。
どちらの場合でも、使用することもできます
TMPDIR=/tmp/$USER
export TMPDIR
そのディレクトリをデフォルトの一時ディレクトリとして使用する場合は、シェルの起動ファイル内。
私は pam-tmpdir
を使用します:ログイン時にユーザー専用の一時ディレクトリを作成します。設定するには、
session optional pam_tmpdir.so
適切なPAMサービスに。 Debianベースのシステムでは、libpam-tmpdir
パッケージをインストールすると、これが実行されます。または、/etc/pam.d/common-session
に行を追加できます。次回ログインすると、/tmp/user
の下にユーザーIDのディレクトリがあり、TMP
とTMPDIR
が適切に設定されています。
Systemdを使用してシステムを実行しておらず、systemd-tmpfilesを使用してクリーンアップを管理している場合は、そのシステムを使用してディレクトリを設定する必要があります。
これが 完全なドキュメント です。次のような内容で/etc/tmpfiles.d/something.conf
を作成することで、希望どおりの結果を得ることができます。
d /tmp/your_username 0750 your_user your_group - -
コメントで指摘したように、/tmp
は一時的なファイルで、削除しても見逃されません。途中でマシンが再起動すると、そこに書き込んだものがすべて消えて最初からやり直す必要があります。つまり、これらのファイルが一時的なものではなかった可能性があります。
私は、ギガバイトが大量のスペースだったときから、ホームディレクトリに一時ディレクトリを何年も維持していましたが、古くて壊れやすいファイルを取り除くために定期的なグルーミングが必要であることに気付きました。ほとんどの場合、そのプロセスの後に残ったものは数週間前のものだったので、毎日1回実行するcronジョブでクリーンアップします。
find $HOME/tmp -depth -mtime +30 -print0 | xargs -0 -r rm -rf
セミテンポラリとしてダウンロードまたは作成したものはすべてそこに行き、システムは残したものをすべてクリーンアップします。永続的なホームが必要なものは、cronジョブがそれを取り除く前に1つ取得します。