perlスクリプトを介してcrontabにcronタスクを追加するにはどうすればよいですか?
私は次のことを考えました:
#!/usr/bin/perl
use strict;
use warnings;
`crontab<<EOL
00 * * * * /home/slynux/download.sh
EOL`
物事を台無しにしたくないので、正しい軌道に乗っていますか?
また、追加した場合、どのように削除しますか? Perl初心者です
クイック&ダーティな方法:
#!/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;
crontab
で行を削除するには/home/slynux/download.sh
:
#!/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;
metacpanをすばやく検索すると、Config::Crontabが返されます。私はこのモジュールを使用したことがありませんが、あなたが望むことをするようです。