在没有 root 访问权限的情况下配置 logrotate(每个用户日志轮换)

Bry*_*yce 21 cron users logrotate

在每个用户的控制下,如何最好地配置 logrotate 以在每个用户的控制下轮换用户主目录中的文件crontab -e

Let*_*ety 30

试试这个程序:

  1. 创建/home/user/logrotate文件夹

    mkdir /home/user/logrotate
    
    Run Code Online (Sandbox Code Playgroud)
  2. /home/user/logrotate/my.conf根据需要使用 logrotate 指令创建配置文件

  3. 创建/home/user/logrotate/cronjob每天凌晨 2:30 运行 logrotate(这是一个示例)

    30 2 * * * /usr/sbin/logrotate -s /home/user/logrotate/status /home/user/logrotate/my.conf > /dev/null 2>&1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 检查您的配置文件语法:

    logrotate -d /home/user/logrotate/my.conf
    
    Run Code Online (Sandbox Code Playgroud)
  5. 配置crontab运行logrotate警告:这会删除您的 crontab 中的现有条目。crontab -e用于手动将第 3 步中的行添加到现有的 crontab):

    crontab /home/user/logrotate/cronjob 
    
    Run Code Online (Sandbox Code Playgroud)

在最后一条命令之后,logrotate将按照 中所述旋转文件/home/user/logrotate/my.conf并将日志文件状态保存在/home/user/logrotate/status.

用:

crontab -r   # remove crontab activities for user
crontab -l   # to list crontab activity for user
crontab -e   # edit user crontab entries
Run Code Online (Sandbox Code Playgroud)

这是logrotatecrontab手册页。

  • 很有教育意义。也许应该提到'crontab <file>' 删除了所有以前配置的cronjobs。这只是发生在我身上 - 幸运的是我有一个备份:) (4认同)
  • 由于`-s` 参数将避免`error: error created unique temp file: Permission denied`。 (2认同)
  • @realtebo 参数 -s /home/user/logrotate/status 应该避免这个问题。你用过吗? (2认同)