Questão Anexar o registro de data e hora atual no nome dos arquivos do comando de execução em segundo plano


A seguir está o comando que usei no script bash e é executado em segundo plano:

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 &'

Este comando criou 3 arquivos em tempo de execução, ou seja, unit_update_output.log, unit_update_error.log e unit_update_pids. E imprima as informações relacionadas. nesses arquivos.

Eu quero acrescentar o current timestamp no final de cada nome de 3 arquivos.

Gostar: unit_update_output-2014-04-08T22-15-02.log   "2014-04-08T22-15-02" este é o timestamp atual.

O comando acima está sendo executado em segundo plano:

Então, como posso fazer isso?


4
2018-04-08 16:48


origem




Respostas:


Se o comando é baseado ou não é irrelevante, tudo que você precisa fazer é adicionar a saída de um date chame os nomes de arquivo que você está criando. Usando exatamente a mesma sintaxe da sua pergunta, você poderia fazer:

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') &'

O truque é adicionar $(date '+%F-%T')., isso retornará (por exemplo):

$ date '+%F-%T'
2014-04-08-18:54:52

Então, o comando acima irá criar:

/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

Vejo man date para os diferentes formatos que você pode ter.


4
2018-04-08 16:57



Está funcionando perfeito. - Prakash V Holkar