Pb crontab
Résolu/Fermé
audrey
-
9 déc. 2008 à 11:54
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 12 déc. 2008 à 16:15
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 12 déc. 2008 à 16:15
12 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 13:14
9 déc. 2008 à 13:14
hello
le job dans crontab n'a pas l'envronnement du login, mettre au début du script
source ~/.profile
le job dans crontab n'a pas l'envronnement du login, mettre au début du script
source ~/.profile
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 14:16
9 déc. 2008 à 14:16
que fait cette ligne ?
exp alerte/alerte file=export_base_$a.dmp owner=ALERTE
exp alerte/alerte file=export_base_$a.dmp owner=ALERTE
C'est elle qui réalise un export de la base oracle sous forme de fichier.dmp
Le nom du fichier créé par cette ligne de commande est export_base_date_du_jour.dmp
Je me demandais en revanche à quel endroit allait être déposé ce fichier.
J'ai supposé que ce serait dans le répertoire où s'exécute le script mais je n'en suis pas sûre...
Audrey
Le nom du fichier créé par cette ligne de commande est export_base_date_du_jour.dmp
Je me demandais en revanche à quel endroit allait être déposé ce fichier.
J'ai supposé que ce serait dans le répertoire où s'exécute le script mais je n'en suis pas sûre...
Audrey
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 14:37
9 déc. 2008 à 14:37
ca doit être dans le home directory de l 'utilisateur oracle
voir se qui se passe
45 11 * * 1,2,3,4,5 bash /home/oracle/export/export_base >> log 2>&1
voir se qui se passe
45 11 * * 1,2,3,4,5 bash /home/oracle/export/export_base >> log 2>&1
J'ai modifié le crontab comme spécifié.
Sous /home/oracle, j'ai bien un fichier log2 mais il est vide...
J'ai ajouté dans mon script un
echo toto > toto.txt
Et le fichier toto.txt apparaît bien dans /home/oracle
Ca doit donc être la ligne d'export qui ne fonctionne pas quand elle est exécutée depuis crontab, il doit lui manquer un paramètre...
Audrey
Sous /home/oracle, j'ai bien un fichier log2 mais il est vide...
J'ai ajouté dans mon script un
echo toto > toto.txt
Et le fichier toto.txt apparaît bien dans /home/oracle
Ca doit donc être la ligne d'export qui ne fonctionne pas quand elle est exécutée depuis crontab, il doit lui manquer un paramètre...
Audrey
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 14:53
9 déc. 2008 à 14:53
certainement des variables d'environnement pour Oracle
mettre
set
dans le script et comparer avec un set dans un login
mettre
set
dans le script et comparer avec un set dans un login
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 15:01
9 déc. 2008 à 15:01
dans le script, ca va capturer l'environnement dans le fichier log
Voici le fichier log2 :
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i586-suse-li
nux")
BASH_VERSION='2.05b.0(1)-release'
DIRSTACK=()
EUID=59
GROUPS=()
HOME=/home/oracle
HOSTNAME=titux
HOSTTYPE=i586
IFS=$' \t\n'
LOGNAME=oracle
MACHTYPE=i586-suse-linux
OPTERR=1
OPTIND=1
ORACLE_HOME=/home/oracle/oracle-9.2.0.4
ORACLE_SID=titan2
OSTYPE=linux
PATH=/usr/bin:/bin
PPID=24931
PS4='+ '
PWD=/home/oracle
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
TERM=dumb
UID=59
_=bash
Audrey
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i586-suse-li
nux")
BASH_VERSION='2.05b.0(1)-release'
DIRSTACK=()
EUID=59
GROUPS=()
HOME=/home/oracle
HOSTNAME=titux
HOSTTYPE=i586
IFS=$' \t\n'
LOGNAME=oracle
MACHTYPE=i586-suse-linux
OPTERR=1
OPTIND=1
ORACLE_HOME=/home/oracle/oracle-9.2.0.4
ORACLE_SID=titan2
OSTYPE=linux
PATH=/usr/bin:/bin
PPID=24931
PS4='+ '
PWD=/home/oracle
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
TERM=dumb
UID=59
_=bash
Audrey
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 15:13
9 déc. 2008 à 15:13
est ce que ca correspond à un set après un login ou le script fonctionne ?
A peu près...
Il y a des infos en plus quand je fais set sur un login qui fonctionne :
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i586-suse-li
nux")
BASH_VERSION='2.05b.0(1)-release'
COLORTERM=1
COLUMNS=80
CPU=i686
DIRSTACK=()
EUID=59
GNOMEDIR=/opt/gnome
GNOME_PATH=:/opt/gnome:/usr
GROUPS=()
HISTCONTROL=ignoredups
HISTFILE=/home/oracle/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/home/oracle
HOST=titux
HOSTFILE=
HOSTNAME=titux
HOSTTYPE=i386
IFS=$' \t\n'
INFODIR=/usr/local/info:/usr/share/info:/usr/info
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
INPUTRC=/etc/inputrc
JAVA_BINDIR=/usr/lib/java/bin
JAVA_HOME=/usr/lib/java
JAVA_ROOT=/usr/lib/java
JDK_HOME=/usr/lib/java
JRE_HOME=/usr/lib/java/jre
LC_CTYPE=fr_FR@euro
LD_ASSUME_KERNEL=2.2.5
LESS='-M -I'
LESSCLOSE='lessclose.sh %s %s'
LESSKEY=/etc/lesskey.bin
LESSOPEN='lessopen.sh %s'
LESS_ADVANCED_PREPROCESSOR=no
LINES=24
LOGNAME=oracle
LS_COLORS=
LS_OPTIONS='-N --color=none -T 0'
MACHTYPE=i686-suse-linux
MAIL=/var/mail/root
MAILCHECK=60
MANPATH=/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/gnome/man
MINICOM='-c on'
NNTPSERVER=news
OLDPWD=/home/oracle/export
OPTERR=1
OPTIND=1
ORACLE_BASE=/home/oracle
ORACLE_HOME=/home/oracle/oracle-9.2.0.4
ORACLE_SID=titan2
OSTYPE=linux
PAGER=less
PATH=/home/oracle/oracle-9.2.0.4/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
PIPESTATUS=([0]="0" [1]="0")
PPID=24769
PRINTER=lp
PROFILEREAD=true
PS1='\u@\h:\w> '
PS2='> '
PS4='+ '
PWD=/home/oracle
QTDIR=/usr/lib/qt3
RC_LANG=fr_FR@euro
RC_LC_COLLATE=POSIX
SDK_HOME=/usr/lib/java
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:interactive-comments:monitor:priv
ileged
SHLVL=8
SSH_CLIENT='::ffff:172.16.2.120 1171 22'
SSH_TTY=/dev/pts/0
TERM=vt220
TEXINPUTS=:/root/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX
UID=59
USER=oracle
WINDOWMANAGER=/usr/X11R6/bin/kde
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
XNLSPATH=/usr/X11R6/lib/X11/nls
...
Audrey
Il y a des infos en plus quand je fais set sur un login qui fonctionne :
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i586-suse-li
nux")
BASH_VERSION='2.05b.0(1)-release'
COLORTERM=1
COLUMNS=80
CPU=i686
DIRSTACK=()
EUID=59
GNOMEDIR=/opt/gnome
GNOME_PATH=:/opt/gnome:/usr
GROUPS=()
HISTCONTROL=ignoredups
HISTFILE=/home/oracle/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/home/oracle
HOST=titux
HOSTFILE=
HOSTNAME=titux
HOSTTYPE=i386
IFS=$' \t\n'
INFODIR=/usr/local/info:/usr/share/info:/usr/info
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
INPUTRC=/etc/inputrc
JAVA_BINDIR=/usr/lib/java/bin
JAVA_HOME=/usr/lib/java
JAVA_ROOT=/usr/lib/java
JDK_HOME=/usr/lib/java
JRE_HOME=/usr/lib/java/jre
LC_CTYPE=fr_FR@euro
LD_ASSUME_KERNEL=2.2.5
LESS='-M -I'
LESSCLOSE='lessclose.sh %s %s'
LESSKEY=/etc/lesskey.bin
LESSOPEN='lessopen.sh %s'
LESS_ADVANCED_PREPROCESSOR=no
LINES=24
LOGNAME=oracle
LS_COLORS=
LS_OPTIONS='-N --color=none -T 0'
MACHTYPE=i686-suse-linux
MAIL=/var/mail/root
MAILCHECK=60
MANPATH=/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/gnome/man
MINICOM='-c on'
NNTPSERVER=news
OLDPWD=/home/oracle/export
OPTERR=1
OPTIND=1
ORACLE_BASE=/home/oracle
ORACLE_HOME=/home/oracle/oracle-9.2.0.4
ORACLE_SID=titan2
OSTYPE=linux
PAGER=less
PATH=/home/oracle/oracle-9.2.0.4/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
PIPESTATUS=([0]="0" [1]="0")
PPID=24769
PRINTER=lp
PROFILEREAD=true
PS1='\u@\h:\w> '
PS2='> '
PS4='+ '
PWD=/home/oracle
QTDIR=/usr/lib/qt3
RC_LANG=fr_FR@euro
RC_LC_COLLATE=POSIX
SDK_HOME=/usr/lib/java
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:interactive-comments:monitor:priv
ileged
SHLVL=8
SSH_CLIENT='::ffff:172.16.2.120 1171 22'
SSH_TTY=/dev/pts/0
TERM=vt220
TEXINPUTS=:/root/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX
UID=59
USER=oracle
WINDOWMANAGER=/usr/X11R6/bin/kde
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
XNLSPATH=/usr/X11R6/lib/X11/nls
...
Audrey
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 15:35
9 déc. 2008 à 15:35
grosses différences
changer dans le script le source ~/.profile par:
source ~/.bashrc
changer dans le script le source ~/.profile par:
source ~/.bashrc
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
9 déc. 2008 à 16:16
9 déc. 2008 à 16:16
.profile est commun à plusieurs shells, le .bashrc est plus spécifique à bash
des différences dans l'environnement entre login et cron est souvent source de problèmes, ça marche dans un login mais pas dans cron. le PATH après le source (post 11) est visiblement trop limité
des différences dans l'environnement entre login et cron est souvent source de problèmes, ça marche dans un login mais pas dans cron. le PATH après le source (post 11) est visiblement trop limité
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
12 déc. 2008 à 15:05
12 déc. 2008 à 15:05
même utilisateur ?
même shell ?
en interractif ça fonctionne ?
même shell ?
en interractif ça fonctionne ?
L'utilisateur est toujours l'utilisateur oracle.
Je ne suis plus sur le même serveur.
Sur ce serveur, si je veux que la commande d'export fonctionne en ligne de commande je dois faire un :
su - oracle
(sur l'autre serveur, un "su oracle" sans le tiret suffisait).
Si je fais un set en ligne de commande avec l'utilisateur oracle, j'ai :
ACLOCAL_FLAGS='-I /opt/gnome/share/aclocal'
AGENT_HOME=/opt/oracle/product/10.2/agent
AIO_MAX_SIZE=262144
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" [5]="x86_64-suse-
inux")
BASH_VERSION='3.1.17(1)-release'
CLASSPATH=/home/base_oracle/10g.2/JRE:/home/base_oracle/10g.2/jlib:/home/base_o
acle/10g.2/rdbms/jlib:/home/base_oracle/10g.2/network/jlib
COLORTERM=1
COLUMNS=80
CONSOLE_MAGIC='(K'
CPU=x86_64
CSHEDIT=emacs
CVS_RSH=ssh
DIRSTACK=()
ENV=/etc/bash.bashrc
EUID=102
FILE_MAX_KERNEL=131072
FILE_MAX_SHELL=65536
FROM_HEADER=
GNOME2_PATH=/usr/local:/opt/gnome:/usr
GROFF_NO_SGR=yes
GROUPS=()
GTK_PATH=/usr/local/lib/gtk-2.0:/opt/gnome/lib/gtk-2.0:/usr/lib/gtk-2.0
GTK_PATH64=/usr/local/lib64/gtk-2.0:/opt/gnome/lib64/gtk-2.0:/usr/lib64/gtk-2.0
G_BROKEN_FILENAMES=1
G_FILENAME_ENCODING=@locale,UTF-8,ISO-8859-15,CP1252
HISTCONTROL=ignoreboth
HISTFILE=/opt/oracle/oracle/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/opt/oracle/oracle
HOST=titux2
HOSTFILE=
HOSTNAME=titux2
HOSTTYPE=x86_64
IFS=$' \t\n'
INFODIR=/usr/local/info:/usr/share/info:/usr/info
INFOPATH=/usr/local/info:/usr/share/info:/usr/info:/opt/gnome/share/info
INPUTRC=/etc/inputrc
INSTALL_DESKTOP_EXTENSIONS=yes
IP_LOCAL_PORT_RANGE='1024 65000'
LANG=fr_FR.UTF-8
LD_LIBRARY_PATH=/home/base_oracle/10g.2/lib:/home/base_oracle/10g.2/ctx/lib
LESS='-M -I'
LESSCLOSE='lessclose.sh %s %s'
LESSKEY=/etc/lesskey.bin
LESSOPEN='lessopen.sh %s'
LESS_ADVANCED_PREPROCESSOR=no
LINES=24
LOGNAME=oracle
LS_COLORS=
LS_OPTIONS='-N --color=none -T 0'
MACHTYPE=x86_64-suse-linux
MAIL=/var/spool/mail/oracle
MAILCHECK=60
MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/share/man
MAX_CORE_FILE_SIZE_SHELL=unlimited
...
Audrey
Je ne suis plus sur le même serveur.
Sur ce serveur, si je veux que la commande d'export fonctionne en ligne de commande je dois faire un :
su - oracle
(sur l'autre serveur, un "su oracle" sans le tiret suffisait).
Si je fais un set en ligne de commande avec l'utilisateur oracle, j'ai :
ACLOCAL_FLAGS='-I /opt/gnome/share/aclocal'
AGENT_HOME=/opt/oracle/product/10.2/agent
AIO_MAX_SIZE=262144
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" [5]="x86_64-suse-
inux")
BASH_VERSION='3.1.17(1)-release'
CLASSPATH=/home/base_oracle/10g.2/JRE:/home/base_oracle/10g.2/jlib:/home/base_o
acle/10g.2/rdbms/jlib:/home/base_oracle/10g.2/network/jlib
COLORTERM=1
COLUMNS=80
CONSOLE_MAGIC='(K'
CPU=x86_64
CSHEDIT=emacs
CVS_RSH=ssh
DIRSTACK=()
ENV=/etc/bash.bashrc
EUID=102
FILE_MAX_KERNEL=131072
FILE_MAX_SHELL=65536
FROM_HEADER=
GNOME2_PATH=/usr/local:/opt/gnome:/usr
GROFF_NO_SGR=yes
GROUPS=()
GTK_PATH=/usr/local/lib/gtk-2.0:/opt/gnome/lib/gtk-2.0:/usr/lib/gtk-2.0
GTK_PATH64=/usr/local/lib64/gtk-2.0:/opt/gnome/lib64/gtk-2.0:/usr/lib64/gtk-2.0
G_BROKEN_FILENAMES=1
G_FILENAME_ENCODING=@locale,UTF-8,ISO-8859-15,CP1252
HISTCONTROL=ignoreboth
HISTFILE=/opt/oracle/oracle/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/opt/oracle/oracle
HOST=titux2
HOSTFILE=
HOSTNAME=titux2
HOSTTYPE=x86_64
IFS=$' \t\n'
INFODIR=/usr/local/info:/usr/share/info:/usr/info
INFOPATH=/usr/local/info:/usr/share/info:/usr/info:/opt/gnome/share/info
INPUTRC=/etc/inputrc
INSTALL_DESKTOP_EXTENSIONS=yes
IP_LOCAL_PORT_RANGE='1024 65000'
LANG=fr_FR.UTF-8
LD_LIBRARY_PATH=/home/base_oracle/10g.2/lib:/home/base_oracle/10g.2/ctx/lib
LESS='-M -I'
LESSCLOSE='lessclose.sh %s %s'
LESSKEY=/etc/lesskey.bin
LESSOPEN='lessopen.sh %s'
LESS_ADVANCED_PREPROCESSOR=no
LINES=24
LOGNAME=oracle
LS_COLORS=
LS_OPTIONS='-N --color=none -T 0'
MACHTYPE=x86_64-suse-linux
MAIL=/var/spool/mail/oracle
MAILCHECK=60
MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/share/man
MAX_CORE_FILE_SIZE_SHELL=unlimited
...
Audrey
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
12 déc. 2008 à 16:05
12 déc. 2008 à 16:05
alors vérifier le cron
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
12 déc. 2008 à 16:09
12 déc. 2008 à 16:09
ce n'est donc pas le même /opt/oracle/oracle que le cas précédent, faire un login oracle et ls -a
j'obteins ceci :
. export111208.dmp
.. export.dmp
.bash_history export_titux
charge_auto_.log expVoie020708.dmp
charge_auto_ndt.log expVoie151008.dmp
charge_auto_ndt.log.001 expVoie300408.dmp
charge_auto_ndt.log.002 expVoie.dmp
charge_auto_.sql import
copie_table_import.sql l
crontab lance_maj
exp040708.dmp lance_test
exp051208.dmp .lesshst
exp110408.dmp Mail
exp220108.dmp maj_copy.sql
exp240108.dmp result_test_reseau
exp250108.dmp sauve
expdat.dmp test_reseau
exp_maj.dmp trace
exp_maj.par .viminfo
exp_oracle_erreur.log
. export111208.dmp
.. export.dmp
.bash_history export_titux
charge_auto_.log expVoie020708.dmp
charge_auto_ndt.log expVoie151008.dmp
charge_auto_ndt.log.001 expVoie300408.dmp
charge_auto_ndt.log.002 expVoie.dmp
charge_auto_.sql import
copie_table_import.sql l
crontab lance_maj
exp040708.dmp lance_test
exp051208.dmp .lesshst
exp110408.dmp Mail
exp220108.dmp maj_copy.sql
exp240108.dmp result_test_reseau
exp250108.dmp sauve
expdat.dmp test_reseau
exp_maj.dmp trace
exp_maj.par .viminfo
exp_oracle_erreur.log
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
12 déc. 2008 à 16:15
12 déc. 2008 à 16:15
copier le .bashrc de l'autre système
9 déc. 2008 à 14:07
source ~/.profile
Ca n'a hélas rien changé.
L'utilisateur qui doit lancer le script est l'utilisateur oracle.
J'avais donc fait un crontab -e depuis l'utilisateur oracle (ce qui est la même chose que faire sous root
crontab -u oracle -e,
je l'ai testé en réel).
Je dois bien écrire source ~/.profile tel quel dans mon script ?
Pour info, voici mon script :
source ~/.profile
a=`date "+%d%m%y"`
exp alerte/alerte file=export_base_$a.dmp owner=ALERTE
Merci en tous cas de vous pencher sur mon pb.
Audrey