Commit eb4d88
2025-07-06 21:43:46 Tebby Dog: Added intro| /dev/null .. 2-code/mount-point-service-sync.md | |
| @@ 0,0 1,96 @@ | |
| + | # Mount-Point-Service-Sync |
| + | |
| + | Plex kept shitting the bed every time the SMB share randomly dropped offline. After getting sick of jumping in to fix it manually over and over, I hacked together a script that shuts down the Plex service when the share bails, tries to remount the damn thing, and fires Plex back up once the share is stable again. |
| + | |
| + | # MPSS (Mount Point Service Sync) |
| + | ===================================== |
| + | |
| + | MPSS dynamically controls start/stop of services (plexmediaserver, tdarr_node, Tdarr_Uptime, emby-server) based on presence or absence of "MOUNT_POINT_ALIVE" file on a network share. It logs actions to /var/log/mpss.log and trims the log to 200 lines. |
| + | |
| + | ## Usage Example |
| + | ---------------- |
| + | |
| + | I run several services in my linux environment that depend on data on a network share to function. Occasionally that share goes offline for some reason. This script was written to ensure those services are shut down when the mount point becomes unavailable. |
| + | |
| + | ### Basic Concept |
| + | --------------- |
| + | |
| + | 1. Crontab that runs this script regularly |
| + | 2. Script checks for a file on the network share |
| + | * If it does, ensure the service is running |
| + | * If it does not, ensure the service is stopped |
| + | |
| + | ## Setup |
| + | -------- |
| + | |
| + | ### Step 1: Download the Script |
| + | ------------------------------ |
| + | |
| + | Download the script from this git repository: |
| + | |
| + | ```bash |
| + | mkdir /opt/mpss |
| + | git clone https://github.com/tebwritescode/mpss.git |
| + | cp ./mpss/mpss.sh /opt/mpss/mpss.sh |
| + | ``` |
| + | |
| + | ### Step 2: Customize the Script |
| + | ------------------------------- |
| + | |
| + | Customize the script by modifying the variables at the top of the file: |
| + | |
| + | ```bash |
| + | nano /opt/mpss/mpss.sh |
| + | ``` |
| + | |
| + | Modify `FILE`, `SERVICE`, `LOG_FILE`, and `MAX_LINES` to match your setup. |
| + | |
| + | Example: |
| + | ```bash |
| + | FILE="/path/to/mount/MOUNT_POINT_ALIVE" #The location of the file on the share |
| + | SERVICE="plexmediaserver" #Service that can be started/stopped with systemctl |
| + | LOG_FILE="/var/log/mpss.log" #Where to save the log |
| + | MAX_LINES=200 #How many lines of logs to keep in the log file |
| + | ``` |
| + | |
| + | Save your changes with <kbd>ctrl</kbd> + <kbd>x</kbd>, then <kbd>y</kbd>, then <kbd>return</kbd>. |
| + | |
| + | ### Step 3: Create the Log File |
| + | --------------------------- |
| + | |
| + | Create the log file: |
| + | |
| + | ```bash |
| + | touch /var/log/mpss.log |
| + | ``` |
| + | |
| + | ### Step 4: Create the Check File |
| + | ------------------------------ |
| + | |
| + | Create the check file on the network share: |
| + | |
| + | ```bash |
| + | touch /path/to/mount/MOUNT_POINT_ALIVE |
| + | ``` |
| + | |
| + | ### Step 5: Make the Script Executable |
| + | ------------------------------------ |
| + | |
| + | Make the script executable: |
| + | |
| + | ```bash |
| + | chmod +x /opt/mpss/mpss.sh |
| + | ``` |
| + | |
| + | ### Step 6: Schedule the Script with Crontab |
| + | ----------------------------------------- |
| + | |
| + | Schedule the script to run regularly using crontab. Add the following line to your crontab file (use `crontab -e` to edit): |
| + | |
| + | ```bash |
| + | */1 * * * * /opt/mpss/mpss.sh |
| + | ``` |
| + | |
| + | Note: Be aware that some versions of cron do not support all times you can create on crontab.guru, you will get an error when saving the file. |
| + | |
| + | That's it! Your MPSS script should now be set up to automatically start/stop services based on the presence or absence of the `MOUNT_POINT_ALIVE` file on your network share. |