Switch για ακύρωση reboot/shutdown όταν τρέχει προκαθορισμένο process
George Notaras
gnot at g-loaded.eu
Fri Nov 28 15:38:35 EET 2008
Giorgos Keramidas wrote:
> On Fri, 28 Nov 2008 05:07:50 +0200, George Notaras <gnot at g-loaded.eu> wrote:
>> Η αλήθεια είναι ότι με προβληματίζει κι εμένα το γεγονός ότι έχει τον
>> απόλυτο έλεγχο του shutdown ένα endless loop. Επίσης, αν θυμάμαι καλά,
>> για όσο διαρκεί το loop δεν είναι δυνατό το login με κανένα τρόπο.
>
> Αυτό γίνεται επειδή το /sbin/shutdown δημιουργεί 5 λεπτά πριν το
> shutdown (ή αμέσως αν έχεις δώσει ως shutdown time `now') το αρχείο
> `/etc/nologin'.
>
> Μπορείς στο init script που καθυστερεί το shutdown να κάνεις κάτι σαν:
>
> LF="/var/run/shutdown-blocked"
>
> lockfile "${LF}"
> if test $? -ne 0 ; then
> echo "cannot lock ${LF}"
> exit 1
> fi
>
> if test -f /etc/nologin ; then
> nologin=yes
> fi
>
> # do stuff
>
> if test -n "${nologin}" ; then
> touch /etc/nologin
> fi
> rm -f "${LF}"
>
>> Δηλαδή, αν υπάρξει κάποιο πρόβλημα, θα μείνει το μηχάνημα αιώνια
>> ανοιχτό;
>
> Ναι, αλλά βλ. παραπάνω πως μπορείς να το αποφύγεις για όση ώρα το
> shutdown είναι blocked.
>
> Αυτό που θα σε δυσκολέψει _περισσότερο_ είναι ότι όταν φτάσει πλέον ο
> έλεγχος σε ένα init.d script έχουν γίνει κι άλλα πράγματα που ίσως να
> πρέπει να ξεγίνουν πριν μπλοκάρεις το shutdown:
>
> * Το runlevel έχει αλλάξει πλέον.
> * Η init έχει στείλει SIGTERM σε όσα processes μπορεί.
>
> Γενικά, δε νομίζω ότι μπορεί ένα απλό shell script να κάνει αυτό που
> θέλεις. Θα χρειαστεί patching του shutdown για να υποστηρίζει κάποιο
> είδος από startup checks, π.χ.:
>
> Πριν κάνει οτιδήποτε, το /sbin/shutdown τρέχει το script
> `/etc/rc.shutdown'.
>
> Το script τρέχει με παράμετρο μία λέξη από τις:
>
> reboot, halt, suspend, powerfail, powerfailnow, powerok
>
> ανάλογα με το τι προσπαθεί να κάνει το shutdown.
>
> Αν το script αποτύχει με exit code διαφορετικό του μηδενός, το
> shutdown action ακυρώνεται αμέσως και το /sbin/shutdown
> τερματίζει με exit code 75 (EX_TEMPFAIL).
>
> Αυτό έχει ελπίδες να δουλέψει ακόμα κι αν το /sbin/shutdown τρέξει με
> παράμετρο -n και παρακάμψει _εντελώς_ την init.
>
Ευχαριστώ. Πολύ χρήσιμα τα παραπάνω. Πάντως τελικά νομίζω ότι η
καθυστέρηση του shutdown έχει πιο πολύ νόημα για έναν υπολογιστή που
ανοιγοκλείνει συχνά, πχ ένα desktop/laptop, και όχι για ένα
απομακρυσμένο μηχάνημα.
Σχετικά με το rc.shutdown δεν είχα ιδέα.
Ελπίζω μέσα στο Σ/Κ να ξαναασχολήθώ. Υπάρχουν πολλά πράγματα που δεν
είχα λάβει υπόψη. Thanks
More information about the Linux-greek-users
mailing list