Voici la commande que j'ai utilisée dans le script bash et qui s'exécute en arrière-plan:
sshpass -p prakash12 ssh -t -p $1 prakash@localhost './test_new_update_script.sh > /home/log/unit_update_output.log 2> /home/log/unit_update_error.log < /dev/null | echo $! > /home/log/unit_update_pids &'
Cette commande a créé 3 fichiers au moment de l’exécution, à savoir unit_update_output.log
, unit_update_error.log
et unit_update_pids
. Et imprimez les informations correspondantes. dans ces fichiers.
Je veux ajouter le current timestamp
à la fin de chaque nom de 3 fichiers.
Comme: unit_update_output-2014-04-08T22-15-02.log
"2014-04-08T22-15-02" c'est l'horodatage actuel.
La commande ci-dessus s'exécute en arrière-plan:
Alors, comment puis-je faire cela?
Que la commande soit en arrière-plan ou non importe peu, il vous suffit d'ajouter le résultat d'un appel date
aux noms de fichiers que vous créez. En utilisant exactement la même syntaxe que dans votre question, vous pouvez faire:
sshpass -p prakash12 ssh -t -p $1 prakash@localhost \
'./test_new_update_script.sh > /home/log/unit_update_output.$(date '+%F-%T').log \
2> /home/log/unit_update_error.$(date '+%F-%T').log < /dev/null |
echo $! > /home/log/unit_update_pids$(date '+%F-%T') &'
L'astuce consiste à ajouter $(date '+%F-%T').
, ceci retournera (par exemple):
$ date '+%F-%T'
2014-04-08-18:54:52
Donc, la commande ci-dessus va créer:
/home/log/unit_update_output.2014-04-08-18:57:02.log
/home/log/unit_update_error.2014-04-08-18:57:02.log
/home/log/unit_update_pids2014-04-08-18:57:02
Voir man date
pour les différents formats que vous pouvez avoir.