#1 Le 04/12/2018, à 13:06
- ethan7888
Script bash qui fonctionne manuellement mais pas en cron
Bonjour à tous,
Je souhaiterais mettre en place un script qui backup les stacks rancher (rancher est un orchestrateur, cela permet de déployer du docker). Pour le moment, j'essaie de backuper juste la stack database. De plus, le script fonctionne manuellement, mais pas via le cron.
J'ai donc rajouté des lignes "echo" afin d'avoir une idée d'ou pourrait provenir le problème
Je pense (mais je ne suis pas sur) que cela pourrait venir de ma ligne $stacks que la commande "echo" n'affiche pas ^^
Auriez-vous une idée ?
Voici le script avec les commandes "echo":
#!/bin/bash
set -ex
TODAY=$(date +"%Y-%m-%d")
echo "valeur de TODAY est: $TODAY" > /home/backup/test.log
BACKUP_DIR=/mnt/lacinetek-backup/backup/$TODAY
echo "valeur de BACKUP_DIR est: $BACKUP_DIR" >> /home/backup/test.log
STACKS=$(rancher stacks ls | awk 'NR>1 {print $2}')
echo "valeur de STACKS est: $STACKS" >> /home/backup/test.log
MYSQL_PASSWD="AZTYPOURNVODPDZNZDnkn,of,ocofdfpdpf"
echo "valeur de MYSQL_PASSWD est: $MYSQL_PASSWD" >> /home/backup/test.log
export RANCHER_ENVIRONMENT=987564412
export RANCHER_URL=https://url.infraweb.local
export RANCHER_ACCESS_KEY=1244899366545419646464
export RANCHER_SECRET_KEY=Azkndov,nfonvfolb,fofopbgfobngob,fp,fpgfpĝbfpb,gpbfgb
for folder in database infra
do
if [ ! -d "$BACKUP_DIR/$folder" ]; then
echo "on créer le dossier $BACKUP_DIR/$folder" >> /home/backup/test.log
mkdir -p "$BACKUP_DIR/$folder"
fi
done
script --return --quiet --command "rancher exec -it site/db /bin/bash -c 'export MYSQL_PWD=\"${MYSQL_PASSWD}\"; mysqldump -uroot site 2>/dev/null'" \
| gzip -c9 > "$BACKUP_DIR/db/site.sql.gz"
#echo 'la commande sera : script --return --quiet --command "rancher exec -it lacinetek/database /bin/bash -c '"'"'export MYSQL_PWD=\"${MYSQL_PASSWD}\"; mysqldump -uroot lacinetek 2>/dev/null'"'"'" \ | gzip -c9 > "$BACKUP_DIR/db/site.sql.gz"' >> /home/backup/test.log
for stack in $STACKS
do
rancher export -f "$BACKUP_DIR/infra/$stack.tar" $stack
done
Merci d'avance pour votre aide
Hors ligne
#3 Le 04/12/2018, à 16:02
- bruno
Re : Script bash qui fonctionne manuellement mais pas en cron
Bonjour,
Généralement ce genre de problème se produit parce que la tâche cron ne connaît pas la variable PATH (à préciser dans le fichier crontab ou utiliser les emplacement complets des exécutables dans les scripts).
#4 Le 04/12/2018, à 16:11
- grandtoubab
Re : Script bash qui fonctionne manuellement mais pas en cron
Je signale simplement qu'avec Systemd on peut aussi créer un service .timer qui lance un service périodiquement.
Exemple j'ai un service qui lance un script d'update personnalisé
/etc/systemd/system/maj.service
[Unit]
Description=Mise à jour périodique
After=exim4.service
[Service]
Type=oneshot
ExecStart=/opt/update-perso
je l'active toutes les 6h
/etc/systemd/system/maj.timer
[Unit]
Description=Exécuter le service maj periodicité 6h à la 20ieme minute
[Timer]
OnCalendar=*-*-* 0/6:20:00
Persistent=true
[Install]
WantedBy=timers.target
Vérification
systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 2018-12-04 18:20:00 CET 2h 10min left Tue 2018-12-04 12:20:03 CET 3h 49min ago maj.timer maj.service
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne
#5 Le 04/12/2018, à 16:47
- Watael
Re : Script bash qui fonctionne manuellement mais pas en cron
c'est bon ça !
tu sais si ça a une "granularité"(?) plus fine que cron : exécution périodique minimale inférieure à la minute ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#6 Le 04/12/2018, à 17:18
- grandtoubab
Re : Script bash qui fonctionne manuellement mais pas en cron
c'est bon ça !
tu sais si ça a une "granularité"(?) plus fine que cron : exécution périodique minimale inférieure à la minute ?
laptop-mode-tools fait du polling toutes les 150s
cat /lib/systemd/system/laptop-mode.timer
[Unit]
Description=Runs Laptop Mode Tools - Polling Service, every 150 seconds
[Timer]
# Let's run every 150 secs, to poll the battery
OnUnitActiveSec=150s
OnActiveSec=150s
Unit=lmt-poll.service
[Install]
WantedBy=multi-user.target
donc l'unité seconde (s) existe
systemctl status lmt-poll.service
● lmt-poll.service - Laptop Mode Tools - Battery Polling Service
Loaded: loaded (/lib/systemd/system/lmt-poll.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2018-12-04 17:26:30 CET; 57s ago
Docs: man:laptop_mode(8)
man:laptop-mode.conf(8)
http://github.com/rickysarraf/laptop-mode-tools
Process: 13618 ExecStart=/lib/udev/lmt-udev auto (code=exited, status=0/SUCCESS)
Main PID: 13618 (code=exited, status=0/SUCCESS)
déc. 04 17:26:30 debian systemd[1]: Starting Laptop Mode Tools - Battery Polling Service...
déc. 04 17:26:30 debian systemd[1]: Started Laptop Mode Tools - Battery Polling Service.
root@debian:~# cat /lib/systemd/system/lmt-poll.service
[Unit]
Description=Laptop Mode Tools - Battery Polling Service
Documentation=man:laptop_mode(8) man:laptop-mode.conf(8)
Documentation=http://github.com/rickysarraf/laptop-mode-tools
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/lib/udev/lmt-udev auto
ExecReload=/lib/udev/lmt-udev auto
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
https://bidouilledebian.wordpress.com/2 … c-systemd/
Dernière modification par grandtoubab (Le 04/12/2018, à 17:28)
Linux tout seul sur HP Pavilion DV7 et Acer Aspire T650, Canon MG3650 en wifi
Debian 11 Bullseye Gnome/Xorg, Gnome/Wayland avec SDDM
https://bidouilledebian.wordpress.com/
ON M'A VU DANS LE VERCORS, SAUTER A L'ELASTIQUE..... J'AI DANS LES BOTTES DES MONTAGNES DE QUESTIONS....
Hors ligne