Gå til innhold

Legge til cron oppgaver i ubuntu med php


Anbefalte innlegg

Videoannonse
Annonse

<?php
$cronfile="/path/to/a/cronjobfile";
if(file_exists($cronfile)) {
   $readfile=file_get_contents($cronfile);
}
$minutes = "*";
$hours = "1";
$dayofmonth = "*";
$month ="*";
$dayofweek = "*";
$command = "/path/to/a/cronjobfile";
$newjob = $readfile."$minutes $hours $dayofmonth $month $dayofweek $command\n";
$writefile = fopen ($cronfile, "w");
fputs ($writefile, "$newjob");
fclose($writefile);
exec ("crontab $cronfile");
echo nl2br($readfile);
?>

Bruker som kjører apache må ha tilgang til /path/to/a/cronjobfile

 

EDIT: Flyttet visning av cronfilen til etter at jobben er lagt til :)

Endret av kakkle
Lenke til kommentar

Men husk at dersom du kjører dette gjennom apache, så er det crontaben til apache brukeren som gjelder. Og for å kjøre crontab for en annen bruker, så må du har rettigheter til det... :(

 

En mulighet er å lage en ekstrafil hver gang du editerer crontaben. Med hvilket som helst innhold, så lager du en cronjob på forhånd for din bruker, som sjekker om den filen finnes, finnes den, så kjøres crontab $cronfile, også slettes den filen som sjekkes etterpå...

 

Hvis du skjønte det, da...

 

EDIT: For å vise hvordan du kan gjøre det med et bash script som sjekker om det er noen endringer til crontab fra web:

php script:

<?php
$cronfile="/path/to/cronjobfile";
$minutes = "*";
$hours = "1";
$dayofweek = "*";
$month ="*";
$dow = "*";
$command = "/home/kakkle/test";
$newjob = "$minutes $hours $dayofweek $month $dow $command\n";
$writefile = fopen ($cronfile, "a");
fputs ($writefile, "$newjob");
fclose($writefile);
touch("modcron.tmp"); // Denne er for å si at det er lagt inn ny cronjob
?>

 

bash script: checkcron:

#!/bin/bash
if [ -e /var/www/tmp/hw/modcron.tmp ]
then
       crontab /path/to/cronjobfile
       echo "Cron tab was changed:"
       crontab -l
       rm -f /var/www/tmp/hw/modcron.tmp
else
       echo "No cron edits found"
fi

legg dette inn i crontab:

* * * * * /path/to/checkcron >> /path/to/checkcron.log

Så er du igang :)

Endret av kakkle
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...