Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Cronu se nechce pouštět script.  (Přečteno 1684 krát)

zatnaktel

  • Návštěvník
  • Příspěvků: 89
  • Linux, Twitter, photographing, nature...
    • About me
Cronu se nechce pouštět script.
« kdy: 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.
« Poslední změna: 08 Října 2012, 19:17:18 od zatnaktel »
LinuxMint 14 Nadia, Twitter, foto, IT, příroda...

zatnaktel

  • Návštěvník
  • Příspěvků: 89
  • Linux, Twitter, photographing, nature...
    • About me
Re:Cronu se nechce pouštět script.
« Odpověď #1 kdy: 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á.
« Poslední změna: 08 Října 2012, 20:17:23 od zatnaktel »
LinuxMint 14 Nadia, Twitter, foto, IT, příroda...

menganito

  • Závislák
  • ***
  • Příspěvků: 1728
Re:Cronu se nechce pouštět script.
« Odpověď #2 kdy: 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.

zatnaktel

  • Návštěvník
  • Příspěvků: 89
  • Linux, Twitter, photographing, nature...
    • About me
Re:Cronu se nechce pouštět script.
« Odpověď #3 kdy: 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.
LinuxMint 14 Nadia, Twitter, foto, IT, příroda...

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Cronu se nechce pouštět script.
« Odpověď #4 kdy: 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;

zatnaktel

  • Návštěvník
  • Příspěvků: 89
  • Linux, Twitter, photographing, nature...
    • About me
Re:Cronu se nechce pouštět script.
« Odpověď #5 kdy: 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!!
LinuxMint 14 Nadia, Twitter, foto, IT, příroda...

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Cronu se nechce pouštět script.
« Odpověď #6 kdy: 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?

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cronu se nechce pouštět script.
« Odpověď #7 kdy: 09 Října 2012, 16:46:23 »
Kód: [Vybrat]
su $jmeno_uzivatele -c "$nejaky_prikaz"
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

zatnaktel

  • Návštěvník
  • Příspěvků: 89
  • Linux, Twitter, photographing, nature...
    • About me
Re:Cronu se nechce pouštět script.
« Odpověď #8 kdy: 09 Října 2012, 17:38:14 »
cvlc to bez okna nezvládne?

No, spouštím cvlc, ale vždycky vyhodí XVideo output.
LinuxMint 14 Nadia, Twitter, foto, IT, příroda...

menganito

  • Závislák
  • ***
  • Příspěvků: 1728
Re:Cronu se nechce pouštět script.
« Odpověď #9 kdy: 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

zatnaktel

  • Návštěvník
  • Příspěvků: 89
  • Linux, Twitter, photographing, nature...
    • About me
Re:Cronu se nechce pouštět script.
« Odpověď #10 kdy: 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.
« Poslední změna: 09 Října 2012, 21:29:44 od zatnaktel »
LinuxMint 14 Nadia, Twitter, foto, IT, příroda...

menganito

  • Závislák
  • ***
  • Příspěvků: 1728
Re:Cronu se nechce pouštět script.
« Odpověď #11 kdy: 10 Října 2012, 09:17:51 »
Mozes este upravit nazov threadu: na koniec pridaj "[vyreseno]", aby bolo jasne, ze je vsetko jasne.

 

Provoz zaštiťuje spolek OpenAlt.