Resume network init in background
[hvlinux.git] / stage2 / misc / acpi / suspend2ram.sh
index 5283375..a98df77 100755 (executable)
@@ -22,6 +22,17 @@ esac
 
 logger "Going to sleep"
 
+XSCREENSAVER_ACTIVE="$(pidof /usr/bin/xscreensaver)"
+
+# Check if xscreensaver is running. if not, just skip on.
+if [ "x${XSCREENSAVER_ACTIVE}" != "x" ]; then
+    # Run the lock command as the user who owns xscreensaver process,
+    # and not as root, which won't work.
+    su "$(ps aux | grep xscreensaver | grep -v grep | grep ${XSCREENSAVER_ACTIVE} | awk '{print $1}' )" \
+        -c "/usr/bin/xscreensaver-command -lock" &
+    sleep 1
+fi
+
 # discover video card's ID
 ID=`lspci | grep VGA | awk '{ print $1 }' | sed -e 's@0000:@@' -e 's@:@/@'`
 
@@ -37,7 +48,12 @@ sync
 cat /proc/bus/pci/$ID > $TMP_FILE
 
 # Stopping network.
-/etc/rc.d/init.d/named stop
+
+# Check if NFS server functionality is desired
+if [ -f /etc/rc.d/init.d/named ]; then
+    /etc/rc.d/init.d/named stop
+fi
+
 /etc/rc.d/init.d/network stop
 
 echo "Entering suspend mode"
@@ -51,8 +67,11 @@ echo "Resuming"
 # on resume
 cat $TMP_FILE > /proc/bus/pci/$ID
 
-/etc/rc.d/init.d/network start
-/etc/rc.d/init.d/named start
+/etc/rc.d/init.d/network start &
+
+if [ -f /etc/rc.d/init.d/named ]; then
+    /etc/rc.d/init.d/named start
+fi
 
 # remove temporary file
 rm -f $TMP_FILE