• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af marlar | 30.03.2011 19:43

$RANDOM i cron [LØST]

Software
Jeg har et irriterende problem med et random cronjob. Jeg vil udføre en kommando et tilfældigt antal minutter efter cronjobbet fyrer.

Dette virker direkte i terminalen og udfører kommandoen forsinket mellem 0 og 30 sekunder (erstat kommando med et vilkårligt program, fx echo):

sleep `expr $RANDOM \% 30` ; kommando

Hvis den derimod står i crontab, fyrer den altid med det samme, uden forsinkelse:

* * * * * sleep `expr $RANDOM \% 30` ; kommando

Bruger jeg et udtryk uden $RANDOM virker det til gengæld fint:

* * * * * sleep `expr 10 + 5` ; kommando

Ovenstående forsinker kommandoen 15 sekunder.

Altså ser det ud tll at $RANDOM ikke virker og får hele udtrykket til at blive nul.

Men det er ikke fordi $RANDOM simpelthen evaluerer til 0 i cron, får så skulle dette give en forsinkelse på 10 sekunder:

* * * * * sleep `expr $RANDOM \% 30 + 10` ; kommando

Hvad pokker sker der?
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer9

# 1

14 år 3 måneder siden

Permalink

Indsendt af julemand101 den 30. marts 2011 kl. 20:10

Permalink

Mine erfaringer med Cron

Mine erfaringer med Cron jobs siger mig at du ikke skal regne med systemvariabler når du kører ting fra Cron. Så mit bud er at $RANDOM slet ikke er defineret og derfor ingen værdi har.
  • Log ind eller opret dig for at tilføje kommentarer

# 2

14 år 3 måneder siden

Permalink

Indsendt af mich den 30. marts 2011 kl. 20:19

Permalink

Put din forsinkelse i et

Put din forsinkelse i et script, der kalder den ønskede kommando.
  • Log ind eller opret dig for at tilføje kommentarer

# 3

14 år 3 måneder siden

Permalink

Indsendt af marlar den 30. marts 2011 kl. 20:41

Permalink

#2: det vil selvfølgelig

#2: det vil selvfølgelig virke og er da en udvej. Men det bliver jeg ikke meget klogere af, og jeg hader når ting ikke virker uden jeg ved hvorfor!

#1 bud er en mulighed jeg vil undersøge, men jeg tror det dog ikke da mit sidste eksempel vel så vil evaluere til 10?
  • Log ind eller opret dig for at tilføje kommentarer

# 4

14 år 3 måneder siden

Permalink

Indsendt af dudsen den 30. marts 2011 kl. 22:35

Permalink

kald dev random

prøv $((`od -An -N1 -i /dev/urandom` )%(30) ) ; command istedet.

Problemet er at du formenteligt eksekvere i en dash og ikke bash shell samt at det ikke er en login shell så env variabler bliver ikke sat.

je mener at $RANDOM er en bash udvidelse og ikke en del af possix men jeg er ligeså forvirret som alle andre når det kommer til de forskellige shell's syntaxer.

Edit:
du behøver ikke bruge en subshell "$(" du kan nøjes med (expr `od -An -N1 -i /dev/urandom` % 30)
  • Log ind eller opret dig for at tilføje kommentarer

# 5

14 år 3 måneder siden

Permalink

Indsendt af marlar den 30. marts 2011 kl. 23:54

Permalink

Super, #4 virker! Man skal

Super, #4 virker! Man skal blot huske at escape % for at det virker i cron.

Så det må altså være fordi systemvariabler ikke virker i cron, som I er inde på.

Det mærkelige er blot at jeg fandt ideen her: http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/ hvor der netop bruges $RANDOM i cron. Men det kan jo være distro-afhængigt.
  • Log ind eller opret dig for at tilføje kommentarer

# 6

14 år 3 måneder siden

Permalink

Indsendt af dudsen den 31. marts 2011 kl. 10:46

Permalink

forklaringen

for en forklaring hvad siger "cat /etc/crontab |grep -i shell" ?
  • Log ind eller opret dig for at tilføje kommentarer

# 7

14 år 3 måneder siden

Permalink

Indsendt af marlar den 31. marts 2011 kl. 10:53

Permalink

#6:
SHELL=/bin/sh

#6:

SHELL=/bin/sh
  • Log ind eller opret dig for at tilføje kommentarer

# 8

14 år 3 måneder siden

Permalink

Indsendt af dudsen den 31. marts 2011 kl. 11:46

Permalink

dash or bas

hvad peger /bin/sh på ll /bin/sh $RANDOM er en bash feature der ikke findes i alle possix kompatible shell
fortolkere
  • Log ind eller opret dig for at tilføje kommentarer

# 9

14 år 3 måneder siden

Permalink

Indsendt af marlar den 31. marts 2011 kl. 15:19

Permalink

Den peger på dash. Dash har

Den peger på dash. Dash har jeg faktisk aldrig hørt om, det må være en afart af bash...
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

Gode anmeldelser Zorin OS 17.3 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

"Intet realistisk alternativ" - mig i r*ven 15
Nulstilling af adgangskode 3
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15
Pepsi Challenge 4
Linuxin er nu migreret til Drupal 11 13
Et Dansk alternativ til Facebook 18
Ekstern Blu-ray-brænder, der fungerer med PCLinuxOS 3
Københavns og Aarhus Kommune dropper MS 9
Open Source-eksperimentet 1
Microsoft og Google ud af de danske skoler 2

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !