从后台运行命令将当前时间戳附加到文件名上

从后台运行命令将当前时间戳附加到文件名上

以下是我在 Bash 脚本中使用的命令,它在后台运行:

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

此命令在运行时创建了 3 个文件,即unit_update_output.logunit_update_error.logunit_update_pids。并在这些文件中打印相关信息。

我想current timestamp在每 3 个文件名末尾附加。

例如: unit_update_output-2014-04-08T22-15-02.log “2014-04-08T22-15-02”这是当前时间戳。

上述命令在后台运行:

那么我该怎么做呢?

答案1

该命令是否在后台运行并不重要,您只需将调用的输出添加date到您正在创建的文件名中。使用与您的问题完全相同的语法,您可以执行以下操作:

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

诀窍是添加$(date '+%F-%T').,这将返回(例如):

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

因此,上述命令将创建:

/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

查看man date您可以拥有的不同格式。

相关内容