From b923b89432b0f50ce6bc14830ba0c83e6ae0f541 Mon Sep 17 00:00:00 2001 From: Maycon Santos Date: Wed, 15 Feb 2023 18:03:14 +0100 Subject: [PATCH] Create log directory in init systems that use shell script Checks if the target directory contains the service name and adjust directory permissions to 0750 --- service_rcs_linux.go | 12 ++++++++++-- service_sysv_linux.go | 12 ++++++++++-- service_upstart_linux.go | 12 ++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/service_rcs_linux.go b/service_rcs_linux.go index 0fca97dc..2b9970c7 100644 --- a/service_rcs_linux.go +++ b/service_rcs_linux.go @@ -233,8 +233,16 @@ cmd="{{.Path}}{{range .Arguments}} {{.|cmd}}{{end}}" name={{.Name}} pid_file="/var/run/$name.pid" -stdout_log="{{.LogDirectory}}/$name.log" -stderr_log="{{.LogDirectory}}/$name.err" +log_dir="{{.LogDirectory}}" +stdout_log="$log_dir/$name.log" +stderr_log="$log_dir/$name.err" + +if [ ! -d "$log_dir" ]; then + mkdir -p "$log_dir" + if grep $name $log_dir > /dev/null; then + chmod 750 $log_dir + fi +fi [ -e /etc/sysconfig/$name ] && . /etc/sysconfig/$name diff --git a/service_sysv_linux.go b/service_sysv_linux.go index 5a98a514..87674f00 100644 --- a/service_sysv_linux.go +++ b/service_sysv_linux.go @@ -204,8 +204,16 @@ cmd="{{.Path}}{{range .Arguments}} {{.|cmd}}{{end}}" name=$(basename $(readlink -f $0)) pid_file="/var/run/$name.pid" -stdout_log="{{.LogDirectory}}/$name.log" -stderr_log="{{.LogDirectory}}/$name.err" +log_dir="{{.LogDirectory}}" +stdout_log="$log_dir/$name.log" +stderr_log="$log_dir/$name.err" + +if [ ! -d "$log_dir" ]; then + mkdir -p "$log_dir" + if grep $name $log_dir > /dev/null; then + chmod 750 $log_dir + fi +fi {{range $k, $v := .EnvVars -}} export {{$k}}={{$v}} diff --git a/service_upstart_linux.go b/service_upstart_linux.go index 42b947cb..cdcb402a 100644 --- a/service_upstart_linux.go +++ b/service_upstart_linux.go @@ -256,8 +256,16 @@ end script # Start script {{if .LogOutput}} - stdout_log="{{.LogDirectory}}/{{.Name}}.out" - stderr_log="{{.LogDirectory}}/{{.Name}}.err" + log_dir="{{.LogDirectory}}" + stdout_log="$log_dir/$name.log" + stderr_log="$log_dir/$name.err" + + if [ ! -d "$log_dir" ]; then + mkdir -p "$log_dir" + if grep $name $log_dir > /dev/null; then + chmod 750 $log_dir + fi + fi {{end}} if [ -f "/etc/sysconfig/{{.Name}}" ]; then