AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 31334
Accepted
user7321
user7321
Asked: 2009-06-25 17:00:54 +0800 CST2009-06-25 17:00:54 +0800 CST 2009-06-25 17:00:54 +0800 CST

如何防止 cron 填满我的系统日志?

  • 772

我有一个脚本需要每分钟执行一次。问题是 cron/var/log/syslog每次执行时都会记录。我最终看到这样的事情一遍又一遍地重复/var/log/syslog:

Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)

我正在使用 Debian。

我的问题是:有什么办法可以告诉 cron 不要每次都将这些信息写入系统日志?

debian cron syslog
  • 6 6 个回答
  • 45363 Views

6 个回答

  • Voted
  1. Dave Cheney
    2009-06-25T17:07:24+08:002009-06-25T17:07:24+08:00

    您可以将 cron 的输出发送到单独的日志工具,将以下内容添加到您的/etc/syslog.conf文件中:

    # Log cron stuff
    cron.*                                                  /var/log/cron
    

    请记住添加/var/log/cron到您的/etc/logrotate.d/syslog以确保它得到旋转,例如

    # /etc/logrotate.d/syslog
    /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
        sharedscripts
        postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        endscript
    }
    
    • 28
  2. dfc
    2013-06-01T09:55:37+08:002013-06-01T09:55:37+08:00

    更改 /etc/default/cron

      # Or, to log standard messages, plus jobs with exit status != 0:
      # EXTRA_OPTS='-L 5' 
      #
      # For quick reference, the currently available log levels are:
      #   0   no logging (errors are logged regardless)
      #   1   log start of jobs
      #   2   log end of jobs
      #   4   log jobs with exit status != 0
      #   8   log the process identifier of child process (in all logs)
      #
      EXTRA_OPTS="-L 0"
    

    默认情况下,EXTRA_OPTS 行是“”

    • 18
  3. Best Answer
    user7321
    2009-06-25T20:11:48+08:002009-06-25T20:11:48+08:00

    好的,

    我的问题的解决方案是:

    改变

    *.*;auth,authpriv.none     -/var/log/syslog
    

    至

    *.*;cron,auth,authpriv.none     -/var/log/syslog
    

    内/etc/syslog.conf然后重新启动系统日志

    我还/var/log/cron.log按照 Dave Cheney 的建议发送了 cron 并在其上粘贴了 logrotate。我对 Daves 建议的修复最适合我的情况,因为:

    1. 它/var/log/syslog不会被 cron 消息弄得乱七八糟
    2. 我仍然收到 cron 消息(这对故障排除很有帮助)
    3. logrotate/var/log/cron.log不会变得太大。
    • 17
  4. ericus
    2017-04-12T12:12:30+08:002017-04-12T12:12:30+08:00

    在 Ubuntu 14.04.5(可能在其他地方)有 rsyslogd 而不是 syslogd。TranslucentCloud 用 Debian Jessie 暗示了这一点,但相同的解决方案(但更改 rsyslog.conf 而不是 syslogd.conf)似乎在 Ubuntu 中不起作用。

    似乎 /etc/rsyslog.d/50-default.conf 中设置的值实际上将优先于 /etc/rsyslog.conf 中设置的内容,因此最好在此处进行更改,然后重新启动 rsyslog 和 cron。否则,您最终仍会使用 cron 日志记录到 syslog 的默认行为,以及cron 日志记录到 cronlog(但不限于此)。

    我的 /etc/rsyslog.d/50-default.conf 中的前几行:

    *.*;cron,auth,authpriv.none     -/var/log/syslog
    cron.*                          /var/log/cron.log
    

    瞧!

    • 5
  5. einpoklum
    2013-03-30T05:28:40+08:002013-03-30T05:28:40+08:00

    实际上,“最佳”(可以声称)解决方案是@DaveCheney建议和 user7321最终所做的结合,再加上我建议的第三个操作:

    1. 防止 syslogd 将与 cron 相关的日志消息附加到 /var/log/syslog
    2. 确保 cron 日志消息确实记录在某处(特别是在 /var/log/cron 中)+ 确保 cron 日志的日志轮换。
    3. 防止 syslogd 也将与 cron 相关的日志消息附加到 /var/log/messages

    在您/etc/syslog.conf的 中,这些建议的组合会发生如下变化:

    *.*;cron,auth,authpriv.none                         -/var/log/syslog
    auth,authpriv.none;daemon.none;mail,news.none       -/var/log/messages
    

    进入:

    cron.*                                              /var/log/cron.log
    *.*;cron,auth,authpriv.none                         -/var/log/syslog
    auth,authpriv.none;cron,daemon.none;mail,news.none  -/var/log/messages
    

    并且不要忘记强制重新加载(或重新启动)cron 和 syslogd 服务,例如使用:

    /etc/init.d/syslogd force-reload
    /etc/init.d/cron force-reload
    

    注意:这也适用于 rsyslogd。

    • 4
  6. Parakleta
    2014-06-19T07:29:12+08:002014-06-19T07:29:12+08:00

    我只是以不同的方式解决了这个问题,但我的目标略有不同。我想丢弃 atrun 触发时生成的 cron 日志条目,这样我的硬盘驱动器就可以休眠而不是每 5 分钟被唤醒一次。

    您可以将 syslog.conf 中的日志事件的目标设置为 shell 命令,方法是在它前面加上管道,因此我使用 grep 来丢弃我不想要的那些。所以:

    cron.*              | grep -v "(/usr/libexec/atrun)" >> /var/log/cron.log
    

    我还没有调查过,但我相信如果仍然需要这些日志条目,应该可以将它们发送到另一个目标。

    • 3

相关问题

  • 严重的写入性能问题

  • 您是否在生产/个人服务器上使用过 Debian 不稳定/测试?

  • 推荐的个人邮件服务器设置 [关闭]

  • 为什么 redhat 在企业界似乎如此受欢迎?[关闭]

  • 我应该如何将 debian/xen 机器从 etch 升级到 lenny

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve