WSL2 で常駐サービスを動かす設定(.wslconfig / systemd / 定期実行)
Docker や CouchDB を WSL2 で常駐させるなら、.wslconfig でメモリ上限と swap を明示し、/etc/wsl.conf で systemd を有効化する。cron は WSL 停止中に走らないので、確実性が要るジョブは Windows タスクスケジューラから wsl.exe を呼ぶ。データは ext4 側に置き /mnt/c を避ける。
調査時点: 2026-05。AFFiNE(Postgres + Redis + Node)と Obsidian LiveSync(CouchDB)を WSL2 で同時に動かす前提で整理した。
WSL2(Windows Subsystem for Linux 2)は、Windows 上で Linux 環境を動かす仕組み。Linux カーネルを軽量な仮想マシンで実行し、Linux のコマンドやサービスをそのまま使える。
リソース割当(.wslconfig)
WSL2 のデフォルトは全 RAM の 50% を上限にする。常駐サービスを複数動かすと他の作業を圧迫するので、上限と swap を明示する。
Windows 側 %USERPROFILE%\.wslconfig:
[wsl2]memory=8GBprocessors=4swap=4GB目安は最低 4GB、推奨 8GB、余裕があれば 12GB。設定後は Windows 側で wsl --shutdown を実行して再起動する。WSL 起動中は .wslconfig の再読み込みが効かない。
systemd の有効化(/etc/wsl.conf)
WSL2 の標準状態では init が busybox 相当で systemctl が動かない。cron / docker / 各種デーモンを常駐させるには systemd が要る。
[boot]systemd=truewsl --shutdown 後に確認する。
systemctl --versionsudo systemctl enable cronsudo systemctl enable docker定期実行の二択
WSL2 ディストロが起動していない時間帯のジョブはスキップされる。日次バックアップのように確実性が要るジョブは、この制約を前提に方式を選ぶ。
方式 A: WSL 内 cron(systemd 必須)
ディストロが起動していれば動く。常時起動のデスクトップには十分。
crontab -e# 毎日 03:00 にバックアップ0 3 * * * tar --zstd -cf ~/backup/vault-$(date +\%F).tar.zst -C ~ vault短所: PC スリープ中・WSL 停止中はスキップされ、復帰時に未実行分を追走する仕組みが標準にはない(anacron を入れれば可能だが WSL2 では設定が煩雑)。
方式 B: Windows タスクスケジューラ
「ログオン時に実行」「失敗時に再試行」「復帰時に未実行を追走」が使える。
$action = New-ScheduledTaskAction -Execute "wsl.exe" ` -Argument "bash -c '~/scripts/backup.sh'"$trigger = New-ScheduledTaskTrigger -Daily -At 3:00amRegister-ScheduledTask -TaskName "VaultBackup" ` -Action $action -Trigger $trigger -RunLevel Highestスクリプト側に set -euo pipefail と失敗通知(notify-send、Slack webhook、メール)を入れ、サイレント失敗を防ぐ。
選び方
| ケース | 推奨 |
|---|---|
| 常時起動デスクトップ、WSL も常時稼働 | A(cron) |
| ノート PC、スリープ多用 | B(タスクスケジューラ) |
| バックアップなど絶対に走らせたいもの | B |
| Docker などサービス常駐が前提 | systemd が必須なので A と相性がよい |
ファイルシステムの配置
| 配置 | 性能 | 備考 |
|---|---|---|
~/ 配下(ext4) | 高い | inotify が正常に動く。Obsidian の即時反映や DB の I/O に向く |
\\wsl$\<distro>\home\...(Windows から参照) | 中 | Plan9 経由。大量ファイルでインデックスが遅れる |
/mnt/c/...(NTFS) | 低い | inotify が機能せず、ファイル監視型のツールが壊れる。データ置き場にしない |
認証情報は ~/.config/<tool>/credentials.json(chmod 600)のように Linux 側に閉じる。
ディスクの注意点
- WSL2 のファイルシステムは
ext4.vhdx上にある。DB の I/O が走るなら、その物理ディスクが SSD かを確認する ext4.vhdxは一度膨らむと自動では縮まない。縮めるには WSL を停止してOptimize-VHDするか、新規ディストロにコピーする。Blob を大量に入れる前に未使用ファイルの削除方針を決めておく- バックアップ先は WSL2 の外(Windows 側のクラウド同期フォルダへ
\\wsl$\経由でコピー、またはrcloneで外部ストレージ)。vhdx が壊れるとバックアップごと消える
関連
更新履歴
- 2026-05-10: 初版(ローカル調査ノート)
- 2026-10-17: Wiki へ移植、概念ページとして再構成。冒頭に定義を追加