Crontab og bash script
Hej .. jeg lavede et bash script her i dag, som jeg gerne vil have bliver kørt med så og så mange minutters mellemrum, men jeg kan ikke få crontab til at virke, selvom jeg har kigget over hele nettet efter hvordan man skal gøre. Her er der hvordan jeg har skrevet i min crontab:
* * * * * /home/mig/scripts/script.sh
Jeg har prøvet mange andre ting. Jeg kan se i systemloggen at den bliver kørt hvert minut. Men scriptet bliver bare ikke udført. Når man kører scriptet normalt virker det perfekt, så kan ikke forstå hvad der er galt. : /
Er der nogen, der har en ide om hvad det kan være ?
* * * * * /home/mig/scripts/script.sh
Jeg har prøvet mange andre ting. Jeg kan se i systemloggen at den bliver kørt hvert minut. Men scriptet bliver bare ikke udført. Når man kører scriptet normalt virker det perfekt, så kan ikke forstå hvad der er galt. : /
Er der nogen, der har en ide om hvad det kan være ?
Kommentarer34
Re: Crontab og bash script
chmod +x script.sh
Re: Re: Crontab og bash script
Re: Crontab og bash script
./script.sh
bash script.sh
Hvis du benytter den nederste metode så vil den kunne køre den ligegyldigt om dine permisions er korrekte eller ej. den øverste derimod kræver execute permisions og en "shebang" linie: #!/bin/bash
Re: Re: Crontab og bash script
Re: Re: Re: Crontab og bash script
/etc/init.d/crond status
(eller på arch er det vidst /etc/rc.d/crond status)
Hos mig giver den:
crond (pid 2432) is running...
Den skal helst sige noget lignende.
Re: Re: Re: Re: Crontab og bash script
prøvede med /etc/init.d/cron status, hvorefter den skriver: * cron is running.
skal det være crond eller cron ?
for hvis det skal være crond, så er der vist noget galt med daemonen ja..
Re: Crontab og bash script
crontab vil som default sætte dit current working dir til ~ mm du angiver andet i dit script
Re: Crontab og bash script
Re: Crontab og bash script
EDIT:
relative stier er alle stier som ikke starter med /home/user/osv.. men istedet er af formen ../../filnavn
du kan i starten ad dit script blot skrive cd /full/path/to/script/dir så skulle alt være godt
Re: Crontab og bash script
Prøver også det med at skrive stien i toppen :)
Re: Crontab og bash script
* * * * * /sti/til/script.sh 2> /home/bruger/script.log
Re: Crontab og bash script
Re: Crontab og bash script
/etc/init.d/cron restart
Re: Crontab og bash script
Har fundet ud af det er kommandoen, den er gal med. Prøvede at erstatte den med en anden og så virkede den.
Men desværre var det jo ikke den kommando jeg skulle bruge. Så prøvede which KOMMANDO, men jeg bruger allerede den sti for kommandoen, så er der en speciel måde man kan skrive med ` eller ', hvis kommandoen ikke vil køres (selv om den godt kan køre når scriptet bliver kørt manuelt) ?
Re: Crontab og bash script
Re: Crontab og bash script
Re: Crontab og bash script
...og vis lige første linie i det script.
output: lrwxrwxrwx 1 root
lrwxrwxrwx 1 root root 4 2008-11-25 12:07 /bin/sh -> dash
så gætter det er dash..
hvad gør jeg så ?
og første linie:
#!/bin/bash
Re: Crontab og bash script
at /bin/sh peger på dash betyder intet så længe du har skrevet #!/bin/bash, med mindre selvfølgelig bash også peger på dash
Re: Crontab og bash script
ls -al /bin/bash
???
Hvis ja, så prøv lige dette (som root):
cd /bin
rm -f sh
ln -s bash sh
og ret linie et i scriptet til
#!/bin/sh
Begge dele er ufarlige og kan let sættes tilbage igen.
Re: Crontab og bash script
Re: Crontab og bash script
Re: Crontab og bash script
http://pastebin.com/d3788e1c3
Re: Crontab og bash script
Re: Crontab og bash script
Re: Crontab og bash script
Re: Crontab og bash script
...og ja, den kan laves meget kønnere, du har ikke brug for en enorm case statement, istedet kunne du definere din max random værdi således
max=`ls $wallpaperdir | wc -l`
og sætte en wallpaper variabel således
wallpaper=`ls $wallpaperdir | tail -n $randomnumber | head -n 1`
så skal du heller ikke ændre noget hvis du tilføjer billeder til mappen
Re: Re: Crontab og bash script
Re: Crontab og bash script
Re: Crontab og bash script
Re: Crontab og bash script
Jeg tænkte lidt på at lave et loop, der fungerede som en timer. Desværre tror jeg det vil belaste ret meget.
while [ 1 ]; do #kodesleep
while [ 1 ]; do
#kode
sleep $interval
done
sleep kræver ikke noget af systemet, så det kan du fint gøre.
Men nu blev jeg nysgerrig, og som jeg tænkte, så har det noget at gøre med environment variabler, der ikke bliver opdateret når cron kører showet.
her et et link til en fyr der vil præcis det samme som dig, og derfor har kastet sig ud i at tilføje dbus signaler i hans cronjob. Desuden er hans random wallpaper funktion er kogt ned til en simpel "find | sort | tail"
http://atutility.com/2008/11/26/change-background-wallpaper-randomly-on…
Re: Crontab og bash script
Re: Crontab og bash script