
Ich verwende Arch Linux und versuche, einen Cron-Job zu erstellen, der jede Minute ausgeführt wird. Ich verwende also:
$ crontab -e
Und fügen Sie das Skript ein in:
* * * * * Rscript /srv/shiny-system/cron/CPU.R
~
~
"/tmp/crontab.8VZ7vq" 1 line, 47 characters
(Ich habe keine Ahnung, was dieses „/tmp/crontab.8VZ7vq“ ist!)
Aber es funktioniert nicht – CPU.R läuft nicht jede Minute. Was muss ich dann in Arch Linux tun, um den Cron-Job auszuführen? Ich habe mir die folgenden Wiki-Anleitungen angesehen, bin aber immer noch ratlos:
Bearbeiten
Ich fand einige Hinweise vonHierhinsichtlich crond
.
[xxx@localhost ~]$ systemctl status crond
● crond.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
[xxx@localhost ~]$ sudo systemctl start crond
[sudo] password for xxx:
Failed to start crond.service: Unit crond.service failed to load: No such file or directory.
Was bedeutet das?Wosollte ich diesen crond.service setzen undWasSkript soll ich da einfügen?
Antwort1
Es gibt keincrond.serviceunter Arch Linux. Wie das Arch Wiki vollkommen klar macht:
Es gibt viele Cron-Implementierungen, aber keine davon ist standardmäßig installiert, da das Basissystem stattdessen systemd/Timers verwendet.
Wenn Sie also cron verwenden möchten, müssen Siewählenwelche der vielen Implementierungen Sie installieren möchten, und starten Sie dann diesen bestimmten Dienst.
Sie tippen nicht einfach irgendetwas ein systemctl enable nonexistent.service
und wundern sich dann, warum es nicht läuft …
Wenn du Cronie möchtest, dann installiere Cronie und starte es mit:
pacman -Syu cronie
systemctl enable --now cronie.service
Die Arch-Dokumentation ist im Allgemeinen sehr klar. Wenn Sie die Seiten, auf die Sie verlinkt haben, genauer lesen, sollten Sie herausfinden, was Sie brauchen.
Antwort2
Wenn ich Sie richtig verstehe, meinen Sie mit ...
So führen Sie einen Cron-Job aus
...geplante Ereignisse unter Arch Linux. Das ist ziemlich einfach, wenn man systemd/Timers als Cron-Ersatz verwendet.
Obwohl Cron wohl der bekannteste Job-Scheduler ist, können Systemd-Timer eine Alternative sein.
Vorteile
Die Hauptvorteile der Verwendung von Timern ergeben sich daraus, dass jeder Job seinen eigenen systemd-Dienst hat. Einige dieser Vorteile sind:
- Jobs können problemlos unabhängig von ihren Timern gestartet werden. Dies vereinfacht das Debuggen.
- Jeder Job kann so konfiguriert werden, dass er in einer bestimmten Umgebung ausgeführt wird (siehe systemd.exec(5)).
- Jobs können an Kontrollgruppen angehängt werden.
- Jobs können so eingerichtet werden, dass sie von anderen Systemd-Einheiten abhängig sind.
- Zur einfachen Fehlerbehebung werden Jobs im Systemd-Journal protokolliert.
...wie erwähntHier
Wenn Sie cron verwenden müssen, ist dies immer noch möglich und beschriebenHier.
Um diese Antwort nützlich zu machen, ein minimales Beispiel für einetäglicher automatischer geplanter Neustartum 01:30.
1. Erstellen Sie zwei Dateien, eine Servicedatei und eine Timerdatei.Beide Namen (.timer und .service) müssen übereinstimmen. Beispiel:
sudo vim /usr/lib/systemd/system/scheduledReboot.service
sudo vim /usr/lib/systemd/system/scheduledReboot.timer
(Der Ordner /usr/lib/systemd/system/... ist der Standardordner, der alle .service-Dateien enthält, nur zu Ihrer Information)
2.1 Die Datei scheduledReboot.service enthält:
[Unit]
Description=Scheduled Reboot
[Service]
Type=simple
ExecStart=/usr/bin/systemctl --force reboot
2.2 Die Datei scheduledReboot.timer enthält:
[Unit]
Description=Reboot Scheduling.
[Timer]
OnCalendar=*-*-* 01:30:00
[Install]
WantedBy=multi-user.target
- Und zum Schluss die Jobs starten:
sudo systemctl start scheduledReboot.timer
sudo systemctl enable scheduledReboot.timer
- Überprüfen Sie, ob der Job erfolgreich erstellt wurde:
sudo systemctl list-timers --all
und/oder
sudo systemctl status scheduledReboot.timer
..das Dinge zeigt wie:
Trigger: Sun 2020-05-31 01:30:00 EDT; 10h left
Mir persönlich gefällt der systemd/.service-Ansatz sehr gut, da ich alle meine Systemjobs mit systemctl verwende, wie das automatische Mounten meiner NFS-Laufwerke usw., und es wirklich gut und effizient funktioniert.
Antwort3
t
Erstellen Sie eine Datei mit Ihrer Crone-Aufgabe usw. cron.txt
cat cron.txt 0 1 * * * systemctl stop iradio; shutdown -P 0 30 23 * * * systemctl stop clock 34 23 * * * systemctl start clock
dann crontab die neue Datei
crontab cron.txt
Jetzt scheint es zu funktionieren.