Allt från Computex 2023
Permalänk
Medlem

Cron?

Skulle vilja kunna styra cron lite gran. Har för en gångs skull (jag erkänner, jag orkar oftast inte =/) läst manualen för både cron och crontab.

crontab säger att crontab -u kaminix -e ska användas för att editera filen... det funkar. Men i manualen står INGET om hur man ska formulera sig. Det står att dom inte bör editeras manuelt heller, något jag gärna skulle vilja ha en anledning till.

Jag vill bara köra en del kommandon vid vissa tidpunkter.

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)

Permalänk
Permalänk
Hedersmedlem

Istället för sektion 1 i manualen (general commands) tittar vi på sektion 5 (file formats):
man 5 crontab
Där står precis hur du skall skriva.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem

Va? Sektioner?

Visste inte ens att det fanns. Finns det något sätt att bläddra i sektionerna när man väl är inne i manualen?

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)

Permalänk
Hedersmedlem
Citat:

-a Display all of the manual pages for a specified section and name
combination. (Normally, only the first manual page found is dis-
played.)

man -a crontab
sen kan du hoppa mellan sidorna genom att säga ":n" och ":p" till less.

För att se vilka sektioner som finns, "man -k crontab".

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem

/var/spool/cron/*användare*

sen får du starta om crond manuellt

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av maDa
/var/spool/cron/*användare*

sen får du starta om crond manuellt

..vilket man slipper med crontab -e
Hos mig är det f ö /var/cron/tabs/.

Visa signatur

I have free will but I choose to oscillate

Permalänk

Kör emacs eller annan vettig editor och skriv in alla kommandon i rätt format för cron sen kör du cron filnamn -u användare för att sätta innehållet i den filen som crontab för den användaren. Jag brukar oftast totalt skita i att det står att man inte ska redigera filen manuellt, det funkar ändå, många av dessa inbyggda redigeringar av filer kör vim och jag vill ha emacs (finns oftast inget sätt att byta eftersom skiten är binära filer som har editor-namn hårdkodat i sig)

Visa signatur

RTFM - vacker sak att säga till folk som ställer dumma frågor

Permalänk
Hedersmedlem

RTFM då.. den bits inte.

Citat:

-e Edit the current crontab using the editor specified by the
VISUAL or EDITOR environment variables.
After you exit from
the editor, the modified crontab(5) will be installed automati-
cally.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem

OBS
Kör inte liknande kommandon

crontab -e * * * * * /usr/bin/DITT_PROGRAM

Råkade göra det på min web/mail-server, vilket resulterade att den körde ett skala-bild-skript så ofta den kunde. Tappade kontakten med den helt, den bara stod och tänkte. Jag hade bara ssh-kontakt med den så det va bara koppla i en skärm och tangentbord och hoppas att det gick då. Och det gjorde det, lyckades stänga av cron, men det var seeeeeeegt.

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av skorpion
OBS
Kör inte liknande kommandon

crontab -e * * * * * /usr/bin/DITT_PROGRAM

Råkade göra det på min web/mail-server, vilket resulterade att den körde ett skala-bild-skript så ofta den kunde. Tappade kontakten med den helt, den bara stod och tänkte. Jag hade bara ssh-kontakt med den så det va bara koppla i en skärm och tangentbord och hoppas att det gick då. Och det gjorde det, lyckades stänga av cron, men det var seeeeeeegt.

Den kör ditt program en gång i minuten.

Permalänk
Medlem

Verkar rätt komplicerat att använda Cron. Finns det inte några program som kan göra det åt mig?

EDIT:
gcrontab ser bra ut.

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)

Permalänk
Hedersmedlem

Det är inte ett dugg komplicerat..

#minute hour mday month wday command 0 * * * * /usr/bin/newsyslog

raden ovan kör newsyslog varje gång klockan är **:00, dvs varje hel timme.

#minute hour mday month wday command * 21 * * 7 mail -s 'Du suger!' root </dev/null

Skickar ett mail i minuten till root mellan 21:00 och 21:59 varje söndag.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av denka
Den kör ditt program en gång i minuten.

Jo, så var det ju, men det tar ca 5 min att köra klart kommandot :/

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av skorpion
Jo, så var det ju, men det tar ca 5 min att köra klart kommandot :/

Hade nog varit bättre att ha ett litet daemon-script i det fallet, som bara sover några sekunder mellan körningarna.. så får den köra i sin egen takt. Cron tar ju som sagt ingen hänsyn till om tidigare kommandon körts klart.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Aphex
Det är inte ett dugg komplicerat..

#minute hour mday month wday command 0 * * * * /usr/bin/newsyslog

raden ovan kör newsyslog varje gång klockan är **:00, dvs varje hel timme.

#minute hour mday month wday command * 21 * * 7 mail -s 'Du suger!' root </dev/null

Skickar ett mail i minuten till root mellan 21:00 och 21:59 varje söndag.

Varför skickar den det mailet i 59 minuter?

Jag vill göra ett kommando som varje dag flyttar en fil klockan 00:00 och sedan flyttar tillbaka den 00:05.
Om jag då skriver:

* 0 * * mv /ursprung/fil /nytt/fil
5 0 * * mv /nytt/fil /ursprung/fil
så kommer den väl att flytta filen en gång i minuten, och då blir det väl jäkligt skumt vid 00:05 om den ska flytta filen fram och tillbaka samtidigt?

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Trojan1313
Varför skickar den det mailet i 59 minuter?

60 faktiskt.
För att cron körs en gång i minuten, och vi har sagt åt han att maila ifall dagen är söndag och klockan är 21:**[QUOTE]

Jag vill göra ett kommando som varje dag flyttar en fil klockan 00:00 och sedan flyttar tillbaka den 00:05.
Om jag då skriver:

* 0 * * mv /ursprung/fil /nytt/fil
5 0 * * mv /nytt/fil /ursprung/fil
så kommer den väl att flytta filen en gång i minuten, och då blir det väl jäkligt skumt vid 00:05 om den ska flytta filen fram och tillbaka samtidigt?

[/QUOTE]
0 0 * * mv /ursprung/fil /nytt/fil
5 0 * * mv /nytt/fil /ursprung/fil

skulle funka.
Men här kanske du hellre ska göra
0 0 * * mv /ursprung/fil /nytt/fil && sleep 300 && mv /nytt/fil /ursprung/fil

Då är det mindre risk att något går åt skogen ifall det första kommandot tog för lång tid, eller om det inte lyckades.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Aphex
Det är inte ett dugg komplicerat..

#minute hour mday month wday command 0 * * * * /usr/bin/newsyslog

raden ovan kör newsyslog varje gång klockan är **:00, dvs varje hel timme.

#minute hour mday month wday command * 21 * * 7 mail -s 'Du suger!' root </dev/null

Skickar ett mail i minuten till root mellan 21:00 och 21:59 varje söndag.

Det där stämmer väl inte? 7 är väl inte ett möjligt värde? har för mig att 0 är söndag 1 måndag ... 6 lördag

Citat:

Ursprungligen inskrivet av Trojan1313

Varför skickar den det mailet i 59 minuter?

Du tänker fel där. Du tänker att starten är 21:01 och slutet är 21:59
Men den startar ju 21:00 så det blir ju första gången den kör kommandot, sedan är det ju 59 gånger till, vilket blir 60 gånger.

/Niclas

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av skorpion
Det där stämmer väl inte? 7 är väl inte ett möjligt värde? har för mig att 0 är söndag 1 måndag ... 6 lördag

söndag är både 0 och 7, båda funkar. man ska kunna skriva "sunday" också tror jag, samma med månaden.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem

Aha, det var ju ganska lämpligt faktiskt, många som inte tänker på att 0 brukar vara söndag.

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Aphex
[B]60 faktiskt.
För att cron körs en gång i minuten, och vi har sagt åt han att maila ifall dagen är söndag och klockan är 21:**
0 0 * * mv /ursprung/fil /nytt/fil
5 0 * * mv /nytt/fil /ursprung/fil

skulle funka.
Men här kanske du hellre ska göra
0 0 * * mv /ursprung/fil /nytt/fil && sleep 300 && mv /nytt/fil /ursprung/fil

Då är det mindre risk att något går åt skogen ifall det första kommandot tog för lång tid, eller om det inte lyckades.

Hur kan det funka? Vad jag fattat kommer den köra rad ett i en timme, och efter fem minuter kommer den att vilja köra rad två samtidigt.

Den andra lät bra dock.

EDIT:
Kommer inte
0 0 * * mv /ursprung/fil /nytt/fil && sleep 300 && mv /nytt/fil /ursprung/fil
att skicka tillbaka filen till den nya platsen en minut efter att den flyttat tillbaka den?

Alltså..
flytt till a
sov i 300s
flytt till b
en minuts väntan
samma visa en gång till

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Trojan1313
Hur kan det funka? Vad jag fattat kommer den köra rad ett i en timme, och efter fem minuter kommer den att vilja köra rad två samtidigt.

Den andra lät bra dock.

raden körs bara när minut och timme matchar med klockan, alltså 00:00. nästa gång cron körs kommer klockan vara 00:01 och ingen rad matchar den tiden.
Cron bryr sig inte om hur lång tid ett program tar att köras, om det var det du tänkte på. alla kommandon körs i varsitt subshell.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Aphex
raden körs bara när minut och timme matchar med klockan, alltså 00:00. nästa gång cron körs kommer klockan vara 00:01 och ingen rad matchar den tiden.
Cron bryr sig inte om hur lång tid ett program tar att köras, om det var det du tänkte på. alla kommandon körs i varsitt subshell.

Ahaaa, därför kommer kommandot som skrevs där uppe bara att köras en gång?

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)

Permalänk
Hedersmedlem

Ja.

* 0 matchar alla minuter och timmen noll.
0 0 matchar minuten noll och timmen noll.

Visa signatur

I have free will but I choose to oscillate

Permalänk
Medlem

Ok, då fattar jag tror jag. Tackar.

Får se om scriptet kör igång om en timme.

Visa signatur

Macbook Pro 15" (2,4 GHz Core Duo)