From: Kenneth Johansson Date: Wed, 24 May 2017 11:45:37 +0000 (+0200) Subject: sysupgrade: run only one instance at a time. X-Git-Tag: v18.06.0-rc1~2903 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e96a9a9af82c00dcce606a84a7bb87a00411385d;p=oweals%2Fopenwrt.git sysupgrade: run only one instance at a time. Things do not work well if running multiple instances of upgrade at the same time. Signed-off-by: Kenneth Johansson --- diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index c095ca81c5..1eede14b05 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -47,6 +47,20 @@ while [ -n "$1" ]; do shift; done +# just one instance +if ! lock -n /tmp/sysupgrade.lock +then + echo "Another instance of sysupgrade already running" + echo "If you are sure this is wrong remove file /tmp/sysupgrade.lock" + exit 1 +fi + +# make sure the lock is removed when done even when killed +finish() { + lock -u /var/sysupgrade.lock +} +trap finish EXIT INT TERM + export CONFFILES=/tmp/sysupgrade.conffiles export CONF_TAR=/tmp/sysupgrade.tgz