如何使用当前时间的日期更新文件名

How to update filename with date in current time

我正在尝试启动一个 stdbuf,它能够在 shell 中使用此顺序每天创建一个新日志:

stdbuf -i0 -o0 -e0 /.../my_dir/watchdog_foo >> /.../my_dir/log_foo_`date '+%F'` &

有了这个,我想要:

log_foo_2017-11-28
log_foo_2017-11-29
...

为了测试,我启动了另一个订单:

stdbuf -i0 -o0 -e0 /.../my_dir/watchdog_foo >> /.../my_dir/log_foo_`date '+%R'` &

尝试查看是否每分钟创建一个日志,但没有发生。日志一直在写同一个文件,而我希望的是:

log_foo_18:05
log_foo_18:06
...

如何修改此命令以实现我的目的?

当您启动此命令时,date +%R 会根据您的 shell 扩展为当前时间。之后,它不会再次更新,因此您的日志将被重定向到同一个文件。要获得所需的行为,您需要每天重新启动脚本(以获取更新日期)。您可以使用 cron 之类的工具在每晚午夜将脚本 运行 杀死之前的进程,并使用新日期重新 运行。

您也可以考虑利用像 logrotate 这样的工具。