From 1cc4c432b2926da4070cda7f93bb603ffbf30549 Mon Sep 17 00:00:00 2001 From: Ducky Date: Tue, 2 Apr 2024 02:29:04 +0100 Subject: [PATCH] sh.zio.sys-daemon: add System Daemon --- .gitignore | 2 + etc/systemd/system/sh.zio.sys-daemon.service | 8 +++ usr/local/bin/sh.zio.sys-daemon | 66 ++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 etc/systemd/system/sh.zio.sys-daemon.service create mode 100755 usr/local/bin/sh.zio.sys-daemon diff --git a/.gitignore b/.gitignore index 1227930..3fe53b7 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ !/etc/systemd/system/sh.zio.backup.timer !/etc/systemd/system/zio-backup.service !/etc/systemd/system/zio-backup.timer +!/etc/systemd/system/sh.zio.sys-daemon.service !/etc/systemd/system/sh.zio.znc.update-cert.service !/etc/systemd/system/sh.zio.znc.update-cert.timer @@ -51,6 +52,7 @@ !/usr/local/bin/sh.zio.notify !/usr/local/bin/sh.zio.pod-exec !/usr/local/bin/sh.zio.pod-systemd +!/usr/local/bin/sh.zio.sys-daemon !/usr/local/bin/sh.zio.update-rootfs !/usr/local/bin/sh.zio.znc.update-cert !/usr/local/bin/zio-backup diff --git a/etc/systemd/system/sh.zio.sys-daemon.service b/etc/systemd/system/sh.zio.sys-daemon.service new file mode 100644 index 0000000..b96e608 --- /dev/null +++ b/etc/systemd/system/sh.zio.sys-daemon.service @@ -0,0 +1,8 @@ +[Unit] +Description=sh.zio.sys-daemon + +[Service] +User=root +Group=root +ExecStart=/usr/local/bin/sh.zio.sys-daemon +Type=simple diff --git a/usr/local/bin/sh.zio.sys-daemon b/usr/local/bin/sh.zio.sys-daemon new file mode 100755 index 0000000..d77f1d2 --- /dev/null +++ b/usr/local/bin/sh.zio.sys-daemon @@ -0,0 +1,66 @@ +#!/usr/bin/env bash + +_PLUG_TITLE="System Daemon" +_PLUG_DESCRIPTION="" +#_PLUG_ARGS=( +#) +_PLUG_ROOT="true" + +piddir="/var/run/zio" +pidfile="$piddir/sh.zio.sys-daemon.pid" + +# TODO: Pidfiles + +function check_pidfile() { + mkdir -p "$piddir" + + if [[ -f $pidfile ]]; then + pid="$(cat $pidfile)" + if ps -p $pid > /dev/null; then + die "Already running (PID exists: $pidfile)" + exit + fi + else + touch "$pidfile" + echo "$$" > "$pidfile" + fi +} + +function del_pidfile() { + rm -f "$pidfile" +} + +function notify_startup() { + /usr/local/bin/sh.zio.notify \ + --level "info" \ + --message "**$(hostname -f)** completed startup at $(date "+%d-%b-%Y %H:%M:%S %Z")" \ + --title "Node online" +} + +function main() { + check_pidfile + + notify_startup + sleep infinity + + del_pidfile +} + +if [[ $_PLUG_INVOKED != "true" ]]; then + base_dir="$(dirname "$(realpath -s "$0")")" + git_dir="$base_dir/../../.." + + if [[ -d "$git_dir/.git" ]]; then + . "$git_dir/usr/local/libexec/zio/helpers/bash.sh" + else + . "/usr/local/libexec/zio/helpers/bash.sh" + fi + + export -f get_config_dir + + if [[ -d "$git_dir/.git" ]]; then + "$git_dir/usr/local/libexec/sodalite/invoker/src/invoke.sh" "$0" $@ + else + "/usr/local/libexec/sodalite/invoker/src/invoke.sh" "$0" $@ + fi +fi