Ubuntu, ファイルシステムがマウントされていない場合に書き込みを失敗させる

Ubuntu 22.04 ext4ファイルシステム 外部ストレージなどのファイルシステムのマウントに失敗したとき、 定期実行スクリプトやDockerコンテナなどが、実際にはマウントされていないマウントポイント以下に書き込みしてしまう場合があります。 /etc/fstabからnofailの指定を外せば、マウントに失敗した場合にOSが起動しなくなることで誤った操作を防げますが、 外部ストレージと関係のない他のサービスが共存している、遠隔操作を前提とした運用をしている、などの理由で、OSは起動してほしい場合があります。 マウントポイントがext4ファイルシステムにある場合、chattrコマンドを使って、変更を禁止することができます。 /mnt/mystorageのマウントを解除した状態で、以下のように指定します。 chattr +i /mnt/mystorage これによりマウントしている間、immutable属性がなくなり、変更できるようになります。 mount /mnt/mystorage linux - Prevent the possiblity of writing data to an unmounted mount point directory - Server Fault chattr(1): change file attribs on file system - Linux man page

2023年12月9日 · aoirint

ファイル変更時にコマンド実行(watchmedo, watchexec)

watchmedo (watchdog) https://github.com/gorakhargosh/watchdog https://pypi.org/project/watchdog/ watchmedo shell-command -R --command 'make build' ./src # プロセスが動いていても停止して再実行する watchmedo auto-restart -R -d ./src -- make serve watchmedo インストール pip3 install watchdog[watchmedo]==2.1.3 ※ 2.1.4 on Ubuntuはバグがありそう Exception in thread Thread-1: Traceback (most recent call last): File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/threading.py", line 973, in _bootstrap_inner self.run() File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/site-packages/watchdog/observers/api.py", line 199, in run self.dispatch_events(self.event_queue, self.timeout) File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/site-packages/watchdog/observers/api.py", line 372, in dispatch_events handler.dispatch(event) File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/site-packages/watchdog/events.py", line 282, in dispatch self.event_dispatch_map[event.event_type](event) AttributeError: 'RootHandler' object has no attribute 'event_dispatch_map' watchexec https://github.com/watchexec/watchexec https://crates.io/crates/watchexec-cli https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes watchexec -w ./src -- make build # プロセスが動いていても停止して再実行する watchexec -r -w ./src -- make serve # 初回実行しない watchexec -p -w ./src -- make event-trigger watchexec インストール Rustのインストール https://www.rust-lang.org/ja/learn/get-started curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh watchexecのインストール cargo install watchexec-cli

2021年8月22日 · aoirint