[Assorted-commits] SF.net SVN: assorted: [188] shell-tools/trunk/src
Brought to you by:
yangzhang
|
From: <yan...@us...> - 2007-11-20 03:37:43
|
Revision: 188
http://assorted.svn.sourceforge.net/assorted/?rev=188&view=rev
Author: yangzhang
Date: 2007-11-19 19:37:47 -0800 (Mon, 19 Nov 2007)
Log Message:
-----------
added exit-status monitoring to daemon-ctl; added memmon
Modified Paths:
--------------
shell-tools/trunk/src/daemon-ctl.bash
Added Paths:
-----------
shell-tools/trunk/src/memmon.bash
Modified: shell-tools/trunk/src/daemon-ctl.bash
===================================================================
--- shell-tools/trunk/src/daemon-ctl.bash 2007-11-19 07:07:47 UTC (rev 187)
+++ shell-tools/trunk/src/daemon-ctl.bash 2007-11-20 03:37:47 UTC (rev 188)
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# vim:noet:sw=4:ts=4
-# TODO find a real daemonizing tool, instead of using this home-baked one
+# TODO check to see if the pid file exists and points to a running process
. common.bash
@@ -23,6 +23,7 @@
-O ) stdout='' ;;
-p ) shift ; pid_file="$1" ;;
-t ) shift ; timeout="$1" ;;
+ -x ) shift ; exit_file="$1" ;;
-- ) shift ; break ;;
-* ) die "$usage" ;;
start | stop | status ) cmd="$1" ; shift ; break ;;
@@ -49,28 +50,49 @@
# TODO add option to work with sessions (setsid) to kill all subprocs as well
+exit-monitor() {
+ # start the program
+ if [[ "$stdout" == '' && "$stderr" == '' ]] ; then
+ "$@" &
+ elif [[ "$stdout" != '' && "$stderr" == '' ]] ; then
+ mkdir -p "$( dirname "$stdout" )"
+ "$@" > "$stdout" &
+ elif [[ "$stdout" == '' && "$stderr" != '' ]] ; then
+ mkdir -p "$( dirname "$stderr" )"
+ "$@" > "$stderr" &
+ elif [[ "$stdout" == "$stderr" ]] ; then
+ mkdir -p "$( dirname "$stdout" )"
+ $save_exit "$@" >& "$stdout" &
+ else
+ mkdir -p "$( dirname "$stdout" )"
+ mkdir -p "$( dirname "$stderr" )"
+ "$@" > "$stdout" 2> "$stderr" &
+ fi
+
+ # inform parent of pid
+ echo $! > "$pid_pipe"
+
+ # wait around for the program to exit?
+ if [ ! -z "$exit_file" ] ; then
+ set +e # wait will return the exit status
+ wait $!
+ echo $? > "$exit_file"
+ set -e
+ fi
+}
+
case "$cmd" in
start )
{
- nohup= # TODO keep nohup?
- if [[ "$stdout" == '' && "$stderr" == '' ]] ; then
- $nohup "$@" &
- elif [[ "$stdout" != '' && "$stderr" == '' ]] ; then
- mkdir -p "$( dirname "$stdout" )"
- $nohup "$@" > "$stdout" &
- elif [[ "$stdout" == '' && "$stderr" != '' ]] ; then
- mkdir -p "$( dirname "$stderr" )"
- $nohup "$@" > "$stderr" &
- elif [[ "$stdout" == "$stderr" ]] ; then
- mkdir -p "$( dirname "$stdout" )"
- $nohup "$@" &> "$stdout" &
- else
- mkdir -p "$( dirname "$stdout" )"
- mkdir -p "$( dirname "$stderr" )"
- $nohup "$@" > "$stdout" 2> "$stderr" &
- fi
- log "started $@, pid = $!, pid file = $pid_file, command = $@"
- echo $! > "$pid_file"
+ # TODO not using mktemp; this is to run on OE
+ pid_pipe="${TMP:-/tmp}/$$.pipe"
+ echo "$pid_pipe"
+ mkfifo "$pid_pipe"
+ exit-monitor "$@" >& /dev/null &
+ pid="$( < "$pid_pipe" )"
+ rm "$pid_pipe"
+ log "started $@, pid = $pid, pid file = $pid_file, exit file = $exit_file, command = $@"
+ echo $pid > "$pid_file"
} ;;
stop )
{
Added: shell-tools/trunk/src/memmon.bash
===================================================================
--- shell-tools/trunk/src/memmon.bash (rev 0)
+++ shell-tools/trunk/src/memmon.bash 2007-11-20 03:37:47 UTC (rev 188)
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+# vim:et:sw=2:ts=2
+
+period=${1:-60}
+
+while true ; do
+ date
+ uptime
+ free -m
+ vmstat 1 5
+ ps auxf --width=200
+ sleep 60
+done
Property changes on: shell-tools/trunk/src/memmon.bash
___________________________________________________________________
Name: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|