以下是我在 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.log
、unit_update_error.log
和unit_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
您可以拥有的不同格式。