2016-11-01 1 views
-1

J'ai un script bash qui donne toujours la sortie où je l'ai redirigé vers un fichier, ce que j'essaie de faire est de faire pivoter le fichier redirigé, ci-dessous est où je commence l'original scénario et rediriger:Modification du chemin redirigé pendant l'exécution du script

. 
somecode 
.  
su - username -c "command >> /path/to/directory/output.txt" & 
. 
. 
code continues.. 

et au-dessous est le crontab je suis en train de créer:

cd /path/to/directory/ 
timestamp=`date "+%Y%m%d"` 
mv ./output.txt ./logs/output.txt_$timestamp 
touch output.txt 
chmod 757 ./output.txt 
gzip ./logs/output.txt_$timestamp 
find ./logs/output.txt* -type f -mtime +2 | xargs rm 

ou celui-ci a également omis de faire le travail:

timestamp=`date "+%Y%m%d"` 
cp ./output.txt ./logs/output.txt_$timestamp 
echo "" > ./output.txt 
gzip ./logs/output.txt_$timestamp 

dans le premier code le script d'origine échoue et ne fonctionne plus, et dans le deuxième script il ne nettoie pas le fichier output.txt.

Y at-il un moyen de le faire tout en gardant le script de travail? Remarque; Je cours Unix Solaris.

Merci d'avance.

+0

-t-il logrotate? – 123

+0

Non il ne l'a pas – user104787

+0

La seule solution que j'ai pu trouver était d'avoir tous les scripts arrêtés et de faire ensuite la rotation après le démarrage des scripts, cela aurait été mieux s'il y avait un moyen de changer le chemin de sortie en cours d'exécution , mais même de cette façon, il est comme un script envoyer un sms si le cas que quelque chose tombe en panne, donc un temps d'arrêt de 10 minutes alors que la rotation est toujours acceptable. merci à tous pour votre aide – user104787

Répondre

0

Vous pouvez utiliser la commande suivante.

su - username -c "command >> /path/to/directory/output`date "+%Y%m%d"`.txt" & 

ou cela pourrait vous aider à https://linux.die.net/man/8/logrotate