Cron工作没有运行由puppet创建

时间:2014-03-21 07:15:15

标签: linux cron puppet

我想将1个cron作业添加到每5分钟运行一次的机器上,因为我正在使用此清单:

class cron_job{

    file{"puppet_ls":
            path => "/puppet/pls.sh",
            ensure => present,
            content => "#!/bin/sh\necho \"Hello World\"\nls -ltr /etc/puppet > /puppet/dump.txt"
    }

    file { "my_ls.cron":
        path    => "/etc/cron.d/my_ls.cron",
        ensure  => present,
        owner   => "root",
        group   => "root",
        mode    => 0644,
        require => File["puppet_ls"],
        content => "*/1 * * * *  /puppet/pls.sh\n";
    }
}

所以这个清单做了两件事,

  1. 它创建一个带有内容指定的文件/puupet/pls.sh,即实际运行命令 ls-ltr / etc / puppet
  2. 以日常类别的cron作业形式输入,如果你看到最后一行,即 * * * * /puppet/pls.sh\n ,则表示每次运行后都会运行1分钟(测试我保留一个)
  3. 但我没有在 / puppet / 中找到 dump.txt 文件 此外,如果我运行 sh /puppet/pls.sh ,它会完美运行并生成转储。

    我无法理解故障在哪里.. :(

    请说清楚..

    由于 ANKUR

2 个答案:

答案 0 :(得分:7)

您应该使用内置于puppet的cron type

file { '/puppet/pls.sh':
    content => "#!/bin/sh\necho \"Hello World\"\nls -ltr /etc/puppet > /puppet/dump.txt",
    mode    => 0755, 
}

cron { 'helloworld':   
   command => "/puppet/pls.sh",   
   user    => root,
   hour    => '*',   
   minute  => '*/5',
   require => File['/puppet/pls.sh']
}
........

答案 1 :(得分:3)

Crontab文件放在/etc/cron.d或其他cron中。 / etc下的目录不能在其名称中包含句点。

这是一个已知错误:https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022

从文件名中删除句点(my_ls.cron)可以解决问题。