summaryrefslogtreecommitdiff
path: root/ar/.local/bin/cron/checkup
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-06-16 09:03:32 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-06-16 09:11:02 +0900
commitefd938fd765b578773868607e9729db5e5a2a1ff (patch)
treea88fe7f7c1c2c103361126a68547c01d1b9a9702 /ar/.local/bin/cron/checkup
parent51c18f43c1742c15e4da94484403bf15bf62ff0d (diff)
modified cron/checkup
Diffstat (limited to 'ar/.local/bin/cron/checkup')
-rwxr-xr-xar/.local/bin/cron/checkup18
1 files changed, 18 insertions, 0 deletions
diff --git a/ar/.local/bin/cron/checkup b/ar/.local/bin/cron/checkup
index 86cba4a..99dafdf 100755
--- a/ar/.local/bin/cron/checkup
+++ b/ar/.local/bin/cron/checkup
@@ -3,6 +3,24 @@
# Syncs repositories and downloads updates, meant to be run as a cronjob.
# /usr/share/libalpm/hooks/statusbar.hook
+# Take an exclusive lock so two checkups never run at once, and so a manual
+# update can yield this run. Interactive update commands can guard themselves
+# with the same lock, e.g.:
+# flock -n /tmp/checkup.lock sudo pacman -Syu
+LOCKFILE="/tmp/checkup.lock"
+exec 9>"$LOCKFILE" || exit 1
+if ! flock -n 9; then
+ notify-send "📦 Repository Sync" "Another checkup is already running. Skipping."
+ exit 0
+fi
+
+# Courtesy check: if pacman's database is already locked (e.g. you're running a
+# manual update), back off quietly instead of failing on a lock error.
+if [ -e /var/lib/pacman/db.lck ]; then
+ notify-send "📦 Repository Sync" "pacman is busy (db locked). Skipping this sync."
+ exit 0
+fi
+
notify-send "📦 Repository Sync" "Checking for package updates..."
sudo pacman -Syyuw --noconfirm || notify-send "â›” Error downloading updates.