--Umgebung - Debian GNU/Linux 10 (buster) - apt 1.8.2 (amd64)
Ich möchte regelmäßig ein Git-Repository wie Redmine abrufen, ich habe zum ersten Mal versucht, eine Aufgabe bei cron zu registrieren
--Referenz
#Aktualisieren Sie die Repository-Liste
$ apt update
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
...Kürzung...
48 packages can be upgraded. Run 'apt list --upgradable' to see them.
N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.0' to '10.3'
#Suche nach cron
$ apt list cron
Listing... Done
cron/stable 3.0pl1-134+deb10u1 amd64
#Cron installieren
$ apt install -y cron
Reading package lists... Done
Building dependency tree
...Kürzung...
Processing triggers for mime-support (3.62) ...
#Überprüfen Sie das Verzeichnis auf cron
$ ls -la /etc/ | grep cron
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.d #Verzeichnis zum Ablegen anderer automatischer Aufgabeneinstellungsdateien als der folgenden
drwxr-xr-x 1 root root 44 Apr 7 04:59 cron.daily #Verzeichnis zum Ablegen der Datei für die automatische Aufgabeneinstellung, die jeden Tag ausgeführt wird
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.hourly #Verzeichnis zum Ablegen der automatischen Aufgabeneinstellungsdatei, die stündlich ausgeführt wird
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.monthly #Verzeichnis zum Ablegen der Datei für die automatische Aufgabeneinstellung, die jeden Monat ausgeführt wird
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.weekly #Verzeichnis zum Ablegen der automatischen Aufgabeneinstellungsdatei, die jede Woche ausgeführt wird
-rw-r--r-- 1 root root 1042 Oct 11 07:58 crontab #Stündliche, tägliche, monatliche, wöchentliche Hauptkonfigurationsdatei für automatische Aufgaben
#Überprüfen Sie den Startstatus von cron
$ /etc/init.d/cron status
[FAIL] cron is not running ... failed!
#Da ich gerade cron installiert habe, werden keine Aufgaben registriert
$ crontab -l
no crontab for root
#Starten Sie cron
$ /etc/init.d/cron start
[ ok ] Starting periodic command scheduler: cron.
#Überprüfen Sie den Startstatus von cron
$ /etc/init.d/cron status
[ ok ] cron is running.
# cron.Git in d Verzeichnis-Erstellen Sie eine Konfigurationsdatei mit dem Namen cron und registrieren Sie die Aufgabe
$ vi /etc/cron.d/git-cron
#Es scheint, dass die Einstellungsdatei am Ende eine leere Zeile benötigt
$ cat /etc/cron.d/git-cron
*/5 * * * * root /path/to/git-fetch.sh >> /var/log/cron.log 2>&1
#Geben Sie der Einstellungsdatei die Ausführungsberechtigung
$ chmod 755 /etc/cron.d/git-cron
$ ls -la /etc/cron.d/git-cron
-rwxr-xr-x 1 root root 51 Apr 7 05:46 git-cron
#Erstellen Sie eine Shell zum Ausführen
$ vi /path/to/git-fetch.sh
# (Nicht das Hauptthema)Der Inhalt besteht darin, Git of Redmine zu aktualisieren
$ cat /path/to/git-fetch.sh
#!/bin/sh
cd /path/to/hoge.git/
git fetch origin 'refs/heads/*:refs/heads/*'
cd /path/to/redmine
bundle exec rake redmine:fetch_changesets RAILS_ENV=production
#Geben Sie der Shell die Ausführungsberechtigung zum Ausführen
$ chmod 755 /path/to/git-fetch.sh
$ ls -la /path/to/git-fetch.sh
-rwxr-xr-x 1 root root 185 Apr 7 05:57 /path/to/git-fetch.sh
/bin/sh: 1: /path/to/git-fetch.sh: Permission denied --Event: Im Protokoll ist ein Fehler aufgetreten, der in der Einstellungsdatei ausgegeben werden sollte.
$ ls -la /path/to/git-fetch.sh
-rw-r--r-- 1 root root 185 Apr 7 05:57 git-fetch.sh
$ chmod 755 /path/to/git-fetch.sh
$ ls -la /path/to/git-fetch.sh
-rwxr-xr-x 1 root root 185 Apr 7 05:57 /path/to/git-fetch.sh
Ich wollte "alle 5 Minuten ausführen", aber es war "alle 5 Minuten ausführen" ...
Referenz: So stellen Sie cron --Qiita ein
Minuten, Stunden, Tage, Montag{Ausführungsbefehl}
#Laufen Sie jede Stunde mit 5 Minuten
5 * * * * root {Ausführungsbefehl}
#Alle 5 Minuten ausführen
*/5 * * * * root {Ausführungsbefehl}