summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-05-11 16:42:54 -0300
committerEuAndreh <eu@euandre.org>2024-05-11 16:42:54 -0300
commitfb7a2f48795d00e8db18450bb3b956674d260a62 (patch)
tree37b6415f1695714f1b5efc90c37f009acd7561b7 /src
parentInitial empty commit (diff)
downloadcronjob-fb7a2f48795d00e8db18450bb3b956674d260a62.tar.gz
cronjob-fb7a2f48795d00e8db18450bb3b956674d260a62.tar.xz
Add imported code from dotfilesHEADmain
Diffstat (limited to 'src')
-rwxr-xr-xsrc/cronjob43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/cronjob b/src/cronjob
new file mode 100755
index 0000000..b6798f0
--- /dev/null
+++ b/src/cronjob
@@ -0,0 +1,43 @@
+#!/bin/sh
+. /etc/rc
+set -eu
+
+
+CMD="$*"
+HOSTNAME="$(hostname)"
+FROM="cronjob@$HOSTNAME"
+TIMEOUT='14400' # four hours
+STATUS_F="$(mkstemp)"
+CLOCK_F="$(mkstemp)"
+OUT="$(mkstemp)"
+
+email() {
+ {
+ cat <<-EOF
+ Content-Type: text/plain; charset=UTF-8
+ Content-Transfer-Encoding: 8bit
+ From: $FROM
+ To: root@localhost
+ Subject: (exit status: $(cat "$STATUS_F")) - $HOSTNAME: $CMD
+
+ EOF
+ cat "$OUT"
+ } | sendmail -t -f "$FROM"
+}
+trap 'email; rm -f "$OUT" "$STATUS_F" "$CLOCK_F"' EXIT
+
+{
+ cat <<-EOF
+ Running commad: $CMD
+ Starting at: $(timestamp)
+
+ EOF
+
+ statusf "$STATUS_F" clock -o "$CLOCK_F" timeout "$TIMEOUT" nicely "$@"
+
+ cat <<-EOF
+
+ Finished at: $(timestamp)
+ Duration: $(minutes "$(cat "$CLOCK_F")")
+ EOF
+} 2>&1 | pre "[$CMD]" | ts '%Y-%m-%dT%H:%M:%S' | tee "$OUT" >> /var/log/cronjobs.log