每当 gem: 我设置 :output 但日志文件没有出现在我期望的位置

2023-12-21

In my schedule.rb文件我有以下几行:

set :output, '/log/cron_log.log'

every 5.minutes do
  command 'echo "hello"'
end

I ran whenever -w正如这个问题所建议的Rails,在开发时只要 gem 就使用 https://stackoverflow.com/questions/11514968/rails-using-whenever-gem-in-development,并且我假设 cronfile 已写入并正在运行。 (我也尝试重新启动 Rails 服务器。)

当我跑步时$ crontab -l我看到以下内容:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash
-l -c 'echo "hello" >> /log/cron_log.log 2>&1'

但我找不到日志文件。我检查了rails_project/log、~/log 和/log 无济于事。顺便说一句,在 OSX 上。

如何将日志文件写入rails项目日志文件夹?


你的日志在哪里?

您将输出文件放在最高目录级别:

$ cd /log

要查看文件是否存在以及其中是否有数据:

$ ls -la cron_log.log

如果需要创建日志文件:

$ touch cron_log.log

为您自己的本地调试开放权限(请勿在生产中执行此操作!)

$ chmod +rw cron_log.log  

你的命令正在运行吗?

要手动运行该命令以查明它是否按您的预期工作:

$ /bin/bash -l -c 'echo "hello" >> /log/cron_log.log 2>&1'

为了提高安全性并保护您的路径,请使用完整路径:

wrong: command 'echo "hello"'
right: command '/bin/echo "hello"'

要查找命令完整路径:

$ which echo

要验证 cron 是否按预期运行:

$ sudo grep CRON /var/log/syslog

grep 结果应该包含类似这样的行:

Jan 1 12:00:00 example.com CRON[123]: (root) CMD (... your command here ...)

你用的是 Mac 吗?

如果您没有在系统日志中看到输出,并且您使用的是 Mac,您可能需要阅读有关 Mac OSX 从cron to launchd.

请参阅 cron plist (/System/Library/LaunchDaemons/com.vix.cron.plist) 并使用 stdout/stderr 路径来调试 cron 本身。我不记得 launchctl 卸载和 launchctl 加载 plist 是否足够,或者因为它是系统守护进程(如果您必须完全重新启动)。 (看lion的cron日志文件在哪里 https://apple.stackexchange.com/questions/38861/where-is-the-cron-log-file-in-lion)

如何相对于 Rails 进行日志记录?

要将日志置于与 Rails 应用程序相关的位置,请省略前导斜杠(通常将其称为 cron.log)

set :output, "log/cron.log"

要将日志放入特定的完全限定目录中:

set :output, '/abc/def/ghi/log/cron.log'

每当 wiki 有一些关于重定向输出的好例子:

https://github.com/javan/whenever/wiki/Output-redirection-aka-logging-your-cron-jobs https://github.com/javan/whenever/wiki/Output-redirection-aka-logging-your-cron-jobs

例子:

every 3.hours do
  runner "MyModel.some_process", :output => 'cron.log'     
  rake "my:rake:task", :output => {:error => 'error.log', :standard => 'cron.log'}
  command "/usr/bin/cmd"
end  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每当 gem: 我设置 :output 但日志文件没有出现在我期望的位置 的相关文章

  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • 如何在 Jenkins 中安排构建?

    如何安排 Jenkins 构建 使其只能在每天的特定时间进行构建 例如下午 4 点开始 0 16 1 7 我理解为 每个月周一到周日下午 0 分钟 下午 4 点 但是它每分钟都会构建 如果有任何建议 我将不胜感激 谢谢 Update 请阅读
  • git push heroku master 权限被拒绝

    我正在关注 ruby railstutorial 我运行命令 git push heroku master 它吐出了这个错误 Permission denied publickey fatal Could not read from rem
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 如何在 Mac 上设置默认 shell,例如钓鱼? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不喜欢重新输入fish每次我启动终端时 我想Fish https en wikipedia org wiki Fish Unix she
  • 使用 Cocoa/OSX 合并/堆叠两个图像

    我有一个 CGImageRef 我们称之为原始图像 和一个透明 png 水印 我正在尝试编写一种方法将水印放置在原始内容之上 并返回 CGImageRef 在 iOS 中 我会使用 UIKit 将它们绘制到上下文中 但这在 OSX 中似乎不
  • 资产管道弃用警告 tsort.rb:226

    我的 Rails 4 2 在开发中运行良好 但在生产环境中我收到以下警告 DEPRECATION WARNING The configuration option config serve static assets has been re
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th
  • 遵循 http://ruby.railstutorial.org/ 教程时出现 RSpec 错误

    我到处搜索但似乎找不到解决方案 我一直在关注有关的教程http ruby railstutorial org http ruby railstutorial org 我在第 3 章中尝试使用 rspec spec 执行测试 但是我不断收到以
  • yard 0.7.3 无法在 Markdown 和 Textile 中构建我的自述文件

    我决定将我的项目中的 README 文件转换为 Markdown 并一直使用yard 验证文档是否正确呈现 所以我安装了 rdiscount 将 README 更改为 README md 并尝试 yard doc README md 这给了
  • 如何从 ruby​​ 中的字符串名称创建类实例?

    我有一个类的名称 我想创建该类的一个实例 以便我可以循环该类的架构中存在的每个 Rails 属性 我该怎么做呢 我的名称是我想要检查的类的字符串 我想我需要实例化一个类实例 以便我可以 循环遍历它的属性并打印它们 在 Rails 中你可以这
  • 为什么 struct tm 中的 tm_year 成员相对于 1900 而不是 macOS 上 C 中的 1970?

    当我遇到这个问题时 我正在尝试专家 C 编程中的示例 我的程序基本上做一件事 使用标准gmtime运行一下 看看自 1970 年以来已经过去了多少年 这是我的程序 include
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 无法使 csshX 在 Mac OS Big Sur 上运行

    csshX不适用于 Mac Big Sur 未实现 POSIX tmpnam 在 System Library Perl 5 28 darwin thread multi 2level POSIX pm 第 185 行使用 File Tem
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 浏览器关闭时 Omniauth 会话过期

    在我的 Rails 3 应用程序中 我使用 Omniauth 进行用户身份验证部分 fb twitter 实际上我遵循这个 https github com RailsApps rails3 mongoid omniauth https g
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company

随机推荐