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