added ensure_app_is_running service script and timer
This commit is contained in:
parent
e11a0db660
commit
536c105f48
@ -1,4 +1,4 @@
|
|||||||
Host 5.75.139.112 mail.bak-it.de web.bak-it.de forum.linksjugend-solid.de backuppc.bak-it.de login.bak-it.de stuff.bak-it.de
|
Host 78.46.239.229 168.119.171.217 78.47.196.196 5.75.139.112 mail.bak-it.de web.bak-it.de forum.linksjugend-solid.de backuppc.bak-it.de login.bak-it.de stuff.bak-it.de
|
||||||
User root
|
User root
|
||||||
IdentityFile ~/.ssh/solidProd
|
IdentityFile ~/.ssh/solidProd
|
||||||
|
|
||||||
|
|||||||
11
eggs/utility/systemd/ensure_app_is_running.service
Normal file
11
eggs/utility/systemd/ensure_app_is_running.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=ensure_app_is_running.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
# https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#Specifiers
|
||||||
|
ExecStart=/usr/bin/env bash %h/.local/share/until-scripts/ensure_app_is_running.sh run
|
||||||
|
Restart=no
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
9
eggs/utility/systemd/ensure_app_is_running.timer
Normal file
9
eggs/utility/systemd/ensure_app_is_running.timer
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Run ensure_app_is_running periodicly
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
Unit=ensure_app_is_running.service
|
||||||
|
OnUnitInactiveSec=60s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
76
eggs/utility/util-scripts/ensure_app_is_running.sh
Normal file
76
eggs/utility/util-scripts/ensure_app_is_running.sh
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
TMP_FILE=/tmp/ensure_running.json
|
||||||
|
BOOT_ID=$(cat /proc/sys/kernel/random/boot_id)
|
||||||
|
data=$(cat "$TMP_FILE")
|
||||||
|
|
||||||
|
|
||||||
|
prep_tmp_if_needed() {
|
||||||
|
if [ ! -f "$TMP_FILE" ]; then
|
||||||
|
echo "{ \"boot_id\": \"$BOOT_ID\", \"entries\": [], \"running_pids\": {} }" > "$TMP_FILE"
|
||||||
|
fi
|
||||||
|
data=$(cat "$TMP_FILE")
|
||||||
|
data_bid=$(jq -r '.boot_id' <<< $data)
|
||||||
|
if [[ "$data_bid" == "" || "$data_bid" != "$BOOT_ID" ]]; then
|
||||||
|
rm $TMP_FILE
|
||||||
|
prep_tmp_if_needed
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
run() {
|
||||||
|
prep_tmp_if_needed
|
||||||
|
|
||||||
|
while read -r e; do
|
||||||
|
existing_pid=$(jq -r --arg k "$e" '.running_pids[($k)]?' <<< "$data")
|
||||||
|
if [[ $existing_pid != "null" && "$(ps -p $existing_pid -o pid --no-headers)" != "" ]]; then
|
||||||
|
continue
|
||||||
|
fi;
|
||||||
|
|
||||||
|
bash -lc "$e" &
|
||||||
|
pid=$!
|
||||||
|
|
||||||
|
data=$(jq --arg k "$e" --arg v "$pid" \
|
||||||
|
'.running_pids += {($k): $v}' <<< "$data")
|
||||||
|
done < <(jq -r '.entries[]' <<< "$data")
|
||||||
|
echo "$data" > "$TMP_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
register() {
|
||||||
|
prep_tmp_if_needed
|
||||||
|
|
||||||
|
data=$(jq --arg val "$*" '.entries += [$val]' <<< "$data")
|
||||||
|
data=$(jq '.entries |= unique' <<< "$data")
|
||||||
|
echo "$data" > "$TMP_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
remove() {
|
||||||
|
prep_tmp_if_needed
|
||||||
|
|
||||||
|
diff=$data
|
||||||
|
data=$(jq --arg val "$*" '.entries -= [$val]' <<< "$data")
|
||||||
|
if [ "$diff" = "$data" ]; then
|
||||||
|
echo "Element to remove was not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "$data" > "$TMP_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
list() {
|
||||||
|
jq -C <<< "$data"
|
||||||
|
}
|
||||||
|
|
||||||
|
i=1
|
||||||
|
for arg in "$@"; do
|
||||||
|
i=( $i+1 )
|
||||||
|
case $arg in
|
||||||
|
run) run; exit 0; ;;
|
||||||
|
register)
|
||||||
|
register "${@:i}"; exit 0; ;;
|
||||||
|
remove)
|
||||||
|
remove "${@:i}"; exit 0; ;;
|
||||||
|
list) list; exit 0; ;;
|
||||||
|
*)
|
||||||
|
echo "Unsuported: $arg"; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
@ -26,6 +26,7 @@ export let base = #{
|
|||||||
targets: #{
|
targets: #{
|
||||||
"util-scripts": "~/.local/share/until-scripts/",
|
"util-scripts": "~/.local/share/until-scripts/",
|
||||||
"nem": "~/.local/share/nem",
|
"nem": "~/.local/share/nem",
|
||||||
|
"systemd": "~/.local/share/systemd/user"
|
||||||
},
|
},
|
||||||
enabled: true
|
enabled: true
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user