建立一個 systemd 服務

開機時自動建立目錄

建立建立目錄.sh

sudo nano /usr/local/bin/init-shm-folders.sh
#!/bin/bash
mkdir -p /dev/shm/Downloads 
mkdir -p /dev/shm/Picture 
mkdir -p /dev/shm/Screenshots

chmod 777 /dev/shm/Downloads /dev/shm/Picture  /dev/shm/Screenshots
#設定執行權限
sudo chmod +x /usr/local/bin/init-shm-folders.sh

建立 systemd 服務檔案

sudo nano /etc/systemd/system/mkdir-shm.service
[Unit]
Description=Create /dev/shm folders at boot         # 服務說明,顯示於 systemctl status
DefaultDependencies=no                               # 禁用預設依賴,讓你能控制啟動順序
After=local-fs.target                                # 等本地檔案系統掛載完成後再執行
Before=basic.target                                  # 在 basic.target 之前執行,確保早期建立目錄

[Service]
Type=oneshot                                         # 一次性執行,不常駐
ExecStart=/usr/local/bin/init-shm-folders.sh         # 執行的腳本,負責建立目錄
RemainAfterExit=true                                 # 執行完仍視為 active,避免被 systemd 停用

[Install]
WantedBy=multi-user.target                           # 在 multi-user.target 階段啟動(正常開機流程)

啟動服務與測試

sudo systemctl daemon-reexec  #重新執行 systemd 的主程序(daemon)
sudo systemctl enable mkdir-shm.service #開機啟動
sudo systemctl start mkdir-shm.service  #立即啟動

工作流

開機
啟動 mkdir-shm.service
執行 init-shm-folders.sh
建立 /dev/shm 資料夾
設定擁有權與權限
使用者層級自動化可用