标签: cron

为什么 cron 在我的脚本中默默地无法运行 sudo 的东西?

我有一个从非特权用户的 crontab 运行的脚本,该脚本使用sudo. 除了它没有。脚本运行良好,但 sudo 的命令默默地失败。

  • 该脚本作为相关用户从 shell 完美运行。

  • Sudo 不需要密码。相关用户已在 中(root) NOPASSWD: ALL授予访问权限/etc/sudoers

  • Cron 正在运行并执行脚本。date > /tmp/log在正确的时间添加一个简单的产生输出。

  • 这不是权限问题。再次执行脚本,而不是执行 sudo 的命令。

  • 不是路径问题。运行env从脚本内被运行显示正确的$PATH变量,包括路径须藤。使用完整路径运行它没有帮助。正在执行的命令被赋予完整路径名。

  • 尝试捕获包括 STDERR 在内的 sudo 命令的输出没有显示任何有用的信息。添加sudo echo test 2>&1 > /tmp/log到脚本会产生一个空白日志。

  • sudo 二进制文件本身运行良好,即使在脚本内从 cron 运行时也能识别出它具有权限。添加sudo -l > /tmp/log到脚本会产生输出:

    用户 ec2-user 可以在此主机上运行以下命令:
    (root) NOPASSWD: ALL

使用检查命令的退出代码$?显示它返回一个错误(退出代码:)1,但似乎没有产生任何错误。一个简单的命令/usr/bin/sudo /bin/echo test返回相同的错误代码。

还有什么可能发生?

这是最近创建的运行最新 Amazon Linux AMI 的虚拟机。crontab 属于用户ec2-user,sudoers 文件是发行版默认的。

cron sudo

31
推荐指数
1
解决办法
4万
查看次数

为什么我的 crontab 没有触发?

我曾经crontab -e在我的 crontab 中添加以下行:

* * * * * echo hi >> /home/myusername/test
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到测试文件被写入。这是权限问题,还是 crontab 无法正常工作?

我看到 cron 进程正在运行。我该如何调试?

编辑- Ask Ubuntu 有一个关于 crontab 的好问题,不幸的是,这仍然对我没有帮助。

编辑 2 - 嗯,我的测试文件似乎有 214 行,这意味着在过去的 214 分钟内,它每分钟写入一次。我不确定是什么问题,但它显然已经消失了。

cron

30
推荐指数
4
解决办法
10万
查看次数

/etc/cron.d 下的文件是如何使用的?

/etc/cron.d 下的文件是如何使用的?

来自 https://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

cron 读取 /etc/cron.d/ 目录中的文件。通常系统守护进程如 sa-update 或 sysstat 将它们的 cronjob 放置在这里。作为 root 用户或超级用户,您可以使用以下目录来配置 cron 作业。 您可以在此处直接删除您的脚本run-parts 命令通过 /etc/crontab 文件运行目录中的脚本或程序

/etc/cron.d/ 将所有脚本放在这里并从 /etc/crontab 文件中调用它们。

在 Lubuntu 18.04 上,/etc/cron.d 下的文件似乎是 crontab 文件而不是 shell 脚本(在上面的链接中提到过):

$ cat /etc/cron.d/anacron 
# /etc/cron.d/anacron: crontab entries for the anacron package

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

30 7    * * *   root    [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi
Run Code Online (Sandbox Code Playgroud)

我的 /etc/crontab 文件从不引用 /etc/cron.d 下的文件,这与链接所说的相反: …

cron

27
推荐指数
1
解决办法
4万
查看次数

cron 对比 sleep - 就有效的 CPU/内存利用率而言,哪个更好?

案子:

我需要在特定的时间间隔运行一些命令/脚本,为此我有两个选择:

  1. 成立了cron-job
  2. sleep在脚本本身中实现一个循环。

题:

从资源消耗的角度来看,哪个是更好的选择,为什么?是cron更好的方法吗?cron 是否使用某种触发器或使其比其他触发器更有效?cron 使用什么程序来检查和启动作业?

cpu cron memory sleep shell-script

26
推荐指数
4
解决办法
2万
查看次数

邮件:无法发送消息:进程以非零状态退出

我有一个 cronjob 工作了大约两周,没有任何问题。然后昨晚我检查了我没有收到我通常收到的电子邮件。我去终端尝试给自己发一封电子邮件,我收到以下错误:

邮件:无法发送消息:进程以非零状态退出

我的 ssmtp cfg 文件没有改变任何东西。它只是停止工作,当我检查并重新检查所有内容时,代码,ssmtp,一切都很完美。

我每天通过 cronjob 发送两次电子邮件。crontab 也没有受到干扰。我真的不知道为什么它会停止工作。

系统通过 gmail 发送电子邮件 - 我已经进入 gmail 帐户并发送了测试电子邮件,它们的发送和接收没有任何问题。

此外,我检查了整个谷歌、论坛、网站,我没有看到任何错误。这是有道理的,因为 24 小时前一切正常,现在它刚刚停止。

问:有没有什么方法可以诊断和排除如何解决这样的问题?

cron email ssmtp

25
推荐指数
1
解决办法
9万
查看次数

是否按顺序处理多个@daily crontab 条目?

我希望每天的某个时间连续运行两个作业,完全按照我指定的顺序运行。这个 crontab 会可靠地做我想要的吗?

@daily job1
@daily job2
Run Code Online (Sandbox Code Playgroud)

我假设它们一个接一个地运行,但我无法通过搜索网络或从以下任何联机帮助页中找到答案:cron(1), crontab(1), crontab(5).

如果 cron@daily并行或以不可预测的顺序运行安排的事情,上面的 crontab 显然不会做我想要的。

我知道我可以简单地制作一个 shell 脚本来按顺序启动它们,我只是好奇 cron 应该如何工作(而且我懒得收集测试数据或阅读源代码)。

Cron 由cron包提供。操作系统是 Ubuntu 10.04 LTS(服务器)。

linux cron ubuntu

24
推荐指数
2
解决办法
3万
查看次数

小时范围超过午夜的 Crontab 条目

这是有效的 crontab 时间规范,做预期的事情:

0 22-4 * * *
Run Code Online (Sandbox Code Playgroud)

或者是否有必要做类似的事情

0 22,23,0,1,2,3,4 * * *
Run Code Online (Sandbox Code Playgroud)

cron

23
推荐指数
3
解决办法
2万
查看次数

用于删除超过 3 天的文件的 Cron 作业

我需要使用 3 个不同目录中的 cron 作业删除超过 3 天的文件。(这 3 个目录是父目录/a/b/c/1& /a/b/c/2& 的子目录/a/b/c/3)可以用 crontab 中的一行来完成吗?

cron shell-script timestamps rm files

23
推荐指数
2
解决办法
11万
查看次数

如何每 64 小时运行一次脚本?

我需要每 64 小时运行一次脚本。我找不到答案cron。是否可以使用它,或者我应该在 shell 脚本中使用循环?

scripting cron

23
推荐指数
4
解决办法
8274
查看次数

无人值守升级是如何开始的,我该如何修改它的计划?

我想知道谁在我的 debian-jessie 中开始无人值守升级:

  1. 我的手册页

    DESCRIPTION
       This program can download and install security  upgrades  automatically
       and  unattended,  taking care to only install packages from the config?
       ured APT source, and checking for dpkg prompts about configuration file
       changes. All output is logged to /var/log/unattended-upgrades.log.
       This  script  is  the backend for the APT::Periodic::Unattended-Upgrade
       option and designed to be run from cron (e.g. via /etc/cron.daily/apt).
    
    Run Code Online (Sandbox Code Playgroud)
  2. 但是我的 crontab 没有通过 crontab 命令显示任何内容:

    @stefano:/etc/cron.daily$ crontab -l
    no crontab for stefano
    # crontab -l
    no crontab for …
    Run Code Online (Sandbox Code Playgroud)

cron debian unattended-upgrades

22
推荐指数
2
解决办法
2万
查看次数