Merge pull request #721 from justincormack/vsudd-before-syslog

Always start vsudd before syslog
This commit is contained in:
Justin Cormack 2016-11-14 17:22:32 +00:00 committed by GitHub
commit f81abe7a39
3 changed files with 93 additions and 7 deletions

76
alpine/etc/init.d/sysklogd Executable file
View File

@ -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}
}

View File

@ -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"
}

View File

@ -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 {