summary refs log tree commit diff
path: root/bin/once
blob: 1655368f965036935664c4d37d37d0dc5c7e707c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh

set -e
[ -n "$DEBUG" ] && set -x

_check_running=
ssd_args="--background --make-pidfile --start"
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")"
		printf "\n"
		printf "  -K -k          kill the service\n"
		printf "     -l LOGFILE  log to a file\n"
		printf "\n"
		exit 2 ;;
	esac
done
shift $((OPTIND - 1))

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 \
	"${exec}" -- "${@}"