Vad är fel på crontab/bash skriptet?

Här diskuteras programmering och utveckling
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Vad är fel på crontab/bash skriptet?

Inlägg 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?
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: Vad är fel på crontab/bash skriptet?

Inlägg av johanre »

Rent generellt för felsökning av fel i cron:

Kod: Markera allt

grep cron /var/log/syslog
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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)
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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.
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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..??
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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.
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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?
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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:

Kod: Markera allt

DISPLAY=":0.0"
LANG="sv_SE.utf8"
...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...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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:

Kod: Markera allt

DISPLAY=":0.0"
LANG="sv_SE.utf8"
...så borde de två sakerna klara sig iaf...
Du måste exportera till miljön också om det ska fungera:

Kod: Markera allt

export DISPLAY LANG
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Vad är fel på crontab/bash skriptet?

Inlägg av Osprey »

Konservburk skrev:Du måste exportera till miljön också om det ska fungera:

Kod: Markera allt

export DISPLAY LANG
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"
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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 :)
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: Vad är fel på crontab/bash skriptet?

Inlägg 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
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Skriv svar

Återgå till "Programmering och webbdesign"