/var/log は tmpfs でマウントされ、FreeBSD ではマウント解除できません。

/var/log は tmpfs でマウントされ、FreeBSD ではマウント解除できません。

/var/logFreeBSDのcronを通して、ログファイルは定期的にディスクに同期されるtmpfsとしてマウントされました。このプロセスはスクリプトによって実行されますrc

私は次のようにインストールしました。

mount -t tmpfs -o nosuid,noexec,mode=0755,size=100M log /var/log

今、問題は削除することです。(r)syslogファイルが作成されたため削除できません。 lsof は以下を示しています。

 lsof /var/log/
lsof: WARNING: compiled for FreeBSD release 11.1-RELEASE-p6; this is 11.1-RELEASE.
COMMAND    PID USER   FD   TYPE         DEVICE SIZE/OFF NODE NAME
rsyslogd 85515 root    2w  VREG 255,2264924190      210   13 /var/log/security
rsyslogd 85515 root    4w  VREG 255,2264924190      210    3 /var/log/auth.log
rsyslogd 85515 root    5w  VREG 255,2264924190     2292    7 /var/log/kern.notice
rsyslogd 85515 root    6w  VREG 255,2264924190     2292   11 /var/log/messages
rsyslogd 85515 root    7w  VREG 255,2264924190     2292    5 /var/log/debug.log

したがって、それを削除するには、まずsyslogデーモンを停止する必要があります。しかし、これはsh rcスクリプト自体で管理されるため、より良いソリューションを探しています。

Linux / GNU Osにはumount非常に便利な主張があります。--lazy detach the filesystem now, clean up things later

、私が理解したように、アクティブプロセスがファイルシステムへの読み書きを停止するのを待ちます。それから削除プロセスを実行すると成功し、スクリプトは中断されません。

それでは、この問題の回避策としてsyslogが一時的に/ var / logに書き込まれないようにするにはどうすればよいですか?STOPをエクスポートして削除し、シグナルを送信しようとしましたが、CONT役に立ちません。

Lsofは依然としてFDへの書き込みが可能であると報告しています。スクリプトに適用できるソリューションが必要であることに注意してくださいsh

ありがとうございます!

編集する

umountには--forceパラメータがありますが、一般的な状況では、どんな犠牲を払ってもこれを避けます。しかし、これは1つであり、tmpfsブロックデバイスではなくメモリ上で実行されるので、何の害もないと確信しています。

複数のテストで何の問題もないことがわかりました。私はtmpfsにダミーファイルを作成し、その合計を確認し、ハードドライブと同期し、強制的にアンマウントすることでddこれを行いました。ハッシュが一致します。これは、ファイルが破損していないことを意味します。

まあ、それは少し汚れた解決策ですが、他の解決策はわかりません。 RAM fsでこのアプローチにいくつかの欠点がある人がいる場合は、教えてください。

ps:提案してくれた@layer8problemに感謝します:-)

関連情報