[2/2] initscripts: Implement storing PIDs in loadproc

Message ID 20240111152108.4041802-2-michael.tremer@ipfire.org
State Staged
Commit c3019331df2bb393c96def62a56d33abdec72e8c
Headers
Series [1/2] initscripts: Fix wrong variable check for $PIDFILE in getpids |

Commit Message

Michael Tremer Jan. 11, 2024, 3:21 p.m. UTC
  Some programs do not write their own PID files any more, but since our
initscripts heavily rely on those, this extension allows to store it
easily.

Signed-off-by: Daniel Weismüller <daniel.weismueller@ipfire.org>
---
 src/initscripts/system/functions | 8 ++++++++
 1 file changed, 8 insertions(+)
  

Patch

diff --git a/src/initscripts/system/functions b/src/initscripts/system/functions
index e4cb30456..5a26aef45 100644
--- a/src/initscripts/system/functions
+++ b/src/initscripts/system/functions
@@ -446,6 +446,7 @@  loadproc()
 	local pidfile=""
 	local forcestart=""
 	local nicelevel=""
+	local pid
 
 # This will ensure compatibility with previous LFS Bootscripts
 	if [ -n "${PIDFILE}" ];	then
@@ -521,12 +522,19 @@  loadproc()
 		(
 			${cmd} &>/dev/null
 		) &
+		pid="$!"
 		evaluate_retval
 	else
 		${cmd}
+		pid="$!"
 		evaluate_retval # This is "Probably" not LSB compliant, but required to be compatible with older bootscripts
 	fi
 
+	# Write the pidfile
+	if [ -n "${pid}" -a -n "${pidfile}" ]; then
+		echo "${pid}" > "${pidfile}"
+	fi
+
 	return 0
 }