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: Cron nespouští vytvořený script [Vyřešeno]  (Přečteno 2845 krát)

Mayki

  • Návštěvník
  • Příspěvků: 6
Cron nespouští vytvořený script [Vyřešeno]
« kdy: 17 Září 2014, 20:08:25 »
Ahoj všichni,
předem předesílám že jsem úplný začátečník. Můj problém se týká Raspberry Pi na kterém běží systém RaspBmc. Vím že to není čistý Linux (asi), ale snad mi tady někdo poradí. Na této stránce :
http://www.linux-tips-and-tricks.de/de/raspberry/23-pi-erstellt-automatisch-backups-von-sich-selbst-pi-creates-automatic-backups-of-itself/#English
jsem si stáhl script pro zálohování SD karty v Raspberry, script samotný mi korektně nefungoval a tak jsem si vytvořil ještě malý script backup.sh, pomocí kterého to zálohování spouštím :
Kód: [Vybrat]
#!/bin/bash
 
sudo mount 192.168.0.101:/volume1/Backup /backup -o nolock

sudo service php5-fpm stop

sudo raspiBackup.sh -p /backup -t tar -k 7 -o "service xbmc stop" -a "service xbmc start"

sudo service php5-fpm restart
Jde mi o to, že napřed musím připojit složku v NASu, potom zastavit jednu službu která mi brání v zálohování a teprve potom se korektně provede záloha z původního scriptu raspiBackup.sh
Tohle všechno funguje bez problému pokud to spustím přes PUTTY příkazem
Kód: [Vybrat]
/home/pi/backup.sh Pokud tuto úlohu nastavím v Cronu pro automatické zálohování tak toto nikdy korektně neproběhne, vypozoroval jsem, že se pouze připojí NAS, ale už se nezastaví služba a ani neprovede záloha. Cron mám v nastastavení zapnutý, už jím spouštím pravidelně jeden jiný script.
Kód: [Vybrat]
pi@raspbmc:~$ crontab -l
#
# m h  dom mon dow   command
45 19 * * * /home/pi/toggleHyperion.sh
10 19 * * 1,3,5 /home/pi/backup.sh
pi@raspbmc:~$
Nerozumím tomu, proč přes PUTTY všechno proběhne, ale Cron mi to už nespustí, poradíte?
« Poslední změna: 19 Září 2014, 19:25:47 od Mayki »

Cuore

  • Závislák
  • ***
  • Příspěvků: 2534
Re:Cron nespouští vytvořený script
« Odpověď #1 kdy: 17 Září 2014, 20:14:14 »
Co to sudo?

Mayki

  • Návštěvník
  • Příspěvků: 6
Re:Cron nespouští vytvořený script
« Odpověď #2 kdy: 17 Září 2014, 20:15:33 »
Můžeš to trochu rozvést? Nerozumím... ;)

Cuore

  • Závislák
  • ***
  • Příspěvků: 2534
Re:Cron nespouští vytvořený script
« Odpověď #3 kdy: 17 Září 2014, 20:41:14 »
No pokud je to obdoba ubuntu, tak pomocí sudo si propujčíš práva roota. Takže pokud to zadáš v terminálu chce to po tobě heslo a pak script proběhne. Pomocí cronu předpokládám, že script se bude spouštět pod rootem, takže to sudo bych smazal.

Mayki

  • Návštěvník
  • Příspěvků: 6
Re:Cron nespouští vytvořený script
« Odpověď #4 kdy: 17 Září 2014, 20:48:37 »
...Takže pokud to zadáš v terminálu chce to po tobě heslo a pak script proběhne. Pomocí cronu předpokládám, že script se bude spouštět pod rootem, takže to sudo bych smazal.
No, do terminálu se nemusím přihlásit jako root, stačí jako uživatel, zadám příkaz:
Kód: [Vybrat]
sudo /home/pi/backup.shPředtím jsem to špatně napsal, a script se spustí, žádné heslo to po mě nechce. Nicméně jsem pomazal všechny sudo ve scriptu backup.sh a stejně se to z Cronu nespustilo. Pro kontrolu jsem to teď spustil z terminálu a normálně to jede... :(
Kód: [Vybrat]
pi@raspbmc:~$ sudo /home/pi/backup.sh
--- raspbmc: raspiBackup.sh 0.5.4.1 started at Wed Sep 17 20:44:12 CEST 2014 ...
/dev/mmcblk0p1            4096      147455       71680    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          151552     3842047     1845248   83  Linux
--- Stopping services ...
xbmc stop/waiting
--- Starting services...
xbmc start/running, process 1912
--- raspbmc: raspiBackup.sh 0.5.4.1 finished at Wed Sep 17 20:49:23 CEST 2014 ...
--- Backup finished successfully
[ ok ] Restarting PHP5 FastCGI Process Manager: php5-fpm.
pi@raspbmc:~$
Edit: tak ještě jinak, když jsem smazal všechna "sudo", musím to spouštět :
Kód: [Vybrat]
sudo /home/pi/backup.shkdyž tam "sudo" nechám, tak to jde spustit :
Kód: [Vybrat]
/home/pi/backup.shNicméně Cron pořád nic... >:(
« Poslední změna: 17 Září 2014, 20:54:52 od Mayki »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Cron nespouští vytvořený script
« Odpověď #5 kdy: 17 Září 2014, 20:54:21 »
Pokud je třeba skript spouštět pod rootem, tak bude dobré ten skript spouštět z cronu roota, tedy:
Kód: [Vybrat]
sudo crontab -ejinak se asi těžko domůže práv.

Mayki

  • Návštěvník
  • Příspěvků: 6
Re:Cron nespouští vytvořený script
« Odpověď #6 kdy: 17 Září 2014, 21:16:39 »
Tak jem to nastavil v root cronu a zase nic, neproběhlo to, pouze se připojila složka NASu...
Kód: [Vybrat]
pi@raspbmc:~$ sudo crontab -l
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
10 21 * * * /home/pi/backup.sh
pi@raspbmc:~$

jmp

  • Host
Re:Cron nespouští vytvořený script
« Odpověď #7 kdy: 18 Září 2014, 06:50:26 »
doplňte v tom skriptu cesty
kde je binárka mount zjistíte takto:
Kód: [Vybrat]
which mountkde je binárka service zjistíte takto:
Kód: [Vybrat]
which service...

EDIT: nebo můžete v crontabu doplnit proměnnou PATH tak, aby to všechno fungovalo (v defautu není tato proměnná v crontabu nastavena)
« Poslední změna: 18 Září 2014, 06:53:06 od jmp »

menganito

  • Závislák
  • ***
  • Příspěvků: 1728
Re:Cron nespouští vytvořený script
« Odpověď #8 kdy: 18 Září 2014, 08:38:06 »
Len podotknem, ze so sudom si nemusis lamat hlavu, raspbmc ma defaultne sudo na all NOPASSWD, cize heslo zadavat nemusi a roota dostane.

Mayki

  • Návštěvník
  • Příspěvků: 6
Re:Cron nespouští vytvořený script
« Odpověď #9 kdy: 19 Září 2014, 18:30:05 »
doplňte v tom skriptu cesty
kde je binárka mount zjistíte takto:
Kód: [Vybrat]
which mountkde je binárka service zjistíte takto:
Kód: [Vybrat]
which service...

EDIT: nebo můžete v crontabu doplnit proměnnou PATH tak, aby to všechno fungovalo (v defautu není tato proměnná v crontabu nastavena)
Vypsalo mi to tohle :
Kód: [Vybrat]
pi@raspbmc:~$ which mount
/bin/mount
pi@raspbmc:~$ which service
/usr/sbin/service
Můžete mi poradit jak by ten script měl teda vypadat? Když jsem udělal něco takového tak to nefungovalo :
Kód: [Vybrat]
#!/bin/bash
 
sudo /bin/mount 192.168.0.101:/volume1/Backup /backup -o nolock

sudo service php5-fpm stop

sudo usr/local/bin/raspiBackup.sh -p /backup -t tar -k 7 -o "service xbmc stop" -a "service xbmc start"

sudo /usr/sbin/service php5-fpm restart
Nebo jak přesně v crontabu doplnit proměnnou PATH tak, aby to všechno fungovalo?

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Cron nespouští vytvořený script
« Odpověď #10 kdy: 19 Září 2014, 18:53:42 »
Začal bych tím, že si opravíš a doplníš ty cesty k příkazům. U prvního service ti chybí úplně a u toho backup skriptu nemáš na začátku lomítko.

Případně si ještě vyexportovat tu proměnnou PATH. V normálním terminálu spusť příkaz:
Kód: [Vybrat]
echo $PATHa výsledek použij v Cronu:
Kód: [Vybrat]
export PATH='to co ti vypsalo to echo'; /home/pi/backup.sh
Edit: sloučil jsem dva příspěvky
« Poslední změna: 19 Září 2014, 19:31:11 od GdH »

Mayki

  • Návštěvník
  • Příspěvků: 6
Re:Cron nespouští vytvořený script
« Odpověď #11 kdy: 19 Září 2014, 19:25:04 »
Script jsem teda upravil takto:
Kód: [Vybrat]
#!/bin/bash
 
sudo /bin/mount 192.168.0.101:/volume1/Backup /backup -o nolock

sudo /usr/sbin/service php5-fpm stop

sudo /usr/local/bin/raspiBackup.sh -p /backup -t tar -k 7 -o "service xbmc stop" -a "service xbmc start"

sudo /usr/sbin/service php5-fpm restart
Kód: [Vybrat]
echo $PATHTak tento příkaz mi vypsal toto..
Kód: [Vybrat]
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/opt/vc/bin:/home/pi/.xbmc-current/xbmc-bin/binZápis v Cronu má teda vypadat takto:
Kód: [Vybrat]
10 19 * * 1,3,5 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/opt/vc/bin:/home/pi/.xbmc-current/xbmc-bin/bin; /home/pi/backup.sh
Tak teď poprvé zálohování z Cronu proběhlo celé a v pořádku... ;)
Chtěl bych poděkovat za ochotu a trpělivost, díky... :D ;D :D

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Cron nespouští vytvořený script [Vyřešeno]
« Odpověď #12 kdy: 19 Září 2014, 19:37:11 »
Tak fajn. Jak tam máš obsah $PATH z klasického uživatelského terminálu, tak jsou absolutní cesty k příkazům zbytečné, ale každopádně ničemu neškodí, teoreticky spíš naopak.

 

Provoz zaštiťuje spolek OpenAlt.