Portál AbcLinuxu, 10. května 2025 04:54

Dotaz: CentOS - CRON a spuštění scriptu s RAKE

31.10.2013 11:11 Vodny | skóre: 8
CentOS - CRON a spuštění scriptu s RAKE
Přečteno: 470×
Odpovědět | Admin
Zdravím všechny co navštíví toto vlákno.

mám jednoduchý script viz níže.

#!/bin/bash
cd /var/www/html/redmin; rake redmine:check_periodictasks RAILS_ENV='production'

Pokud

cd /var/www/html/redmine; rake redmine:check_periodictasks RAILS_ENV="production"

spustím z příkazové řádky tak to funguje dobře. Pokud to ale hodím do cronu, tak to nefunguje. Může mě někdo prosím postrčit?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.10.2013 11:19 axel
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nefunguje je ponekud nicnerikajici. Obvyklym problemem je, ze pro cron se nespousti nektere scripty. Kde se nachazi soubor rake? Pokud neni v adresari /var/www/html/redmin, muze byt treba zadat absolutni cestu.
31.10.2013 11:24 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neni tam preklep v 'redmin' vs 'redmine'?
31.10.2013 11:30 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Zdravím. Překlepu jsem se všiml ale tím to není. V logu je command not found. Takže bych to viděl na předchozí odpověď ohledně cesty.

příkaz rake je v /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake

31.10.2013 11:32 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Jasne, zadat absolutni cestu k 'rake' prikazu.
31.10.2013 11:33 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Tedy do toho scriptu přidám PATH: /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake ?
31.10.2013 11:39 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Ja bych tam prsknul tohle:
cd /var/www/html/redmine;  /usr/bin/rake redmine:check_periodictasks RAILS_ENV='production'
V zavislosti na tom, kde je rake binarka. Zjistis pomoci `whereis rake`.

Ta cesta, co posilas je nejaka divna.

31.10.2013 11:45 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
which rake mi vrátí /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake

Neměl si namysli tedy

cd /var/www/html/redmine; /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake redmine:check_periodictasks RAILS_ENV='production'

31.10.2013 11:47 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Jo, muze byt.
31.10.2013 11:49 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Jde to ale jen když to spustím ručně. Možná bych se podíval do možností CRONU v CRONTAB. Tam je taky nějaká path atp.

Sakra taková nějaká jednoduchá věc a tolika času.
31.10.2013 12:04 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Tak posli vypis tehle prikazu:
ls -al /var/www/html/redmine
ls -al /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake
cat /etc/crontab
31.10.2013 12:07 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
A zkus vyescapovat toho zavinace. Neco jako \@
31.10.2013 14:22 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
[root@lineroc-druhy ~]# ls -la /var/www/html/redmine
total 96
drwxrwxrwx 17 apache apache 4096 Oct  7 15:58 .
drwxr-xr-x  3 root   root   4096 Oct  7 15:41 ..
drwxrwxrwx  7 apache apache 4096 Sep 14 08:48 app
drwxr-xr-x  2 root   root   4096 Oct  7 15:53 .bundle
drwxrwxrwx  5 apache apache 4096 Oct 14 16:56 config
-rwxrwxrwx  1 apache apache  160 Sep 14 08:48 config.ru
drwxrwxrwx  3 apache apache 4096 Oct  7 15:59 db
drwxrwxrwx  2 apache apache 4096 Sep 14 08:48 doc
drwxrwxrwx  5 apache apache 4096 Sep 14 08:48 extra
drwxrwxrwx  2 apache apache 4096 Sep 14 08:48 files
-rwxrwxrwx  1 apache apache 3119 Sep 14 08:48 Gemfile
-rw-r--r--  1 root   root   3450 Oct  8 16:43 Gemfile.lock
-rwxrwxrwx  1 apache apache  597 Sep 14 08:48 .gitignore
-rwxrwxrwx  1 apache apache  593 Sep 14 08:48 .hgignore
drwxrwxrwx  8 apache apache 4096 Sep 14 08:48 lib
drwxrwxrwx  2 apache apache 4096 Oct 21 17:18 log
drwxrwxrwx  4 apache apache 4096 Oct 10 13:21 plugins
drwxrwxrwx  8 apache apache 4096 Oct  8 16:43 public
-rwxrwxrwx  1 apache apache  275 Sep 14 08:48 Rakefile
-rwxrwxrwx  1 apache apache  205 Sep 14 08:48 README.rdoc
drwxrwxrwx  2 apache apache 4096 Sep 14 08:48 script
drwxrwxrwx  9 apache apache 4096 Sep 14 08:48 test
drwxrwxrwx  8 apache apache 4096 Sep 14 08:48 tmp
drwxrwxrwx  2 apache apache 4096 Sep 14 08:48 vendor

[root@lineroc-druhy ~]# ls -la /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/
total 24
drwxrwsr-x 2 root rvm 4096 Oct  7 15:27 .
drwxrwsr-x 7 root rvm 4096 Oct  7 15:26 ..
-rwxr-xr-x 1 root rvm  396 Oct  7 15:26 bundle
-rwxr-xr-x 1 root rvm  539 Oct  7 15:26 executable-hooks-uninstaller
-rwxr-xr-x 1 root rvm  385 Oct  7 15:27 rake
-rwxrwxr-x 1 root rvm  368 Oct  7 15:26 ruby_executable_hooks
[root@lineroc-druhy ~]#

[root@lineroc-druhy ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake


# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
* * * * *       root    /root/red.sh > /var/log/redmine.log
[root@lineroc-druhy ~]#

31.10.2013 14:44 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Tak jeste prosim:
ls -al /root/red.sh
cat /root/red.sh
31.10.2013 15:06 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
[root@lineroc-druhy ~]# ls -la /root/red.sh
-rwxrwxrwx 1 root root 259 Oct 31 15:04 /root/red.sh
[root@lineroc-druhy ~]# cat /root/red.sh
#!/bin/bash

#PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/gems/ruby-1.9.3-p448\@global/bin
cd /var/www/html/redmine; /usr/local/rvm/gems/ruby-1.9.3-p448@global/bin/rake redmine:check_periodictasks RAILS_ENV='production' 2>&1
echo "Good morning, world."
[root@lineroc-druhy ~]#

31.10.2013 15:16 none
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Tak ja nevim :). Zkusil bych vyhodit ten redirect na konci "2>&1" at vydis vystup. Jak overujes (podle ceho poznas), ze to probehlo/neprobehlo)? Prijde ti zprava "Good morning, world."? Bezi ti cron? Co je ve /var/log/cron?
ps aux|grep -i cron
tail -n 50 /var/log/cron
tail -n 50 /var/spool/mail/root
31.10.2013 15:32 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Ano ano, CRON šlape dobře. Good morning jsem viděl asi už tisíckrát v logu. Ale Rake command se prostě nevykoná
31.10.2013 16:43 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Odpovědět | | Sbalit | Link | Blokovat | Admin
Matně si vzpomínán, nechce to náhodou prázdnou řádku na koci scriptu cronu. Možná jen odřádkování.
31.10.2013 21:15 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Cron jede tam bych problém neviděl a odřádkování na konci řádku mám.

Problém je, že cron to spouští něják jinak než já když dám ve složce root ./red.sh Vše se provede vše funguje. Když to ale nechám spustit pod cronem s pravy roota tak rake command not found:-( fakt bych to potřeboval rozběhnout...
31.10.2013 22:15 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Aco tam dát
/root/red.sh
případně
/red.sh
podle toho co myslíš tím
když dám ve složce root ./red.sh ..
1.11.2013 08:12 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Nepročítal jsem to tady nějak pečlivě, ale v cronu zkrátka nejsou nastaveny všechny cesty jako v interaktivním shellu.

Vypiš si proměnnou $PATH v cronu a uvidíš. Já mám jen /usr/bin:/bin

Pak musíš příkazy, které nejsou v PATH buď volat s celou cestou a nebo si napřed v crontabu tu PATH upravit.
Řešení 1× (Vodny (tazatel))
5.11.2013 11:13 Vodny | skóre: 8
Rozbalit Rozbalit vše Re: CentOS - CRON a spuštění scriptu s RAKE
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak problém vyřešen. Byla to směs několika problémů.

Pomohlo několik správně vložených symlinků, rozšíření proměnné PATH,a doplnění do scriptu GEM_Home=which gem.

Děkuju všem za pomoc :-) a určitě se tu zase na nějakou blbost zeptám.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.