diff --git a/alpine/etc/init.d/sysklogd b/alpine/etc/init.d/sysklogd new file mode 100755 index 000000000..1a1d5fcfa --- /dev/null +++ b/alpine/etc/init.d/sysklogd @@ -0,0 +1,76 @@ +#!/sbin/openrc-run +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 or later +# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/files/sysklogd.rc7,v 1.1 2011/09/14 22:22:57 polynomial-c Exp $ + +extra_started_commands="reload" + +depend() { + need clock hostname localmount vsudd + before net + provide logger +} + +start_daemon() { + local retval=0 + local daemon="$1" + local options="$2" + + [ -z "${daemon}" ] && return 1 + + ebegin "sysklogd -> start: ${daemon}" + start-stop-daemon --start --exec /usr/sbin/"${daemon}" \ + --pidfile /var/run/"${daemon}".pid -- ${options} + retval=$? + eend ${retval} "Failed to start ${daemon}" + + return ${retval} +} + +stop_daemon() { + local retval=0 + local daemon="$1" + + [ -z "${daemon}" ] && return 1 + + ebegin "sysklogd -> stop: ${daemon}" + # syslogd can be stubborn some times (--retry 15)... + start-stop-daemon --stop --retry 15 --quiet --pidfile /var/run/"${daemon}".pid + retval=$? + eend ${retval} "Failed to stop ${daemon}" + + return ${retval} +} + +start() { + start_daemon "syslogd" "${SYSLOGD}" || return 1 + + # klogd do not always start proper if started too early + sleep 1 + + if ! start_daemon "klogd" "${KLOGD}" ; then + stop_daemon "syslogd" + return 1 + fi + + return 0 +} + +stop() { + stop_daemon "klogd" || return 1 + stop_daemon "syslogd" || return 1 + return 0 +} + +reload() { + local ret=0 + + ebegin "Reloading configuration" + + start-stop-daemon --signal HUP --pidfile /var/run/syslogd.pid + ret=$((${ret} + $?)) + start-stop-daemon --signal USR1 --pidfile /var/run/klogd.pid + ret=$((${ret} + $?)) + + eend ${ret} +} diff --git a/alpine/packages/vsudd/etc/init.d/vsudd b/alpine/packages/vsudd/etc/init.d/vsudd index 4edc032e2..0093c7b10 100755 --- a/alpine/packages/vsudd/etc/init.d/vsudd +++ b/alpine/packages/vsudd/etc/init.d/vsudd @@ -2,11 +2,6 @@ description="vsock socket proxy client" -depend() -{ - before logger docker -} - start() { [ "$(mobyplatform)" != "mac" ] && [ "$(mobyplatform)" != "windows" ] && exit 0 @@ -31,10 +26,11 @@ start() start-stop-daemon --start --quiet \ --background \ --exec /sbin/vsudd \ - --make-pidfile --pidfile ${PIDFILE} \ -- -inport "${DOCKER_PORT}:unix:/var/run/docker.sock" \ ${SYSLOG_OPT} \ - -detach + -pidfile ${PIDFILE} + + [ -n "${SYSLOG_OPT}" ] && ewaitfile 10 /var/run/syslog.vsock eend $? "Failed to start vsudd" } diff --git a/alpine/packages/vsudd/main.go b/alpine/packages/vsudd/main.go index 94da4faf9..206c530f4 100644 --- a/alpine/packages/vsudd/main.go +++ b/alpine/packages/vsudd/main.go @@ -31,6 +31,7 @@ var ( detach bool useHVsock bool syslogFwd string + pidfile string ) type vConn interface { @@ -60,12 +61,25 @@ func init() { flag.Var(&inForwards, "inport", "incoming port to forward") flag.StringVar(&syslogFwd, "syslog", "", "enable syslog forwarding") flag.BoolVar(&detach, "detach", false, "detach from terminal") + flag.StringVar(&pidfile, "pidfile", "", "pid file") } func main() { log.SetFlags(log.LstdFlags) flag.Parse() + if pidfile != "" { + file, err := os.OpenFile(pidfile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + if err != nil { + log.Fatalln("Failed to open pidfile", err) + } + _, err = fmt.Fprintf(file, "%d", os.Getpid()) + file.Close() + if err != nil { + log.Fatalln("Failed to write pid", err) + } + } + if detach { syslog, err := syslog.New(syslog.LOG_INFO|syslog.LOG_DAEMON, "vsudd") if err != nil {