fix(update-lxcs/apps): avoid pct exec on containers mid-shutdown (#14050)

Both update-lxcs.sh and update-apps.sh backgrounded pct shutdown and then
immediately called pct exec on the same container, causing 'Error: unexpected
status' which terminated the loop after the first container.

update-lxcs.sh: wrapped reboot-required and patchmon-agent checks in a
guard that only runs them when the container was already running (not
one that was started and is now being shut down).

update-apps.sh: moved pct set (resource reset) and the pct exec
reboot-required check to run before pct shutdown is issued.

Fixes #14027
This commit is contained in:
CanbiZ (MickLesk)
2026-04-27 13:30:20 +02:00
committed by GitHub
parent c32ca537f1
commit 585de1ba0c
2 changed files with 16 additions and 14 deletions
+5 -5
View File
@@ -405,11 +405,6 @@ for container in $CHOICE; do
esac esac
exit_code=$? exit_code=$?
if [ "$template" == "false" ] && [ "$status" == "status: stopped" ]; then
echo -e "${BL}[Info]${GN} Shutting down${BL} $container ${CL} \n"
pct shutdown $container &
fi
#5) if build resources are different than run resources, then: #5) if build resources are different than run resources, then:
if [ "$UPDATE_BUILD_RESOURCES" -eq "1" ]; then if [ "$UPDATE_BUILD_RESOURCES" -eq "1" ]; then
pct set "$container" --cores "$run_cpu" --memory "$run_ram" pct set "$container" --cores "$run_cpu" --memory "$run_ram"
@@ -421,6 +416,11 @@ for container in $CHOICE; do
containers_needing_reboot+=("$container ($container_hostname)") containers_needing_reboot+=("$container ($container_hostname)")
fi fi
if [ "$template" == "false" ] && [ "$status" == "status: stopped" ]; then
echo -e "${BL}[Info]${GN} Shutting down${BL} $container ${CL} \n"
pct shutdown $container &>/dev/null &
fi
if [ $exit_code -eq 0 ]; then if [ $exit_code -eq 0 ]; then
msg_ok "Updated container $container" msg_ok "Updated container $container"
elif [ $exit_code -eq 75 ]; then elif [ $exit_code -eq 75 ]; then
+11 -9
View File
@@ -110,15 +110,17 @@ for container in $(pct list | awk '{if(NR>1) print $1}'); do
elif [ "$status" == "status: running" ]; then elif [ "$status" == "status: running" ]; then
update_container $container update_container $container
fi fi
if pct exec "$container" -- [ -e "/var/run/reboot-required" ]; then if [ "$status" == "status: running" ]; then
# Get the container's hostname and add it to the list if pct exec "$container" -- [ -e "/var/run/reboot-required" ]; then
container_hostname=$(pct exec "$container" hostname) # Get the container's hostname and add it to the list
containers_needing_reboot+=("$container ($container_hostname)") container_hostname=$(pct exec "$container" hostname)
fi containers_needing_reboot+=("$container ($container_hostname)")
# check if patchmon agent is present in container and run a report if found fi
if pct exec "$container" -- [ -e "/usr/local/bin/patchmon-agent" ]; then # check if patchmon agent is present in container and run a report if found
echo -e "${BL}[Info]${GN} patchmon-agent found in ${BL} $container ${CL}, triggering report. \n" if pct exec "$container" -- [ -e "/usr/local/bin/patchmon-agent" ]; then
pct exec "$container" -- "/usr/local/bin/patchmon-agent" "report" echo -e "${BL}[Info]${GN} patchmon-agent found in ${BL} $container ${CL}, triggering report. \n"
pct exec "$container" -- "/usr/local/bin/patchmon-agent" "report"
fi
fi fi
fi fi
done done