Αυτοματισμός Ύπνου & Αφύπνισης (Linux Mint)¶
Αυτός ο οδηγός περιγράφει τη διαδικασία δημιουργίας μιας υπηρεσίας systemd που θέτει τον υπολογιστή σε αναστολή (suspend) καθημερινά στις 23:00 και τον ξυπνάει αυτόματα στις 07:00 το επόμενο πρωί, χρησιμοποιώντας το εργαλείο rtcwake.
- Το Bash Script Διαδρομή: ~/bin/night_sleep.sh
Αυτό το script υπολογίζει την επόμενη 07:00 π.μ. και εκτελεί την εντολή αναστολής.
- Δημιουργήστε τον φάκελο αν δεν υπάρχει: mkdir -p ~/bin
- Δημιουργήστε το αρχείο: nano ~/bin/night_sleep.sh
- Επικολλήστε τον κώδικα:
#!/bin/bash
# Υπολογισμός ώρας αφύπνισης (7:00 π.μ. της επόμενης μέρας)
# Το 'tomorrow 07:00' διασφαλίζει σωστή λειτουργία ακόμα και αν τρέξει πριν ή μετά τα μεσάνυχτα.
WAKE_TIME=$(date +%s -d "tomorrow 07:00")
# Καταγραφή στο system log (για debugging μέσω journalctl)
echo "System suspending via autosleep. Wake up scheduled for $(date -d @$WAKE_TIME)" | logger -t autosleep
# Εκτέλεση rtcwake
# -m mem : Suspend to RAM (γρήγορη επαναφορά)
# -t : Χρόνος αφύπνισης (epoch seconds)
/usr/sbin/rtcwake -m mem -t $WAKE_TIME
-
Κάντε το αρχείο εκτελέσιμο:
chmod +x ~/bin/night_sleep.sh -
Το Systemd Service
Διαδρομή: /etc/systemd/system/autosleep.service
Αυτή η μονάδα ορίζει τι θα εκτελεστεί.
- Δημιουργία αρχείου:
sudo nano /etc/systemd/system/autosleep.service - Επικόλληση κώδικα (ΠΡΟΣΟΧΗ: Αντικαταστήστε το USERNAME με το όνομα χρήστη σας):
[Unit]
Description=Automated Sleep and Wake Service (11PM to 7AM)
After=network.target
[Service]
Type=oneshot
# Το rtcwake χρειάζεται root δικαιώματα, τα οποία έχει από default το systemd service
ExecStart=/home/USERNAME/bin/night_sleep.sh
[Install]
WantedBy=multi-user.target
- Το Systemd Timer
Διαδρομή: /etc/systemd/system/autosleep.timer
Αυτή η μονάδα ορίζει πότε θα εκτελεστεί η υπηρεσία.
- Δημιουργία αρχείου:
sudo nano /etc/systemd/system/autosleep.timer - Επικόλληση κώδικα:
[Unit]
Description=Trigger sleep at 11 PM daily
[Timer]
# Μορφή: DayOfWeek Year-Month-Day Hour:Minute:Second
# *-*-* σημαίνει κάθε μέρα, κάθε μήνα, κάθε έτος.
OnCalendar=*-*-* 23:00:00
Persistent=true
Unit=autosleep.service
[Install]
WantedBy=timers.target
- Εγκατάσταση & Ενεργοποίηση
Εκτελέστε τις παρακάτω εντολές στο τερματικό για να ενημερώσετε το σύστημα για τις νέες μονάδες και να ξεκινήσετε τον χρονοδιακόπτη:
# Ενημέρωση του systemd για τα νέα αρχεία
sudo systemctl daemon-reload
# Ενεργοποίηση του timer ώστε να ξεκινά με το boot και εκκίνηση τώρα
sudo systemctl enable --now autosleep.timer
- Έλεγχος & Αντιμετώπιση Προβλημάτων
Επιβεβαίωση Χρονοδιαγράμματος
Δείτε πότε είναι προγραμματισμένη η επόμενη εκτέλεση:
Έλεγχος Ιστορικού (Logs)
Αν ο υπολογιστής δεν κοιμηθεί ή δεν ξυπνήσει σωστά, ελέγξτε τα logs:
Χειροκίνητη Δοκιμή (Άμεση Εκτέλεση)
Για να δοκιμάσετε αν η εντολή ύπνου λειτουργεί τώρα (χωρίς να περιμένετε τις 23:00):