web-dev-qa-db-fra.com

Comment enregistrer la sortie de la ligne de commande dans un fichier EN TEMPS RÉEL

J'ai créé un script bash conçu pour sauvegarder mon PC tous les soirs vers 4 heures. Une fois la sauvegarde terminée, mon système se met en veille.

J'utilise actuellement | tee -a $LOGFILE pour enregistrer toutes les commandes, cependant, la journalisation n'est pas en temps réel. Lorsque mon ordinateur se met en veille, il n'a pas encore écrit le fichier, je dois donc réveiller mon PC avant de pouvoir voir les modifications sur l'emplacement de sauvegarde webdav.

C'est très ennuyeux car je ne peux pas chercher rapidement pourquoi il n'a pas sauvegardé la nuit dernière.

2
tim687

Avec les informations disponibles, c'est un peu un coup dans le noir, mais ... si le script est celui qui émet la commande pour se rendormir (lequel?) le problème peut être la mise en mémoire tampon stdio . Donc je vais

  1. préparer un script qui fait la sauvegarde mais ne va pas se mettre en veille, appelez-le bck_script.

  2. préparer un autre script qui met le PC en veille, appelez-le sleep_script

Planifiez un troisième script avec

bck_script | tee $LOGFILE
sync
sleep 30
sleep_script 

... où le sommeil en fait probablement trop, mais bon --- Je n'ai vraiment pas beaucoup confiance sync sur le réseau ou avec des SSD "intelligents" (lus étrangement tamponnés).

1
Rmano