PDA

View Full Version : Crontab


Mike Patton
04-12-2003, 10:49
Ciao ragazzi
ho un problema con lo schedulatore crontab.
Premesso che ho come versione UNIX quella standard Compaq.

Il mio problema è:

Devo schedulare l'avvio di uno script che ho fatto in Korn shell e fin qui nn ho avuto problemi.
Praticamente il crontab lo lancia ogni 5 minuti come da me richiesto.
Il problema è che lo script l'ho fatto con l'utenza ora<SID> xkè mi deve lanciare sqlplus.
Invece il crontab , anche se creato tramite crontab -e da ora<SID> , ha i privilegi di root e quindi nn riesce a lanciare il sqlplus.

Il messaggio che mi manda via mail interna è:

+ ORACLE_HOME=/oracle/CWD/817_64
+ ORACLE_SID=CWD
+ export ORACLE_HOME ORACLE_SID
+ /oracle/CWD/817_64/sqlplus exportsap/expsapcoll@ifsap @/oracle/CWD/pagamenti_spd41.sql
/oracle/CWD/crontab_pagodiler.sh[9]: /oracle/CWD/817_64/sqlplus: cannot execute
+ /oracle/CWD/dilerspd41.sh
+ /oracle/CWD/817_64/sqlplus exportsap/expsapcoll@ifsap @/oracle/CWD/pagamenti_spd42.sql
/oracle/CWD/crontab_pagodiler.sh[14]: /oracle/CWD/817_64/sqlplus: cannot execute
+ /oracle/CWD/dilerspd42.sh
+ /oracle/CWD/817_64/sqlplus exportsap/expsapcoll@ifsap @/oracle/CWD/banche.sql
/oracle/CWD/crontab_pagodiler.sh[18]: /oracle/CWD/817_64/sqlplus: cannot execute
+ /oracle/CWD/banche.sh


La domanda è:

Come faccio a fargli avere i privilegi di ora<SID>?

Grazie

cogiac
04-12-2003, 10:52
hai provato con "su utente comando" ?

maxithron
04-12-2003, 10:55
non ho capito bene questo passaggio:

Originariamente inviato da Mike Patton
Invece il crontab , anche se creato tramite crontab -e da ora<SID> , ha i privilegi di root e quindi nn riesce a lanciare il sqlplus.

Cioè...il root non ha i privilegi per sqlplus?

Mike Patton
04-12-2003, 11:11
ebbene si...root nn ha i permessi x sqlplus

Mike Patton
04-12-2003, 11:15
Originariamente inviato da cogiac
hai provato con "su utente comando" ?

Dovrei mettere nel crontab

* * * * * su <utente> <comando>?

cogiac
04-12-2003, 11:21
prova..

Mike Patton
04-12-2003, 11:26
Allora se metto l' su <utente> <comando> e vado a vedere la mail
di ora<SID> vedo che rimane in attesa della password e quindi nn gira.
A me servirebbe fargli passare sti benedetti privilegi...

Magari si potrebbero passare le variabili di ambiante del profilo di ora<SID>...l'ho sparata così...

gurutech
04-12-2003, 11:53
su utente nomecomando
lo devi mettere nel crontab di root

root puo' lanciare "su" senza aver richieste di password

Mike Patton
04-12-2003, 12:17
ci provo :)

Mike Patton
04-12-2003, 13:32
L'ho messo e questo è il messaggio nella mail di root


Warning: no access to tty; thus no job control in this shell...
stty: tcgetattr: Not a typewriter
set: Variable name must begin with a letter.
logout


Nn capisco cosa voglia...
:(

Mike Patton
04-12-2003, 16:29
Allora

x risolvere il problema si fa così:

Dentro allo script in Korn shell (o C shell) si passano tutte le variabili di ambiente dell'utenza ora<SID>

X saperle basta digitare printenv

Poi il tutto funge :D

gurutech
04-12-2003, 17:48
Originariamente inviato da Mike Patton
L'ho messo e questo è il messaggio nella mail di root


Warning: no access to tty; thus no job control in this shell...
stty: tcgetattr: Not a typewriter
set: Variable name must begin with a letter.
logout


Nn capisco cosa voglia...
:(

se hai risolto ok, ma mi viene in mente chen puoi provare con

su - {utente} -c {comando}

il trattino dopo su vuol dire che ti imposta le var. di ambiente come se avessi fatto login.
per più dettagli ti rimando alla pagina man di su nel tuo sistema.

Mike Patton
05-12-2003, 11:23
Si poteva anche mettere ma restava in attesa di un comando dopo aver cambiato utente...
Cmq forzandogli le variabili di ambiente dentro ho risolto.

cn73
05-12-2003, 12:59
Quando di esegue uno script da crontab, bisogna sempre ricordarsi che le variabili di ambiente definite per il nostro utente, non sono più valide, anzi praticamente non sono settate. Quindi negli script bisogna sempre inizializzarle e se il caso esportarle (se vogliamo ad es che uno script successivo le riconosca).