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 / 问题 / 655892
Accepted
Security_Pete
Security_Pete
Asked: 2015-01-03 05:29:29 +0800 CST2015-01-03 05:29:29 +0800 CST 2015-01-03 05:29:29 +0800 CST

cronjob 没有每天运行

  • 772

我是一个linux新手。话虽如此,我需要一个 cronjob 在 48 小时后压缩一些 syslog 文件,以保持大小可控。这些文件当前位于 /syslog - 我添加用于处理卷的磁盘。我曾问过一个先前的问题来处理这个问题,但我在此之后并且 cronjob 没有运行。它应该在几个小时前运行。我相信这项工作将在每天 01:00:00 运行。这是我当前的 crontab。

root@mysyslogserver:/etc# more crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0 1 * * * /bin/gzip /syslog/*-$(/bin/date --date='2 days ago' +%F) 

我想知道格式是否让我感到困惑?

提前感谢您的帮助。

cron
  • 2 2 个回答
  • 124 Views

2 个回答

  • Voted
  1. Best Answer
    faker
    2015-01-03T06:06:34+08:002015-01-03T06:06:34+08:00

    正如 Sven 所说,更好的解决方案是使用logrotate为此设计的或类似的工具。

    然而,为了解释,有两个问题。
    您没有指定 cron 应该运行的用户。

    其次是%F部分。
    您需要转义 %,如下所述man 5 crontab:

    “第六”字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或 % 字符,将由 /bin/sh 或由 cronfile 的 SHELL 变量中指定的 shell 执行。命令中的百分号 (%),除非用反斜杠 (\) 转义,否则将更改为换行符,第一个 % 之后的所有数据将作为标准输入发送到命令。

    所以这:

     0 1 * * * root /bin/gzip /syslog/*-$(/bin/date --date='2 days ago' +\%F)
    

    应该管用。

    • 2
  2. vando
    2015-01-03T06:21:09+08:002015-01-03T06:21:09+08:00

    您忘记添加运行该作业的用户,更正它:

    0 1 * * * root /bin/gzip /syslog/*-$(/bin/date --date='2 days ago' +%F)

    • 0

相关问题

  • 每 4 小时运行一次 cron 的正确语法是什么?[复制]

  • 用于 mysql 数据库清理和备份的 crontab

  • Windows cron 作业

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • crontab ifconfig 什么都不输出

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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