GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden Sie Anacron für eine bessere Crontab

Im Jahr 2021 gibt es mehr Gründe, warum Menschen Linux lieben als je zuvor. In dieser Serie werde ich 21 verschiedene Gründe für die Verwendung von Linux nennen. Automatisierung ist einer der besten Gründe, Linux zu verwenden.

Eines meiner Lieblingsdinge an Linux ist seine Bereitschaft, für mich zu arbeiten. Anstatt sich wiederholende Aufgaben auszuführen, die meine Zeit in Anspruch nehmen, fehleranfällig sind oder die ich wahrscheinlich vergesse, lasse ich sie von Linux für mich erledigen.

Vorbereitung für die Automatisierung

Der Begriff „Automatisierung“ kann ebenso einschüchternd wie ansprechend sein. Ich finde es hilfreich, es modular anzugehen.

1. Was möchten Sie erreichen?

Überlegen Sie sich zunächst, welches Ergebnis Sie erzielen möchten. Versehen Sie Bilder mit Wasserzeichen? Dateien aus einem überfüllten Verzeichnis entfernen? Führen Sie eine Sicherung wichtiger Daten durch? Definieren Sie die Aufgabe für sich klar, damit Sie wissen, was Sie anstreben. Wenn es eine Aufgabe gibt, die Sie jeden Tag erledigen, viel weniger mehr als einmal am Tag, dann könnte sie ein Kandidat für die Automatisierung sein.

2. Lernen Sie die Anwendungen kennen, die Sie benötigen

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Teilen Sie große Aufgaben in kleine Komponenten auf und lernen Sie, wie Sie jedes Ergebnis manuell, aber auf wiederholbare und vorhersehbare Weise erzielen. Vieles, was unter Linux möglich ist, kann per Skript ausgeführt werden, aber es ist wichtig, Ihre aktuellen Einschränkungen zu kennen. Es ist ein himmelweiter Unterschied, ob Sie lernen, wie Sie die Größenänderung mehrerer Bilder automatisieren, damit sie bequem per E-Mail versendet werden können, oder maschinelles Lernen verwenden, um aufwändige Grafiken für Ihren wöchentlichen Newsletter zu erstellen. Eines dieser Dinge kann man an einem Nachmittag lernen und das andere kann Jahre dauern. Allerdings müssen wir alle irgendwo anfangen, also fang einfach klein an und halte immer Ausschau nach Verbesserungsmöglichkeiten.

3. Automatisieren

Verwenden Sie ein Automatisierungstool unter Linux, um dies regelmäßig zu ermöglichen. Dies ist der Schritt, den dieser Artikel behandelt!

Um etwas zu automatisieren, benötigen Sie ein Skript, das eine Aufgabe automatisiert. Beim Testen ist es am besten, die Dinge einfach zu halten, daher ist die Aufgabe, die dieser Artikel automatisiert, die Erstellung einer Datei namens hello im /tmp Verzeichnis:

#!/bin/sh

touch /tmp/hello

Kopieren Sie dieses einfache Skript, fügen Sie es in eine Textdatei ein und nennen Sie es example .

Cron

Die integrierte Automatisierungslösung, mit der jede Linux-Installation geliefert wird, ist das Cron-System. Linux-Benutzer bezeichnen Cron allgemein als die Methode, mit der Sie eine Aufgabe planen (normalerweise als "Cron-Job" bezeichnet), aber es gibt mehrere Anwendungen, die die Funktionalität von Cron bereitstellen. Am vielseitigsten ist Cronie; sein Vorteil ist, dass dies nicht der Fall ist Gehen Sie davon aus, dass Ihr Computer immer eingeschaltet ist, wie es frühere Cron-Anwendungen tun, die für Systemadministratoren entwickelt wurden.

Überprüfen Sie, welches Cron-System Ihre Linux-Distribution bereitstellt. Wenn es etwas anderes als Cronie ist, können Sie Cronie wahrscheinlich aus dem Software-Repository Ihrer Distribution installieren. Wenn Ihre Distribution kein Paket für Cronie hat, können Sie das alte anacron verwenden Paket statt. Das anacron Der Befehl ist in Cronie enthalten, also sollten Sie unabhängig davon, wie Sie ihn erwerben, sicherstellen, dass Sie das anacron haben Befehl, der auf Ihrem System verfügbar ist, bevor Sie fortfahren. Abhängig von Ihrer Konfiguration benötigt Anacron möglicherweise Administrator-Root-Rechte.

$ which anacron
/usr/sbin/anacron

Die Aufgabe von Anacron besteht darin, sicherzustellen, dass Ihre Automatisierungsaufträge regelmäßig ausgeführt werden. Dazu prüft anacron, wann das letzte Mal ein Job ausgeführt wurde, und überprüft dann, wie oft Sie ihm gesagt haben, dass er Jobs ausführen soll.

Angenommen, Sie stellen anacron so ein, dass es alle fünf Tage ein Skript ausführt. Jedes Mal, wenn Sie Ihren Computer einschalten oder aus dem Ruhezustand aufwecken, scannt anacron seine Protokolle, um festzustellen, ob der Job ausgeführt werden muss. Wenn ein Job vor fünf oder mehr Tagen ausgeführt wurde, führt Anacron den Job aus.

Cron-Jobs

Viele Linux-Systeme werden mit einigen Wartungsaufgaben geliefert, die Cron ausführen muss. Ich halte meine Jobs gerne von den Systemjobs getrennt, also erstelle ich ein Verzeichnis in meinem Home-Verzeichnis. Insbesondere gibt es einen versteckten Ordner namens ~/.local ("lokal" in dem Sinne, dass es eher an Ihr Benutzerkonto als an Ihr "globales" Computersystem angepasst ist), also erstelle ich das Unterverzeichnis etc/cron.daily um das übliche Zuhause von cron auf meinem System zu spiegeln. Sie müssen auch ein Spool-Verzeichnis erstellen, um zu verfolgen, wann Jobs zuletzt ausgeführt wurden.

$ mkdir -p ~/.local/etc/cron.daily ~/.var/spool/anacron

Sie können jedes Skript, das Sie regelmäßig ausführen möchten, in ~/.local/etc/cron.daily platzieren Verzeichnis. Kopieren Sie das example Skript jetzt in das Verzeichnis kopieren und mit dem Befehl chmod als ausführbar markieren.

$ cp example ~/.local/etc/cron.daily
$ chmod +x ~/.local/etc/cron.daily/example

Als nächstes richten Sie anacron so ein, dass alle Skripte ausgeführt werden, die sich in ~/.local/etc/cron.daily befinden Verzeichnis.

Anacron

Standardmäßig wird ein Großteil des Cron-Systems als Domäne des Systemadministrators angesehen, da es häufig für wichtige Aufgaben auf niedriger Ebene verwendet wird, wie das Rotieren von Protokolldateien und das Aktualisieren von Zertifikaten. Die in diesem Artikel gezeigte Konfiguration ist für einen normalen Benutzer gedacht, der persönliche Automatisierungsaufgaben einrichtet.

Um Anacron für die Ausführung Ihrer Cron-Jobs zu konfigurieren, erstellen Sie eine Konfigurationsdatei unter /.local/etc/anacrontab :

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1  0  cron.mine    run-parts /home/tux/.local/etc/cron.daily/

Diese Datei weist anacron an, alle ausführbaren Skripte auszuführen (run-parts ) gefunden in ~/.local/etc/cron.daily jeden Tag (d. h. täglich) mit einer Verzögerung von null Minuten. Manchmal wird eine Verzögerung von einigen Minuten verwendet, damit Ihr Computer nicht gleich nach dem Einloggen mit allen möglichen Aufgaben belastet wird. Diese Einstellungen sind jedoch zum Testen geeignet.

Die cron.mine value ist ein willkürlicher Name für den Prozess. Ich nenne es cron.mine aber Sie könnten es cron.personal nennen oder penguin oder alles, was Sie wollen.

Überprüfen Sie Ihr anacrontab Syntax der Datei:

$ anacron -T -t ~/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron

Schweigen bedeutet Erfolg.

Anacron zu .profile hinzufügen

Schließlich müssen Sie sicherstellen, dass anacron mit Ihrer lokalen Konfiguration läuft. Da Sie Anacron als normaler Benutzer und nicht als Root-Benutzer ausführen, müssen Sie es zu Ihren lokalen Konfigurationen leiten – der anacrontab Datei, die Anacron mitteilt, was zu tun ist, und das Spool-Verzeichnis, das Anacron dabei hilft, zu verfolgen, wie viele Tage seit der letzten Ausführung jedes Jobs vergangen sind:

anacron -fn -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron

Das -fn Optionen weisen Anacron an, ignorieren zu werden Zeitstempel, was bedeutet, dass Sie es zwingen, Ihren Cron-Job auszuführen, egal was passiert. Dies dient ausschließlich zu Testzwecken.

Ihren Cronjob testen

Nachdem alles eingerichtet ist, können Sie den Job testen. Sie können dies technisch ohne Neustart testen, aber es ist am sinnvollsten, neu zu starten, da dies dafür ausgelegt ist:unterbrochene und unregelmäßige Anmeldesitzungen. Nehmen Sie sich einen Moment Zeit, um Ihren Computer neu zu starten, melden Sie sich an und suchen Sie dann nach der Testdatei:

$ ls /tmp/hello
/tmp/hello

Angenommen, die Datei existiert, wurde Ihr Beispielskript erfolgreich ausgeführt. Sie können jetzt die Testoptionen aus ~/.profile entfernen , wobei Sie dies als endgültige Konfiguration belassen:

anacron -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron

Anacron verwenden

Sie haben Ihre persönliche Automatisierungsinfrastruktur konfiguriert, sodass Sie jedes Skript, das Ihr Computer für Sie verwalten soll, in ~/.local/etc/cron.daily platzieren können Verzeichnis und es wird wie geplant ausgeführt.

Es liegt an Ihnen, wie oft Jobs ausgeführt werden sollen. Ihr Beispielskript wird einmal täglich ausgeführt. Das hängt natürlich davon ab, ob Ihr Computer an einem bestimmten Tag eingeschaltet und wach ist. Wenn Sie Ihren Computer am Freitag verwenden, ihn aber für das Wochenende beiseite legen, wird das Skript am Samstag und Sonntag nicht ausgeführt. Am Montag wird das Skript jedoch ausgeführt, da Anacron weiß, dass mindestens ein Tag vergangen ist. Sie können wöchentliche, vierzehntägige oder sogar monatliche Verzeichnisse zu ~/.local/etc hinzufügen um eine Vielzahl von Intervallen zu planen.

So fügen Sie ein neues Intervall hinzu:

  1. Fügen Sie ein Verzeichnis zu ~/.local/etc hinzu (zum Beispiel cron.weekly ).
  2. Fügen Sie eine Zeile zu ~/.local/etc/anacrontab hinzu um Skripte im neuen Verzeichnis auszuführen. Für ein wöchentliches Intervall wäre die Konfiguration:
    7 0 cron.mine run-parts /home/tux/.local/etc/cron.weekly/

    (mit der 0 Wert optional eine Anzahl von Minuten, um den Start des Skripts höflich zu verzögern).

  3. Platzieren Sie Ihre Skripte in der cron.weekly Verzeichnis.

Willkommen im automatisierten Lebensstil. Es wird sich nicht so anfühlen, aber Sie werden viel produktiver.


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. So verwenden Sie Cron unter Linux

  3. So verwenden Sie erweitertes rsync für große Linux-Backups

  4. So verwenden Sie systemd-nspawn für die Linux-Systemwiederherstellung

  5. Verwenden Sie Find and Locate, um unter Linux nach Dateien zu suchen

Manjaro vs. Ubuntu – was ist besser für dich?

CloudBerry Ein benutzerfreundliches Cloud-Backup-Tool für Linux

50 erstaunliche Linux Crontab-Befehle für die SysAdmins

15 Gründe für die Verwendung von Manjaro Linux | Benutzerfreundliches Arch Linux für Jedermann

6 Linux-Distributionen für Bildungszwecke

MX Linux 17 Eine benutzerfreundliche Linux-Distribution für Noobs