使用时间戳压缩文件的 Crontab 作业

使用时间戳压缩文件的 Crontab 作业

Ubuntu(Oracle VM 虚拟盒)

我接到一个任务,要编写如下 3 个 crontab 作业:

  1. logger - 每 30 分钟将日期打印到 /var/log/myDate.log 中的作业
  2. 归档程序 - 每天凌晨 2:00 使用 gzip 压缩 /var/log/myDate.log 并附加时间戳 (/var/log/2022_08_03.log.gz)
  3. cleaner——清理最近的7个gzip文件之外的所有文件。

这是我目前得到的:

nevosmic@nevosmic-VirtualBox:~$ crontab -e
#
#
* /30 * * * * date >> /home/nevosmic/myDate.log
0 2 * * * gzip /home/nevosmic/myDate.log

一切正常。在 /home/nevosmic 中创建 myDate.log 文件,每 30 分钟打印一次日期。然后在 02:00 创建 myDate.log.gz

我遇到的第一个问题是 /var/log/ 目录没有权限写入其他用户(我可以从 root 内部创建 crontab 作业吗?)

更新:

我执行了 $ sudo crontab -e,它成功了。我成功创建并写入 /var/log/myDate.log。但现在,即使我尝试将压缩文件存储在另一个目录中:/home/my_userName/2022_08_03.log.gz,gzip 也不起作用。

我的命令:

#
#
*/30 * * * * date >> /var/log/myDate.log
0 2 * * * gzip /var/log/myDate.log > /home/my_userName/$(date+"%y_%m_%d").log.gz

它创建一个压缩文件 /var/log/myDate.log.gz ...但这不是我的本意。(我需要它在/home/我的用户名/

关于如何完成任务 3 有什么建议吗?

我可以这样做吗?:

# Every monday at 02:00 rm all files except the 7 most recent
0 2 * * 1 ls -t /home/nevosmic/logim/*.gz | tail -n 7 | xargs rm

答案1

更新:

感谢steeldriver,

此命令对我有用(我需要在任何“%”之前加上“”):

#
*/30 * * * * date >> /var/log/myDate.log
0 2 * * * gzip -c /var/log/myDate.log > /home/my_userName/$(date +"\%y\%m\%d").log.gz

相关内容