私はカールを使用して、いくつかのcronジョブを作成したPHPでの単一のcronジョブを削除は(カール)
curl -s https://ex.example.com/cron/test3.php
どのようにすることができますこれをやってみようか?
私はカールを使用して、いくつかのcronジョブを作成したPHPでの単一のcronジョブを削除は(カール)
curl -s https://ex.example.com/cron/test3.php
どのようにすることができますこれをやってみようか?
ユーザーのcrontabは単なるテキストファイルです。 crontab -e
を実行すると、/var/spool/cron/crontabs/
のcrontabのコピーが/tmp
にコピーされ、テキストエディタで開かれます。保存すると、変更が加えられると、一時ファイルはcrontabsディレクトリにコピーされて、ユーザの前のcrontab(存在する場合)を上書きします。
crontab
コマンドを使用すると、内容を一覧表示することも、手動で編集するために起動することもできます(ただし、ラッパーを作成したにもかかわらず)。私はあなたのためにそれを行うラッパーを書くでしょう。それは2つのコマンドラインパラメータを取るでしょう:
それはこのようなものになります:行を追加します
./crontab.php add * * * * curl -s https://ex.example.com/cron/test3.php
:
あなたはこのようにそれを実行することができcrontab.php
$cron = '/var/spool/cron/crontabs/' . `echo $USER`;
$action = $argv[1];
$line = array_slice($argv, 2);
if ($action == 'add') {
file_put_contents($cron, $line . "\n", FILE_APPEND);
} elseif ($action == 'del') {
$file = explode("\n", file_get_contents($cron));
unlink($cron);
foreach ($file as $file_line) {
if (trim($file_line) != trim($line)) {
file_put_contents($cron, $file_line . "\n", FILE_APPEND);
}
}
}
を
* * * * curl -s https://ex.example.com/cron/test3.php
...ユーザーのcrontabの最後に。次
./crontab.php add * * * * curl -s https://ex.example.com/cron/test3.php
...その行、それがファイル内にある関係なく削除するために使用されるだろう。
上記のスクリプトは、あなたの方向性を開始するための単なるサンプルにすぎないことに注意してください。
file_get_contentsを使用してファイルを文字列に変換し、str_replaceを使用して行を削除し、file_put_contentsを使用してファイルを保存します。以下のようなこのアプローチの
<?php
$file="/path/to/jobs.sh";
$jobs=file_get_contents($file);
$jobs=str_replace('curl -s https://ex.example.com/cron/test3.php','',$jobs,$count);
if($count<1){
echo "failed to delete the job, couldn't find it!";
return 1;
}else{
file_put_contents($file,$str);
echo 'deleted '.$count.' jobs!';
}
preg_replace('/\s*'.preg_quote('curl -s https://ex.example.com/cron/test3.php','/').'\s*/',"\n",$jobs,$count);
のような正規表現を使用するのが一番簡単です。改行の後ろに迷子を残すことはなく、改行で始まったり改行したりすることなく4つのケースすべてで改行を取り除くことはできません。 (ケース1:改行で始まらず、改行で終わるわけではありません。ケース2:改行で始まらず、1で終わります。ケース3:開始します。ケース1:改行で始まり、改行で終わる) - str_replaceでこれを行う場合は、4回呼び出す必要があります。 (正しい順序で)
これまでに何を試みましたか? PHPでcronジョブを削除する方法は、システムでcronジョブがどのように設定されているかによって決まります。 –
私はこのコードを使って新しいcronを追加しました exec( 'echo -e "' crontab -l' \ n curl -s https://ex.example.com/cron/test3.php "| crontab - '、$出力); 1つだけを削除します – enassr
あなたのリンクは、少なくとも私にはアクセスできません。 Stack Overflowの良い習慣は、質問自体にコードを貼り付けてフォーマットすることです。 –