diff options
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/once | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/bin/once b/bin/once index f13aecc..1655368 100755 --- a/bin/once +++ b/bin/once @@ -3,11 +3,14 @@ set -e [ -n "$DEBUG" ] && set -x +_check_running= ssd_args="--background --make-pidfile --start" -while getopts Kkl:h opt; do +while getopts rsKkl:h opt; do case "$opt" in K|k) ssd_args='--stop';; l) ssd_args="${ssd_args} --stdout ${OPTARG} --stderr ${OPTARG}";; + s) _check_running=1 ;; + r) _restart=1 ;; h) printf "usage: %s [-h]\n" "$(basename "$0")" @@ -24,6 +27,20 @@ exec="${1:-}" [ -z "${exec}" ] && exit 1 shift +if [ -n "$_check_running" ] +then + [ -f "${XDG_RUNTIME_DIR}/${exec}.pid" ] && exit 0 + exit 1 +fi + +if [ -n "$_restart" ] +then + set -x + ${0} -k ${exec} ${@} + ${0} ${exec} ${@} + exit 0 +fi + start-stop-daemon \ --pidfile "${XDG_RUNTIME_DIR:-/tmp}/${exec}.pid" \ $ssd_args \ |