Ubuntu 16 og nyere utfører periodiske oppgaver relatert til apt (som oppdatering av pakkelisten og bruk av uovervåkede oppgraderinger) ved hjelp av en systemd timer. Denne timeren utløses vanligvis ved starten av lansering av en Ubuntu 16 VPS, noe som kan føre til at apt-verktøy ( apt, apt-get) mislykkes med en feil som ligner på følgende:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
Et vanlig brukstilfelle av Vultr-oppstartsskript er å oppdatere systempakkene. Uten å sjekke feilkodene som returneres fra apteller apt-get, kan systemoppdateringer mislykkes. Når låsetilstanden oppstår, aptvil vanligvis returnere koden 100.
Dette eksempelskriptet kan brukes som et Vultr-oppstartsskript for å prøve å installere systemoppdateringer på nytt. Du kan endre den for å passe dine behov.
#!/bin/bash
UPGRADE_ATTEMPT_COUNT=100
UPGRADE_STATE=1
for i in `seq 1 $UPGRADE_ATTEMPT_COUNT`;
do
if [ "$UPGRADE_STATE" -eq "1" ]; then
apt-get -y update
if [ "`echo $?`" -eq "0" ]; then
echo "package list updated."
UPGRADE_STATE=2;
fi
fi
if [ "$UPGRADE_STATE" -eq "2" ]; then
apt-get -y upgrade
if [ "`echo $?`" -eq "0" ]; then
echo "packages updated."
UPGRADE_STATE=3;
fi
fi
if [ "$UPGRADE_STATE" -eq "3" ]; then
break
fi
sleep 5
done
if [ "$UPGRADE_STATE" -ne "3" ]; then
echo "ERROR: packages failed to update after $UPGRADE_ATTEMPT_COUNT attempts."
fi
Mer informasjon om automatiske oppdateringer er tilgjengelig i Ubuntu LTS-dokumentasjonen .