Преглед изворни кода

Basic locking to help avoid double mounts

Zachary Kotlarek пре 13 година
родитељ
комит
3f0a7fbe09
1 измењених фајлова са 15 додато и 2 уклоњено
  1. 15 2
      mountMedia

+ 15 - 2
mountMedia

@@ -1,6 +1,7 @@
 #!/bin/bash
 
 HOST="vera.uberzach.com"
+LOCK="${TMPDIR}/mountMedia.mounting"
 
 function findMedia {
 	MEDIA=""
@@ -25,8 +26,20 @@ fi
 # Connect as needed
 findMedia
 if [ -z "${MEDIA}" ]; then
-	osascript -e 'tell application "Finder" to mount volume "smb://atv@'"${HOST}"'/media"'
-	sleep 5
+	LOCKED=0
+	touch "${LOCK}"
+	read MOUNT_PID < "${LOCK}"
+	if [ -n "${MOUNT_PID}" ]; then
+		if ps -A -o pid | grep -q "${MOUNT_PID}"; then
+			LOCKED=1
+		fi
+	fi
+	if [ $LOCKED -eq 0 ]; then
+		echo $$ > "${LOCK}"
+		osascript -e 'tell application "Finder" to mount volume "smb://atv@'"${HOST}"'/media"'
+		sleep 5
+		rm -f "${LOCK}"
+	fi
 fi
 
 # Fix links