mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-23 11:00:25 +00:00
Always start vsudd before syslog
If we are using vsudd to forward syslog to the host, as on osx, we need to start it before syslog starts, and make sure it has created its socket. Add a pidfile to vsudd to make startup more reliable. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
parent
49aee29e9c
commit
9d81e2efef
76
alpine/etc/init.d/sysklogd
Executable file
76
alpine/etc/init.d/sysklogd
Executable 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}
|
||||
}
|
@ -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"
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user