Sida 1 av 1
Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 13:49
av BadOmen
Hej.
Jag kör det här skriptet för att kolla om skärmsläckaren är igång och om den inte är igång så ska mocp börja spela musik.
Jag autostartar moc i server mode när jag startar datorn (mocp -S) så jag vet att den är igång.
Om jag kör detta skript utan crontab så fungerar det som det ska. Jag har testat sleep 50s; skriptet för att se att de reagerar som det ska ifall skärmsläckaren körs och det verkar fungera som det ska.
Så det är bara när jag kör det i crontabsom det strular.
Kod: Markera allt
#!/bin/bash
if gnome-screensaver-command -q | grep -w -q inaktiv ; then
mocp -p
fi
Så här ser crontab ut nu.
Kod: Markera allt
# m h dom mon dow command
36 12 * * * /bin/bash /home/jonas/Dokument/programmering/JonasBash/crontabmocp.sh
Vad har jag gjort för fel?
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 14:22
av johanre
Rent generellt för felsökning av fel i cron:
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 15:24
av BadOmen
Okej, men det verkar inte vara nåt fel där eller saknas nått?
Så här ser det ut:
Dec 13 14:20:35 jonas-laptop crontab[2376]: (jonas) BEGIN EDIT (jonas)
Dec 13 14:20:58 jonas-laptop crontab[2376]: (jonas) REPLACE (jonas)
Dec 13 14:20:58 jonas-laptop crontab[2376]: (jonas) END EDIT (jonas)
Dec 13 14:21:01 jonas-laptop cron[1175]: (jonas) RELOAD (crontabs/jonas)
Dec 13 14:21:01 jonas-laptop CRON[2389]: (jonas) CMD (/bin/bash /home/jonas/Dokument/programmering/JonasBash/crontabmocp.sh)
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 15:42
av Osprey
Utan att känna till något om mocp så misstänker jag att det kan vara något sådant fel med att den inte vet var den ska spela musiken, typ när $DISPLAY är odefinierad för grafik/video...
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 15:54
av BadOmen
Osprey skrev:Utan att känna till något om mocp så misstänker jag att det kan vara något sådant fel med att den inte vet var den ska spela musiken, typ när $DISPLAY är odefinierad för grafik/video...
Det borde inte vara det felet för jag kan sätta in mocp -p kommandot direkt i crontab och få det att fungera men jag kan inte få det att fungera inuti bash skriptet om jag kör det via crontab. Kör jag skriptet direkt från terminalen så fungerar det.
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 15:58
av Osprey
BadOmen skrev:Det borde inte vara det felet för jag kan sätta in mocp -p kommandot direkt i crontab och få det att fungera men jag kan inte få det att fungera inuti bash skriptet om jag kör det via crontab. Kör jag skriptet direkt från terminalen så fungerar det.
Kan det vara så att skärmsläckaren blockerar ljudutgångarna.? vad händer om du vänder på villkoret i if-satsen och kör det utan att skärmsläckaren är aktiv..??
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 16:01
av Osprey
Hmmm... det var ju förresten ungefär just det du sa att du gjort och att det funkade, dvs. mocp direkt i crontab...
Men... det kan kanske vara så alltså att skärmsläckaren blockerar något...
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 16:25
av Konservburk
Felet du gör är att du inte kan testa skriptet rakt av i en terminal eftersom det inte blir likvärdigt med miljön i cron. Testa istället att köra skriptet utan någon miljö alls så ser du nog vad som fattas:
Kod: Markera allt
env - /bin/bash /home/jonas/Dokument/programmering/JonasBash/crontabmocp.sh
Utan att ha testat själv så är mitt tips att du saknar
$DISPLAY. Jag tror knappast att
gnome-screensaver-command klarar sig utan den informationen. Skulle den mot förmodan göra det så får ändå problem eftersom det med största sannolikhet blir engelsk utdata, dvs
inactive istället för
inaktiv eftersom du saknar
$LANG eller motsvarande.
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 19:18
av johanre
Testade:
Kod: Markera allt
johan@omega:~$ env - /usr/bin/gnome-screensaver-command
** Message: Failed to connect to the D-BUS daemon: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
Så ja; gnome-screensaver-command behöver minst $DISPLAY
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 22:06
av BadOmen
Okej, jag har nog inte riktigt fattat hur crontab funkar det var därför jag trodde mitt test med sleep 50s så att skriptet kördes samtidigt som skärmsläckaren var på skulle vara ett bra test....
Kan jag få skriptet att fungera på nåt sett? Att få gnome-screensaver-command att använda $DISPLAY är det möjligt och hur i så fall?
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 22:28
av Osprey
Det är bara att lägga in "DISPLAY=ett-värde" i scriptet, så funkar den biten, och eventuellt även $LANG som har föreslagits...
Typ:
...så borde de två sakerna klara sig iaf...
Lite trixigare blir det om du har flera skärmar igång, men det går att lösa det med...
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 22:46
av Konservburk
Osprey skrev:Det är bara att lägga in "DISPLAY=ett-värde" i scriptet, så funkar den biten, och eventuellt även $LANG som har föreslagits...
Typ:
...så borde de två sakerna klara sig iaf...
Du måste exportera till miljön också om det ska fungera:
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 22:52
av Osprey
Konservburk skrev:Du måste exportera till miljön också om det ska fungera:
Jo just det ja...
Och om man vill förenkla så kan man (i bash (+några till)) lägga det direkt i tilldelningen som:
Kod: Markera allt
export DISPLAY=":0.0"
export LANG="sv_SE.utf8"
Re: Vad är fel på crontab/bash skriptet?
Postat: 13 dec 2010, 22:58
av johanre
Håller med Osprey. Med ett litet tillägg; jag har testat runt och det är inte $DISPLAY som behövs...
Surfat runt lite nu och hittat lösningen. Du behöver använda ett liknande tillvägaggångssätt som detta :
http://ubuntu-ky.ubuntuforums.org/showt ... p?t=632580
Re: Vad är fel på crontab/bash skriptet?
Postat: 16 dec 2010, 13:15
av BadOmen
Tack för svaren jag ska ta och testa det här nån dag när jag har lite mer tid. Det är rätt mycke nu som vanligt runt Jul

Re: Vad är fel på crontab/bash skriptet?
Postat: 16 dec 2010, 17:44
av BadOmen
Kunde ju inte låta bli att testa iaf
Det funkar bra att göra så här:
Kod: Markera allt
#!/bin/bash
export HOME="/home/användare"
export DISPLAY=":0.0"
export LANG="sv_SE.utf8"
if gnome-screensaver-command -q | grep -w -q inaktiv ; then
mocp -p
fi
Konservburk:
Denna lilla rad som du tipsade om var guld värd för att testa skirptet!
Kod: Markera allt
env - /bin/bash /home/jonas/Dokument/programmering/JonasBash/crontabmocp.sh