WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Crontab (https://www.wn.se/forum/showthread.php?t=4414)

parsecode 2004-11-10 20:19

Tja

Jag är ute efter att skapa lite crontab jobb som ska köras på min server...

Jag har aldrig gjort det förr och undrar därför vilka skript språk man kan använda i programmet? Är det bara perl? Eller kan man köra php? Eller nått annat?

Tack!

kullervo 2004-11-10 20:28

crontab är till för att exekvera program/kommandon. Du kan alltså exekvera allt på samma sätt som du kan i ditt shell, så lämpligast är väl att skriva script i det språk du behärskar bäst. Jag kör gärna PHP eftersom det där det scriptspråket jag kan bäst, men smaken är som baken. Perl eller bash är nog vanligast.

parsecode 2004-11-10 20:36

Allright!

Skulle passa mig perfekt att köra php.

Så jag skriver helt enkelt bara en php kod i en ascii fil? och kör den sen via crontab?
Har jag hajjat rätt då?

Har du lust att ge mig en syntax.
Starta filen: ingenaning.php den första november klockan 15:00?

Sigurd 2004-11-10 20:44

Citat:

Originally posted by parsecode@Nov 10 2004, 21:36
Allright!

Skulle passa mig perfekt att köra php.

Så jag skriver helt enkelt bara en php kod i en ascii fil? och kör den sen via crontab?
Har jag hajjat rätt då?

Har du lust att ge mig en syntax.
Starta filen: ingenaning.php den första november klockan 15:00?

Vilken typ av dator ska du köra det på? Windows?

Isåfall är det väldigt enkelt. Bara att schemanlägga en körning "den första november klockan 15:00" mha windows "schemanläggare".

EDIT: Kom och tänka på det... Har du gjort en batch-fil eller vill du ha hjälp från start?

parsecode 2004-11-10 20:49

från start. :/

grazzy 2004-11-10 22:55

I unix finns det något som kallas "man" (man 5 crontab på mitt system för att få upp rätt dokumentation) , det är ett kommando för att se manualen för ett visst program. Om du har frågat liknande frågor till denna på andra ställen har du säkert även hört förkortningen RTFM.

Manualen säger:
The time and date fields are:

field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)

Från det ena till det andra, för att editera crontab i unix:
crontab -e

För att skapa ett jobb som körs en gång i timmen:
1 * * * * <script>

För att skapa ett jobb som körs 1 november 15:00

00 15 1 11 * /usr/local/bin/php <script.php>

Det betyder att du använder tolken php för att parsa script.php. Du kan även definiera tolk i en ascii-fil genom att skriva #!/usr/bin/tolk längst upp i den och ge den execute-flaggan (chmod +x fil).

Asterisk betyder samma som i ett filnamn, dvs wildcard, dvs kör "alltid" när den matchar.

Om du vill köra ett script säg varannan timme:
* */2 * * * <script>

Eller var femte minut:
*/5 * * * * <script>

Jag hoppas det känns lite naturligare nu. Nästa gång, läs gärna manualen innan du frågar.

parsecode 2004-11-11 10:36

taxi myxi.

Självklart läser vi manualen... Om vi vet att det finns en. :)
Där står t ex inte att man kan koda i php. Så det skadar ju inte att fråga. Det är väl det forumet är till för?

kullervo 2004-11-11 11:15

Citat:

Originally posted by parsecode@Nov 11 2004, 11:36
taxi myxi.

Självklart läser vi manualen... Om vi vet att det finns en. :)
Där står t ex inte att man kan koda i php. Så det skadar ju inte att fråga. Det är väl det forumet är till för?

Det är ju inte ofta något saknar en manual, och om den nu saknas så är det nog för att det inte behövs någon.

Crontab har inget med PHP att göra. Du kan bara exekvera program och kommandon i crontab precis som du kan i en terminal. Om du vill veta om du kan exekvera PHP från en terminal så får du ju läsa i manualen till PHP ffs. Normalt när du installerar/kompilerar PHP så följer det med en separat binär (antar att det är den man använder om man kör CGI). Hitta den och som argument när du exekverar skriver du PHP-filen du vill köra. T.ex:
Kod:

martin@hedkandi:/usr$ find -name php
./local/bin/php
./local/lib/php
./local/include/php
martin@hedkandi:/usr$ /usr/local/bin/php ditt_script.php

Tänk på att du inte kör i samma miljö som crontab, så om du har php i din path måste du förmodligen manuelt lägga in php i crontabs path. Eller så gör du som i mitt exempel och skriver ut hela sökvägen till php.

zoran 2004-11-11 19:21

Citat:

Ursprungligen postat av kullervo
Citat:

Ursprungligen postat av parsecode
taxi myxi.

Självklart läser vi manualen... Om vi vet att det finns en. :)
Där står t ex inte att man kan koda i php. Så det skadar ju inte att fråga. Det är väl det forumet är till för?

Det är ju inte ofta något saknar en manual, och om den nu saknas så är det nog för att det inte behövs någon.

Crontab har inget med PHP att göra. Du kan bara exekvera program och kommandon i crontab precis som du kan i en terminal. Om du vill veta om du kan exekvera PHP från en terminal så får du ju läsa i manualen till PHP ffs. Normalt när du installerar/kompilerar PHP så följer det med en separat binär (antar att det är den man använder om man kör CGI). Hitta den och som argument när du exekverar skriver du PHP-filen du vill köra. T.ex:
Kod:

martin@hedkandi:/usr$ find -name php
./local/bin/php
./local/lib/php
./local/include/php
martin@hedkandi:/usr$ /usr/local/bin/php ditt_script.php

Tänk på att du inte kör i samma miljö som crontab, så om du har php i din path måste du förmodligen manuelt lägga in php i crontabs path. Eller så gör du som i mitt exempel och skriver ut hela sökvägen till php.

Man behöver inte skriva hela sökvägen till PHP. Använder man sig av "shebang" slipper man det.

Det finns två sätt att göra det på:

1: utan shebang

0 * * * * /usr/local/bin/php /foo/bar/mittscript.php

2: med shebang

0 * * * * /foo/bar/mittscript.php

Metod nummer 2 kräver att skriptet börjar med

#!/usr/local/bin/php
(eller var sökvängen till php kan vara)

samt att den är exekverbar för användaren vars crontab kommer köra filen. Ett bra test är ju att man testar köra php-scriptet och se om den fungerar innan man lägger den i crontab. Med "köra" menar jag inte att anropa interpretatorn med php-scriptet som argument utan anropa scriptet direkt.

/Zoran


Alla tider är GMT +2. Klockan är nu 16:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson