|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
diff --git a/Makefile b/Makefile
|
|
|
|
|
index e77003d..22943c3 100644
|
|
|
|
|
index 2d36f45..61c69fb 100644
|
|
|
|
|
--- a/Makefile
|
|
|
|
|
+++ b/Makefile
|
|
|
|
|
@@ -43,6 +43,7 @@ slim: $(OBJECTS)
|
|
|
|
@ -12,10 +12,10 @@ index e77003d..22943c3 100644
|
|
|
|
|
install -D -m 644 slim.conf $(DESTDIR)$(CFGDIR)/slim.conf
|
|
|
|
|
diff --git a/slimd b/slimd
|
|
|
|
|
new file mode 100644
|
|
|
|
|
index 0000000..090aa9b
|
|
|
|
|
index 0000000..d283a68
|
|
|
|
|
--- /dev/null
|
|
|
|
|
+++ b/slimd
|
|
|
|
|
@@ -0,0 +1,60 @@
|
|
|
|
|
@@ -0,0 +1,41 @@
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
+#------------------------------------------------------------------------------
|
|
|
|
|
+# slimd
|
|
|
|
@ -36,43 +36,24 @@ index 0000000..090aa9b
|
|
|
|
|
+#------------------------------------------------------------------------------
|
|
|
|
|
+
|
|
|
|
|
+stopslim() {
|
|
|
|
|
+ # force kill X
|
|
|
|
|
+ killall X &>/dev/null
|
|
|
|
|
+ # and kill slim, because slim may be hanged
|
|
|
|
|
+ killall -9 slim &>/dev/null
|
|
|
|
|
+ # removing slim lock file
|
|
|
|
|
+ rm -f /var/run/slim.lock
|
|
|
|
|
+ exit
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+waitrun() {
|
|
|
|
|
+ while ! ps axo pid,cmd | grep "$1" | grep -v grep &>/dev/null
|
|
|
|
|
+ do
|
|
|
|
|
+ sleep 1
|
|
|
|
|
+ done
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+workloop() {
|
|
|
|
|
+ trap stopslim TERM
|
|
|
|
|
+ sleep 3
|
|
|
|
|
+ waitrun /usr/bin/X
|
|
|
|
|
+ waitrun "/usr/bin/slim$"
|
|
|
|
|
+ # waiting TERM signal for killing X and slim
|
|
|
|
|
+ while true
|
|
|
|
|
+ do
|
|
|
|
|
+ # check is working X
|
|
|
|
|
+ if ps axo pid,cmd | grep /usr/bin/X | grep -v grep &>/dev/null && \
|
|
|
|
|
+ ! ps axo pid,cmd | grep "/usr/bin/slim$" | grep -v grep &>/dev/null
|
|
|
|
|
+ then
|
|
|
|
|
+ stopslim
|
|
|
|
|
+ fi
|
|
|
|
|
+ if ! ps axo pid,cmd | grep /usr/bin/X | grep -v grep &>/dev/null
|
|
|
|
|
+ then
|
|
|
|
|
+ kill -9 `cat /var/run/slim.lock` &>/dev/null
|
|
|
|
|
+ rm -f /var/run/slim.lock
|
|
|
|
|
+ /usr/bin/slim
|
|
|
|
|
+ # waiting for run X
|
|
|
|
|
+ waitrun /usr/bin/X
|
|
|
|
|
+ fi
|
|
|
|
|
+ sleep 1
|
|
|
|
|
+ sleep 10
|
|
|
|
|
+ done
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/usr/bin/slim && workloop &
|
|
|
|
|
+/usr/bin/slim
|
|
|
|
|
+workloop &
|
|
|
|
|
+
|
|
|
|
|