diff --git a/service_linux.go b/service_linux.go index 9341c06..550decd 100644 --- a/service_linux.go +++ b/service_linux.go @@ -69,4 +69,7 @@ var tf = map[string]interface{}{ "cmd": func(s string) string { return `"` + strings.Replace(s, `"`, `\"`, -1) + `"` }, + "cmdEscape": func(s string) string { + return strings.Replace(s, " ", `\x20`, -1) + }, } diff --git a/service_systemd_linux.go b/service_systemd_linux.go index 571683f..5bb1cfc 100644 --- a/service_systemd_linux.go +++ b/service_systemd_linux.go @@ -157,12 +157,12 @@ func (s *systemd) Restart() error { const systemdScript = `[Unit] Description={{.Description}} -ConditionFileIsExecutable={{.Path|cmd}} +ConditionFileIsExecutable={{.Path|cmdEscape}} [Service] StartLimitInterval=5 StartLimitBurst=10 -ExecStart={{.Path|cmd}}{{range .Arguments}} {{.|cmd}}{{end}} +ExecStart={{.Path|cmdEscape}}{{range .Arguments}} {{.|cmd}}{{end}} {{if .ChRoot}}RootDirectory={{.ChRoot|cmd}}{{end}} {{if .WorkingDirectory}}WorkingDirectory={{.WorkingDirectory|cmd}}{{end}} {{if .UserName}}User={{.UserName}}{{end}}