γίνεται να εκτελείτε αυτόματα ένα script όταν το PC μου είναι "σε ηρεμία"

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Dec 8 17:40:59 EET 2005


On 2005-12-08 17:19, "Nick Demou (enLogic)" <ndemou at enlogic.gr> wrote:
> Στον scheduler των windows υπάρχει η επιλογή "τρέξε το τάδε task κάθε
> τόσο αλλά μόνο εφόσον ο Η/Υ δεν χρεισημοποιείται επί ψ λεπτά" το οποίο
> με βόλευε τρομερά στην εκτέλεση ενός σχετικά συχνού backup των δεδομένων
> μου (κάθε 2 ώρες).

Θεωρητικά, αυτό κάνει το priority +20.  Αν ένα process τρέχει με τέτοιο
priority, τότε το σύστημα θα το κάνει schedule μόνο όταν δεν υπάρχει
κάποιο άλλο runnable process σε αναμονή.  Και το process priority
*ΕΙΝΑΙ* κάτι που κληροδοτείται από τις γονικές διεργασίες σε όλα τα
παιδιά τους.

Οπότε, μπορείς να δοκιμάσεις κάτι σαν αυτό...

    #!/bin/sh

    while true ; do
        archive="important-`date '+%Y.%m.%d.%H'`.tar.bz2"
        tmpfile="#${archive}#"
        cd /home/nikos
        find important/ | cpio -o -H ustar | bzip2 -9c -> "/backup/${tmpfile}#"
        if test $? -ne 0 ; then
            rm -f "/backup/${tmpfile}"
        else
            mv "/backup/${tmpfile}" "/backup/${archive}"
        fi
    done

Αν το ξεκινήσεις με:

    $ nice -n +20 sh ./backup.sh

δε θα πρέπει να πειράζει το interactivity του συστήματος, ακόμη κι αν
τρέχεις σχετικά 'βαριές' εφαρμογές.  Βλ. παρακάτω όμως, γιατί αυτό δεν
είναι καλή ιδέα...

> Τώρα στο linux έφτιαξα και πάλι ένα script που κάνει backup όλη μου τη
> δουλειά. Ομολογουμένως αυτή η δουλειά ήταν πολύ πιο ευκολη από ότι στα
> windows (όπου είχα αναγκαστεί να γράψω σε visual basic ένα enhanced
> xcopy). Δυστηχώς όμως δεν μπορώ να βρω έναν τρόπο να ξεκινώ το backup
> αυτόματα όταν δεν δουλευω στον Η/Υ, ούτε (optionaly) να σταματά αυτόματα
> όταν αρχίζω να δουλεύω.
>
> Το ιδανικό θα ήταν κάτι σαν:
> "ΑΝ Ο ΔΙΣΚΟΣ ΕΧΕΙ UTILISATION<x ΕΠΙ y ΛΕΠΤΑ -ΚΑΙ- Η CPU ΕΧΕΙ
> UTILISATION<z ΕΠΙ q ΛΕΠΤΑ ΚΑΙ ΕΧΟΥΝ ΠΕΡΑΣΕΙ ΠΑΝΩ ΑΠΟ p ΛΕΠΤΑ ΑΠΟ ΤΗΝ
> ΤΕΛΕΥΤΑΙΑ ΕΚΙΝΗΣΗ ΤΟΥ SCRIPT ΤΡΕΞ'ΤΟ"
> --και--
> "ΑΝ ΚΟΥΝΗΣΩ ΤΟ MOUSE Η ΑΚΟΥΜΠΗΣΩ ΤΟ ΠΛΗΚΤΡΟΛΟΓΙΟ ΣΤΑΜΑΤΑ ΤΟ SCRIPT"
>
> αλλά συμβιβάζομε και με απλά πράγματα σαν το κόλπο του windows scheduler

Το ιδανικό για σένα θα ήταν κάτι τέτοιο (αντιγράφω από το devd.conf εδώ πέρα):

    # Examples of notify hooks.  A notify is a generic way for a kernel
    # subsystem to send event notification to userland.
    #
    # Here are some examples of ACPI notify handlers.  ACPI subsystems that
    # generate notifies include the AC adapter, power/sleep buttons,
    # control method batteries, lid switch, and thermal zones.
    #
    # Information returned is not always the same as the ACPI notify
    # events.  See the ACPI specification for more information about
    # notifies.  Here is the information returned for each subsystem:
    #
    # ACAD:         AC line state (0 is offline, 1 is online)
    # Button:       Button pressed (0 for power, 1 for sleep)
    # CMBAT:        ACPI battery events
    # Lid:          Lid state (0 is closed, 1 is open)
    # Thermal:      ACPI thermal zone events
    #
    # This example calls a script when the AC state changes, passing the
    # notify value as the first argument.  If the state is 0x00, it might
    # call some sysctls to implement economy mode.  If 0x01, it might set
    # the mode to performance.

Αλλά όλη αυτή η φασαρία θα μπορούσε να αποφευχθεί σχετικά όμορφα με ένα
καλό σύστημα RAID ;-)

Δεν αξίζει να γράφεις scripts, κι ύστερα περισσότερα scripts, και μετά
να αναρωτιέσαι πώς θα κάνεις την τρελή χακιά με το scheduler για να
τρέξει το script μόνο όταν δεν είναι logged in κανείς, το cpu
utilization είναι κάτω από 80% για πάνω από 120 δευτερόλεπτα, κλπ. κλπ.

Όλα αυτά για να αισθάνεσαι απλά ``ασφαλής'' ότι υπάρχει backup; Λίγο
άκυρο δεν είναι; :)





More information about the Linux-greek-users mailing list