J'exécute un script de sauvegarde de base de données via cron, et j'aimerais envoyer la sortie du programme dans le journal système (pour qu'elle soit envoyée à Journalisation de Stackdriver ).
J'ai essayé d'exécuter ce qui suit :
/opt/orientdb/bin/backup.sh \
remote:localhost/[database name] \
root root \
/db-backup/orientdb-dev/$(date +"%Y-%m-%d_%H-%M-%S").zip \
lvm \
2>&1 \
| tr '\n' ' ' \
| /usr/bin/systemd-cat -t "orientdb-backup"
Cependant, ce script émet des sorties vers syslog lorsqu'il est appelé directement, mais n'inclut aucune sortie lorsqu'il est exécuté via cron.
Syslog après avoir été exécuté manuellement (lignes non liées supprimées) :
[user]@orientdb-dev:~$ sudo /opt/orientdb/bin/backup.sh remote:localhost/[database name] root root /db-backup/orientdb-dev/$(date +"%Y-%m-%d_%H-%M-%S").zip lvm 2>&1 | tr '\n' ' ' | /usr/bin/systemd-cat -t "orientdb-backup"
[user]@orientdb-dev:~$ tail /var/log/syslog
Jan 21 18:16:48 orientdb-dev orientdb-backup[3522]: /opt/orientdb /opt/orientdb/bin/backup.sh: 103: cd: can't cd to /opt/orientdb/databases/[database name] Volume group "sda1" not found Cannot process volume group sda1 2018-01-21 18:16:47:716 WARNING No enough physical memory available for DISKCACHE: 581MB (heap=494MB). Set lower Maximum Heap (-Xmx setting on JVM) and restart OrientDB. Now running with DISKCACHE=256MB [orientechnologies] Error: com.orientechnologies.orient.core.exception.OStorageException: Cannot create a connection to remote server address(es): [127.0.0.1:2424] ERROR # 1 : database freeze failed
Fichier Cron :
$ cat /etc/cron.d/orientdb-backup
#Ansible: backup
*/5 * * * * root /opt/orientdb/bin/backup.sh remote:localhost/[database name] root root /db-backup/orientdb-dev/$(date +"%Y-%m-%d_%H-%M-%S").zip lvm 2>&1 | tr '\n' ' ' | /usr/bin/systemd-cat -t "orientdb-backup"
syslog après l'exécution de la tâche cron :
Jan 21 18:15:01 orientdb-dev CRON[3438]: (root) CMD (/opt/orientdb/bin/backup.sh remote:localhost/[database name] root root /db-backup/orientdb-dev/$(date +")
Jan 21 18:15:01 orientdb-dev CRON[3437]: (CRON) info (No MTA installed, discarding output)
Il semble qu'il y ait quelque chose de différent entre l'exécution de la commande sur le Shell et à l'intérieur d'une tâche cron, mais je ne trouve rien.
0 votes
Pourquoi essayez-vous de supprimer les sauts de ligne ?
0 votes
@MichaelHampton Je me suis dit que j'allais regrouper les lignes, d'autant plus que je pourrais configurer des alertes automatiques basées sur le contenu des lignes, afin qu'il soit plus facile d'analyser la sortie. Je ne me suis pas engagé à supprimer les nouvelles lignes, je déciderai de cela plus tard ! Au cas où cela aiderait, j'ai initialement laissé les sauts de ligne dans la sortie (sans passer par le pipeline
tr
), et les messages n'apparaissaient toujours pas.