Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Aber nur, weil Solus es nicht per Default mit liefert.
Cronie from Scratch
Sourcen holen:
git clone https://github.com/cronie-crond/cronie
Was hab ich gemacht:
./autogen.sh ./configure make sudo make install
bauen ging fehlerfrei durch, so liebt man es!
Crond wird per Default nach /usr/local/bin/
installiert, es sei den man gibt bei configure an wo es liegen soll.
Jetzt lässt sich crond einfach starten, erst mal mit '--help', um die Parameter zu verstehen.
/usr/local/bin/crond --help
Dann im Vordergrund starten, mal sehen, was geht.
/usr/local/bin/crond -n -x ext,sch,proc,pars,load,misc,test,bit
Start schlägt noch fehl, weil wohl das Environment fehlt.
sudo touch /etc/sysconfig/crond
Es kommt jede Menge Output und das so einiges fehlt. Leider habe ich keine einfache Anleitung gefunden, die beim Fehlen von Einstellungen alles einfach mal installiert.
Also hier mal Hardcore, was ich gemacht habe, damit crontabs endlich fehlerfrei laufen:
In der /etc/passwd
den User "cron" eintragen, falls noch nicht vorhanden.
cron:x:16:16:A user for sys-process/cronbase:/usr/local/var/spool/cron:/sbin/nologin
Gibt auch ein useradd
dazu, ist mir nur gerade entfallen Trage ich mal nach...
In der /etc/group
zwei neue Gruppen eintragen:
cron:x:16: crontab:x:1003:
Bei der 1003 eine Nummer eintragen, die frei ist, oder das Tool verwenden, weiß gerade selbst nicht, welches das ist.
Noch ein paar Dateien kopieren, anlegen
/usr/local/etc/cron.allow # enthält die Usernamen, die crontab starten dürfen /usr/local/etc/cron.d/0hourly # beide aus dem contrib Verzeichnis kopieren dailyjobs
Und ein paar Verzeichnisse anlegen (als root) und wo es dran steht mit Rechten versehen.
/usr/local/etc/cron.daily/ # Anlegen cron.hourly/ cron.monthly/ cron.weekly/ /usr/local/var/run/ /usr/local/var/spool/anacron/ /usr/local/var/spool/cron/crontabs/ # chgrp crontab .. -R /usr/local/var/spool/cron/lastrun/
Jetzt sollte per crontab -l
angezeigt werden, das man für crontabs bereit ist. Auch als nicht root! Wenn man in der cron.allow namentlich erwähnt wird.
Eine crontab bearbeiten geht mit crontab -e
dann wird ein Editor geöffnet und man kann ein Programm regelmäßig starten lassen.
*/1 * * * * echo "Heute ist $(date)" >hallo.txt
Das erstellt mir jede Minute eine Datei "hallo.txt" in meinem Home-Verzeichnis mit dem aktuellen Datum. Ist sinnfrei und nur ein Test.
Und das alles nur, weil Solus keine Crontabs mehr bietet, man hätte ja Systemd-Timer, vergäßt es. Systemd ist und bleibt schlecht!
Da wir aber systemd haben, sollte crond als Service gestartet werden. Also folgenden Inhalt in die Datei /etc/systemd/system/crond.service kopieren
[Unit] Description=Command Scheduler After=auditd.service systemd-user-sessions.service time-sync.target [Service] EnvironmentFile=/etc/sysconfig/crond ExecStart=/usr/local/sbin/crond -n $CRONDARGS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=30s [Install] WantedBy=multi-user.target
Starten: systemctl start crond
und dann noch "enablen", damit crond auch nach einem Reboot noch läuft: systemctl enable crond