AlecTBM Skrevet 12. februar 2007 Del Skrevet 12. februar 2007 Jeg har en webserver som skal kjøre cron på div. auto update og backup. Men jeg vil ikke gå inn i terminalen hver gang jeg skal endre på noe. Så jeg har et admin panel. Noen som vet hvordan man endrer cron jobs med php?? Lenke til kommentar
kakkle Skrevet 12. februar 2007 Del Skrevet 12. februar 2007 (endret) <?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 12. februar 2007 av kakkle Lenke til kommentar
AlecTBM Skrevet 12. februar 2007 Forfatter Del Skrevet 12. februar 2007 takker. Trudde man måtte noe anna Lenke til kommentar
kakkle Skrevet 12. februar 2007 Del Skrevet 12. februar 2007 (endret) 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 12. februar 2007 av kakkle Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå