【问题标题】:How to use perl to modify crontab? [closed]如何使用perl修改crontab? [关闭]
【发布时间】:2013-08-10 14:34:08
【问题描述】:

如何通过 perl 脚本在 crontab 中附加 cron 任务?
我想到了以下几点:

#!/usr/bin/perl  

use strict;  
use warnings;  

`crontab<<EOL  
00 * * * * /home/slynux/download.sh    
EOL`  

我不想把事情搞砸,所以我在正确的轨道上吗?
另外,如果我附加它,我将如何删除它?我是 Perl 新手

【问题讨论】:

  • 堆栈溢出是一个询问您遇到的编程问题的具体问题的地方。请发布您编写的代码,它在做什么,以及您遇到的问题。请同时提供任何相关的源材料。
  • @xaxxon:你说的我还不如彻底删除OP。我还没有写任何代码,我正在寻找一种方法。查看这个相关线程stackoverflow.com/questions/18132144/…
  • 这似乎是个坏主意。如果您想安排一个作业在特定时间运行一次或两次,请查看 at(1) 而不是编辑然后取消编辑 crontab。
  • @mob:at(1)?什么意思?
  • Unix 命令称为at。通过运行man atman 1 at 阅读文档。

标签: perl cron crontab cron-task


【解决方案1】:

快速而肮脏的方式:

#!/usr/bin/perl  

use strict; use warnings;  

`(crontab -l; echo "00 * * * * /home/slynux/download.sh") | crontab -`;

另一种(更好的)方法:

#!/usr/bin/perl  

use strict; use warnings;  

open my $fh, "| crontab -" || die "can't open crontab: $!";
my $cron = qx(crontab -l);
print $fh "$cron\n0 * * * * /home/slynux/download.sh\n";
close $fh;

使用/home/slynux/download.sh 删除crontab 行:

#!/usr/bin/perl  

use strict; use warnings;

open my $fh, "| crontab -" || die "can't open crontab: $!";
my $cron = qx(crontab -l);
$cron =~ s!.*/home/slynux/download\.sh.*!!g;
print $fh $cron;
close $fh;

【讨论】:

  • 这是追加? -到底是什么?以后如何从 crontab 中删除它?
  • 是的,是追加。这就是为什么我先打电话给crontab -l- 的意思是 从标准输入读取 用于 shell。
  • 但我怎样才能删除它?
  • 运行crontab -e 并删除该行!?
  • 您的意思是手动删除它?但我的目标是以编程方式删除它
【解决方案2】:

metacpan 上快速搜索会返回Config::Crontab。虽然我从未使用过这个模块,但它看起来可以满足您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2012-03-24
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多