--Environnement - Debian GNU/Linux 10 (buster) - apt 1.8.2 (amd64)
Je veux récupérer régulièrement le référentiel Git comme Redmine, j'ai essayé d'enregistrer une tâche avec cron pour la première fois
--Référence
#Mettre à jour la liste des référentiels
$ apt update
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
...réduction...
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'
#Rechercher cron
$ apt list cron
Listing... Done
cron/stable 3.0pl1-134+deb10u1 amd64
#Installer cron
$ apt install -y cron
Reading package lists... Done
Building dependency tree
...réduction...
Processing triggers for mime-support (3.62) ...
#Vérifiez le répertoire pour cron
$ ls -la /etc/ | grep cron
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.d #Répertoire pour placer les fichiers de paramètres de tâches automatiques autres que les suivants
drwxr-xr-x 1 root root 44 Apr 7 04:59 cron.daily #Répertoire pour placer le fichier de configuration automatique des tâches qui est exécuté chaque jour
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.hourly #Répertoire pour placer le fichier de paramètres de tâche automatique qui s'exécute toutes les heures
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.monthly #Répertoire pour placer les fichiers de configuration de tâches automatiques exécutés chaque mois
drwxr-xr-x 2 root root 26 Apr 7 04:59 cron.weekly #Répertoire pour placer le fichier de paramètres de tâche automatique hebdomadaire
-rw-r--r-- 1 root root 1042 Oct 11 07:58 crontab #Fichier de configuration principal des tâches automatiques horaires, quotidiennes, mensuelles, hebdomadaires
#Vérifiez l'état de démarrage de cron
$ /etc/init.d/cron status
[FAIL] cron is not running ... failed!
#Depuis que je viens d'installer cron, aucune tâche n'est enregistrée
$ crontab -l
no crontab for root
#Démarrer cron
$ /etc/init.d/cron start
[ ok ] Starting periodic command scheduler: cron.
#Vérifiez l'état de démarrage de cron
$ /etc/init.d/cron status
[ ok ] cron is running.
# cron.git dans le répertoire d-Créez un fichier de configuration appelé cron et enregistrez la tâche
$ vi /etc/cron.d/git-cron
#Il semble que le fichier de paramètres nécessite une ligne vide à la fin
$ cat /etc/cron.d/git-cron
*/5 * * * * root /path/to/git-fetch.sh >> /var/log/cron.log 2>&1
#Donner l'autorisation d'exécution au fichier de paramètres
$ 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
#Créer un shell à exécuter
$ vi /path/to/git-fetch.sh
# (Pas le sujet principal)Le contenu est de mettre à jour Git de Redmine
$ 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
#Donner l'autorisation d'exécution au shell pour qu'il s'exécute
$ 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: une erreur s'est produite dans le journal qui était censée être sortie dans le fichier de paramètres. --Cause: le shell à exécuter n'a pas l'autorisation d'exécution. --Action: donnez au shell l'autorisation d'exécution
$ 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
Je voulais "exécuter toutes les 5 minutes", mais c'était "exécuter toutes les 5 minutes" ...
Référence: Comment définir cron --Qiita
Minutes, heures, jours, lundis{Commande d'exécution}
#Courir à 5 minutes toutes les heures
5 * * * * root {Commande d'exécution}
#Courir toutes les 5 minutes
*/5 * * * * root {Commande d'exécution}