[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. |