J'ai créé un petit script Bash qui effectue un vidage de données MySQL. Parce que le vidage peut être assez important, je mets le processus en arrière-plan, puis j'attends une erreur ou le journal apparaît dans le système de fichiers. J'ai le code suivant:La redirection de STDERR dans un fichier Bash entraîne la création d'un fichier même s'il n'y a pas d'erreur. Pourquoi?
mysqldump main_db > /loc/to/dmp/file.sql 2>/loc/to/error/log/file.log &
Le problème est que je reçois un fichier « /loc/to/error/log/file.log » la taille de 0 (que je suppose que signifie aucune erreur réelle) parfois, quand cette commande est exécutée, ce qui tue le processus, même s'il n'y a pas d'erreur. Je ne sais pas pourquoi le STDERR écrirait un fichier quand il n'y avait pas de données à écrire. Est-ce dû au processus d'arrière-plan &
?
D'accord, je ne sais pas comment fonctionnait STDERR, et la pensée vérification d'une taille de fichier de 0 serait un pansement pour un problème plus profond. – null
Le problème n'est pas "comment fonctionne STDERR". C'est comme ça que fonctionnent les redirections de shell. –