• 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 7 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 7 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 7 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 7 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 7 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 7 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 7 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 7 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 7 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

Tid til at lære noget igen 0
TPM 2 0
BigLinux 0
Amerikansk tastatur på dansk tastatur 0
FSF giver flere detaljer om sit nye Librephone projekt 0

Seneste aktivitet

Internettet er ved at dø. Vi kan stadig stoppe det 1
Nørder søger nørder: Første Linux-brugergruppe på Mors 3
Østrigsk ministerium smider Microsoft ud til fordel for Nextcloud 1
Brug carburetor til at forblive usynlig online 8
Sådan konfigurerer du flatpaks' flathub til verified only 9
Plasma tapet-skifter 3
How to upgrade to LMDE 7 4
Virksomheder og enheder der kører på Linux 11
NordVPN har udgivet kildekoden til sin grafiske brugergrænseflade 2
Flere og flere bruger Brave browseren 1
LibreOffice og Collabora: Hvorfor er de ikke i skolerne i stedet for Word og Google Docs? 11
Firewall igen 5
Værdien ved open source 2
Sailfish på android telefon 1
Ladybird Browser 7
Satiriske ordspil 3
Kan ikke boote på installation 26
Tilføj signatur til Evolution mail 2
LUKS kryptering - Er der andre der bruger det 15
Dansk distro til software udviklere 2

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !