summaryrefslogtreecommitdiff
path: root/cmd/commandfuncs.go
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2020-05-13 11:28:15 -0600
committerMatthew Holt <mholt@users.noreply.github.com>2020-05-13 11:28:15 -0600
commit4df56c77e380cdfec5e23862f7faa8bd843022e6 (patch)
tree09fdf02b4ffc915b520a5249e91e839b0ea997e2 /cmd/commandfuncs.go
parentcee5589b9856de299ea6960d60541d851498b7c3 (diff)
cmd: Add pidfile support (closes #3235)
Diffstat (limited to 'cmd/commandfuncs.go')
-rw-r--r--cmd/commandfuncs.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/cmd/commandfuncs.go b/cmd/commandfuncs.go
index efdcfdc..f9e1033 100644
--- a/cmd/commandfuncs.go
+++ b/cmd/commandfuncs.go
@@ -41,6 +41,7 @@ import (
func cmdStart(fl Flags) (int, error) {
startCmdConfigFlag := fl.String("config")
startCmdConfigAdapterFlag := fl.String("adapter")
+ startCmdPidfileFlag := fl.String("pidfile")
startCmdWatchFlag := fl.Bool("watch")
// open a listener to which the child process will connect when
@@ -71,6 +72,9 @@ func cmdStart(fl Flags) (int, error) {
if startCmdWatchFlag {
cmd.Args = append(cmd.Args, "--watch")
}
+ if startCmdPidfileFlag != "" {
+ cmd.Args = append(cmd.Args, "--pidfile", startCmdPidfileFlag)
+ }
stdinpipe, err := cmd.StdinPipe()
if err != nil {
return caddy.ExitCodeFailedStartup,
@@ -149,6 +153,7 @@ func cmdRun(fl Flags) (int, error) {
runCmdResumeFlag := fl.Bool("resume")
runCmdPrintEnvFlag := fl.Bool("environ")
runCmdWatchFlag := fl.Bool("watch")
+ runCmdPidfileFlag := fl.String("pidfile")
runCmdPingbackFlag := fl.String("pingback")
// if we are supposed to print the environment, do that first
@@ -225,6 +230,16 @@ func cmdRun(fl Flags) (int, error) {
go watchConfigFile(configFile, runCmdConfigAdapterFlag)
}
+ // create pidfile
+ if runCmdPidfileFlag != "" {
+ err := caddy.PIDFile(runCmdPidfileFlag)
+ if err != nil {
+ caddy.Log().Error("unable to write PID file",
+ zap.String("pidfile", runCmdPidfileFlag),
+ zap.Error(err))
+ }
+ }
+
// warn if the environment does not provide enough information about the disk
hasXDG := os.Getenv("XDG_DATA_HOME") != "" &&
os.Getenv("XDG_CONFIG_HOME") != "" &&