Ich verwende den SpiderOak-Client, um meine NAS-Serverdaten in der Cloud zu sichern. Seit Monaten funktioniert das gut. Heute jedoch, nachdem er eine Weile gelaufen war, blieb der Cronjob-Prozess in einem Schlafzustand stecken. Ich brauche Hilfe herauszufinden, warum und wie zu behebenLinux-Bash-Skript im Ruhezustand stecken
Ich verlor vor kurzem das Cronjob-Skript, das gut funktioniert hatte, so dass ich ein neues Bash-Skript schreiben musste. Vielleicht habe ich einen Fehler gemacht. Hier ist sie:
#!/bin/sh
WORKING_FILE=/volume1/Volume_1/spideroak.lock
RESULT_FILE=/volume1/Volume_1/spideroak.log
# Cancel if there is an ongoing backup
if [ -f "$WORKING_FILE" ]
then
echo "Error: $WORKING_FILE already exists; backup is already running."
exit 1;
fi
# Run backup and save results to file with the name that gets checked above
/opt/SpiderOakONE/usr/bin/SpiderOakONE --batchmode --verbose --redirect="$WORKING_FILE"
# Rename log once backup is complete
mv "$WORKING_FILE" "$RESULT_FILE"
# Set log file permissions and exit
chmod 644 "$RESULT_FILE"
echo "Backup complete. Result saved to $RESULT_FILE"
ich vor kurzem auch die Firmware des NAS aktualisiert, weiß aber nicht, ob das eine Rolle, indem sie langfristige Prozesse schlafen spielen konnte. Wenn ich den Backup-Befehl durch etwas ersetze, das nur ein paar Sekunden dauert, funktioniert alles. zB: wenn ich --batchmode --verbose
durch --selection
ersetze und alles andere so lassen wie es ist.
Der NAS ist ein Synology DS-216 + läuft DSM 6.0.2-8451 Update 4
Firmware
Die Existenz einer einfachen Datei als Prozesssperre ist wahrscheinlich eine schlechte Idee. Wenn zu irgendeinem Zeitpunkt Ihr Cron-Job beendet wurde oder der NAS neu gestartet wurde, während er ausgeführt wird, wird die .lock-Datei nicht entfernt und in den permanenten Zustand "bereits ausgeführt" versetzt. Erwägen Sie stattdessen, etwas wie ['flock'] (https://linux.die.net/man/1/flock) zum Sperren zu verwenden. –
Überprüfen Sie nicht das Vorhandensein einer Datei, sondern prüfen Sie, ob der Prozess vorhanden ist. Speichern Sie bei Bedarf die Prozess-ID in einer Datei und überprüfen Sie anhand der gespeicherten Prozess-ID, ob der Prozess vorhanden ist. – alvits