Cron que executa Bash i taula externa
Es tracta de programar un cron executi una instrucció en un bash (llista de arxius “ls”) que llegeix els noms dels arxius que hi ha en un directori i generi un arxiu amb aquest contingut.
Finalment, es pot legir l’arxiu amb utl_file o com en l’exemple creem una taula externa, que ens facilita l’accés.
Comencem per el bash:
[bi@servidor1 test_cron]$ cat list_files.sh
#!/bin/sh
#
# Generate a comma separated ls -l for the directory in which the external table’s
# location file resides
#
ls -l –time-style=long-iso /data/int/test | /usr/bin/awk ‘BEGIN {OFS = “,”;} {print $1, $2, $3, $4, $5, $6″ “$7, $8}’ > /data/int/test/ls_files.txt
—
Creem taula a oracle
DROP TABLE BI_INT.LS_DIR_EXT;
CREATE TABLE BI_INT.LS_DIR_EXT
(
permisos VARCHAR(15),
tipus VARCHAR(1),
usuari VARCHAR(15),
grup VARCHAR(15),
mida VARCHAR(8),
data VARCHAR(20),
nom VARCHAR(100)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DIR_CIEN_INT
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
SKIP 1
NOBADFILE
NOLOGFILE
FIELDS TERMINATED BY ‘,’
)
LOCATION (DIR_CIEN_INT:’ls_files.txt’)
)
REJECT LIMIT UNLIMITED
NOPARALLEL
NOMONITORING;
Ens connectem amb putty o Terminal SSH Secure Shell Client
Per veure els crons:
[bi@servidor test_cron]$ crontab –l
*/30 * * * * /home/bi/test_cron/list_files.sh > /home/bi/test_cron/cron.log
#Comentari: S’executa cada 30 minuts
—-
Així, finalment si fem:
select * from BI_INT.LS_DIR_EXT
veurem:
PERMISOS | TIPUS | USUARI | GRUP | MIDA | DATA | NOM |
---|---|---|---|---|---|---|
-rw-r–r– | 1 | bi | prd | 28493 | 2016-03-31 16:11 | 280796079_3350699_160101_160115_160125_121326.xml.tar.gz |
-rw-r–r– | 1 | bi | prd | 54981 | 2016-03-31 16:15 | 410592062_8403368_160101_160115_160125_183950.xml.tar.gz |
-rw-r–r– | 1 | bi | prd | 0 | 2017-04-18 06:15 | ls_files.txt |
-rw-r–r– | 1 | bi | prd | 23 | 2017-04-04 15:44 | taula.txt |
—–
Per editar el cron:
crontab -e
S’obra en “Vi”
(Esc)
i – Insertar davant cursor
a – afegir darrera cursor
:w – escriu
:x – escriu i surt
———-
Si es tenen els permisos adequats, es pot arribar a fer que la propia consulta de la taula externa executi al vol un .sh que regeneri l’arxiu o troni directament el resultat, evitant així la necessitat de fer el cron.