对资源“cron [cron_name]”执行操作“create”时出错

Posted

技术标签:

【中文标题】对资源“cron [cron_name]”执行操作“create”时出错【英文标题】:Error executing action `create` on resource 'cron[cron_name]' 【发布时间】:2014-06-25 04:09:26 【问题描述】:

我无法让这个 cron 作业开始。我正在运行 opsworks 实例,这是我的秘诀:

cron "delete_error_log" do
  hour "12"
  minute "30"
  command %Q
  sudo find /srv/www/ -name "error_log" -delete
  
  action :create
end

我已经确保 cron 可以通过在 ssh 中运行来工作。

我得到的错误是这样的:

================================================================================
Error executing action `create` on resource 'cron[delete_error_log]'
================================================================================


Chef::Exceptions::Cron
----------------------
Error updating state of delete_error_log, exit: 1


Resource Declaration:
---------------------
# In /opt/aws/opsworks/releases/20140423133810_223/site-cookbooks/cron_job/recipes/delete_error_log.rb

1: cron "delete_error_log" do
2:   hour "12"
3:   minute "30"
4:   command %Q
5:   sudo find /srv/www/ -name "error_log" -delete
6:   
7:   action :create
8: end


Compiled Resource:
------------------
# Declared in /opt/aws/opsworks/releases/20140423133810_223/site-cookbooks/cron_job/recipes/delete_error_log.rb:1:in `from_file'

cron("delete_error_log") do
weekday "*"
retry_delay 2
command "\n  sudo find /srv/www/ -name \"error_log\" -delete\n  "
minute "30"
cookbook_name :cron_job
month "*"
retries 0
recipe_name "delete_error_log"
day "*"
action [:create]
user "root"
hour "12"
end
=======================================================

【问题讨论】:

你试过使用command 'sudo find /srv/www/ -name "error_log" -delete'吗?我认为没有理由让它更复杂,可能是多行命令未正确更改为单行 cron 选项卡条目。 @gnat 谢谢斯蒂芬!那解决了它!我曾尝试使用命令“...”但是双引号被“error_log”语法抛弃,但单引号工作得很好。谢谢你!现在将其部署到我的所有实例!如果您将其重新发布为答案,我会将其标记为问题的答案 - 至少如果我的个人资料允许我(我是 *** 的新手) 谢谢!我会将其发布为答案。我希望我可以将您的问题剥离到核心问题并删除没有任何影响的metadata.rb 等。我认为这个问题可能会影响更多的厨师用户。我认为如果厨师工作完全完美,它甚至会取代换行符:-) 如果你想使用双引号而不是单引号,你必须转义内部的 (`"sudo .. \"...\" ") 【参考方案1】:

问题是多行命令,好像是直接放到crontab文件里的。相反,像这样提供command

cron "delete_error_log" do
  hour "12"
  minute "30"
  command 'sudo find /srv/www/ -name "error_log" -delete'
end

【讨论】:

以上是关于对资源“cron [cron_name]”执行操作“create”时出错的主要内容,如果未能解决你的问题,请参考以下文章

几种典型应用对系统资源使用的特点

使用std::mutex取代QMutex

1.1 内核的执行单元:任务

操作系统学习笔记---线程

k8s创建指定用户只对指定namesapce下的资源有操作权限

Python并发编程—同步互斥