Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: zatnaktel 08 Října 2012, 17:34:48

Název: Cronu se nechce pouštět script.
Přispěvatel: zatnaktel 08 Října 2012, 17:34:48
Zdravím, zajímalo by mě, zda-li se někdo už setkal s tímto problémem a jestli někdo neví, jak by to šlo vyřešit.

Abych to nějak uvedl, snažil jsem se napsat script, co pomocí vlc prefix vyfotí obrázek z v4l2 a následně ho odešle přes ftp na můj server, kde se poté zobrazuje.

Script sám o sobě funguje správně, ale kvůli vlc se nesmí spustit pod rootem.

Tento script jsem pomocí cronu nastavil na spouštění každých 10m, upload proběhl, ale foto se nové neudělalo, protože cron to podle všeho spouští defaultně pod rootem, takže jsem nastavil spouštění pod uživatelem normálním. Tedy...

Kód: [Vybrat]
*/10 * * * * zatnaktel /home/zatnaktel/Obrázky/Webcam/live/shotnupload.sh
V tom momentě cron přestal cokoli dělat. Už ani neobnovoval soubory na serveru, prostě vůbec script nespustil. Adresa ke scriptu je správná, tudíž vůbec netuším, čím by to mohlo být.

Dokázal by někdo poradit? Děkuju moc, Zat.

EDIT: Do cronu jsem schválně nahodil...

Kód: [Vybrat]
zatnaktel@Toaster ~ $ crontab -l
# m h  dom mon dow   command
*/10 * * * * zatnaktel /home/zatnaktel/Obrázky/Webcam/live/shotnupload.sh
* * * * * zatnaktel /home/zatnaktel/Obrázky/Webcam/live/testiq.sh #...TENTO...

... script vypadající následovně:

Kód: [Vybrat]
#!/bin/bash

cd /home/zatnaktel/Obrázky/Webcam/live/

cp logo.png logon.png

Tzn. zkopíruje ve složce obrázek logo.png, ale po dvou hodinách tam logon.png pořád jaksi není. CRON přitom spuštěn opravdu je.
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: zatnaktel 08 Října 2012, 20:06:42
No sakryš, zkusil jsem odstranit uživatele v cronu, mezi časem a adresou k scriptu a vše začalo fungovat. Ale já potřebuju nastavit, aby se script v cronu nespouštěl pod rootem, dokáže mi někdo poradit, jak na to? Díky.

EDIT: Když v crontab nenastavím uživatele, script sice funguje, ale vlc se nespustí a obrázek nevyfotí. Někde jsem se dočetl, že u vlc pomáhá --rc-fake-tty, ani nevím, kde jsem to vlastně našel, ale vůbec to nepomáhá.
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: menganito 08 Října 2012, 20:36:24
Crontab spúšťa skripty s takými právami a pod takým užívateľom, ako ho Ty edituješ. Je možné, že tomu VLC sa nepáči, že ho spúšťaš v termináli, skús namiesto toho príkaz cvlc, ktoré ide bez GUI.
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: zatnaktel 08 Října 2012, 21:14:36
Crontab spúšťa skripty s takými právami a pod takým užívateľom, ako ho Ty edituješ. Je možné, že tomu VLC sa nepáči, že ho spúšťaš v termináli, skús namiesto toho príkaz cvlc, ktoré ide bez GUI.

S cvlc je to to samé. V terminálu to normálně jde, ale přes cron ne.
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: GdH 08 Října 2012, 23:51:12
Pokud pracuješ s displejem, je potřeba nastavit proměnnou $DISPLAY, ta v prostředí cronu nastavena není. Běžně je na lokálním stroji výchozí display :0, zjistíš z terminálu příkazem:
Kód: [Vybrat]
echo $DISPLAYPak před příkaz přidáš:
Kód: [Vybrat]
export DISPLAY=:0;
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: zatnaktel 09 Října 2012, 15:08:31
Pomohlo! :) Díky ti. Ale mám dotaz, když to fotím přes vlc, vyskočí okno, ve kterém se zobrazí output s obrázkem. (XVideo output). Existuje možnost, že bych to hodil na nějaký jiný existující displej, aby mi to tu každou chvilku nevyskakovalo a nebránilo v práci?

Ale fakt díky!!
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: GdH 09 Října 2012, 16:08:19
Pomohlo! :) Díky ti. Ale mám dotaz, když to fotím přes vlc, vyskočí okno, ve kterém se zobrazí output s obrázkem. (XVideo output). Existuje možnost, že bych to hodil na nějaký jiný existující displej, aby mi to tu každou chvilku nevyskakovalo a nebránilo v práci?

Ale fakt díky!!

cvlc to bez okna nezvládne?
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: ntz_reloaded 09 Října 2012, 16:46:23
Kód: [Vybrat]
su $jmeno_uzivatele -c "$nejaky_prikaz"
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: zatnaktel 09 Října 2012, 17:38:14
cvlc to bez okna nezvládne?

No, spouštím cvlc, ale vždycky vyhodí XVideo output.
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: menganito 09 Října 2012, 18:43:46
Kód: [Vybrat]
cvlc -V dummy by mal cvlc povedat, nech ide bez outputu. http://wiki.videolan.org/Video_Output#dummy
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: zatnaktel 09 Října 2012, 21:21:28
Kód: [Vybrat]
cvlc -V dummy by mal cvlc povedat, nech ide bez outputu. http://wiki.videolan.org/Video_Output#dummy

Přesně tak to je! Vše jde, jak má, až na to, že když si teď spustím normálně vlc, abych si přehrál film, po minutě se mi ukončí (v době, kdy se spouští script).


Script cvlc vypadá takhle:
Kód: [Vybrat]
cvlc -V dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/zatnaktel/Obrázky/Webcam/live --scene-prefix image_prefix --scene-format jpg vlc://quit --run-time=1

EDIT: Takže to bylo způsobeno tím, jak jsem velice brzy zjistil, že jsem měl v nastavení dáno Allow ony one instance, takže bylo dost logické, co to dělalo. Tím pádem je vše vyřešeno a mně nezbývá, než vám poděkovat a popřát krásnej večer. Děkuju moc.
Název: Re:Cronu se nechce pouštět script.
Přispěvatel: menganito 10 Října 2012, 09:17:51
Mozes este upravit nazov threadu: na koniec pridaj "[vyreseno]", aby bolo jasne, ze je vsetko jasne.