Tag Archives: linux

Auto-desactivat de crontab

Es tracta que a partir d’un dia concret, es comenti una linea d’un cron, i aquest ja no es torni a executar mes.

El contingut del crontab es com segueix:

[bi@server1 test_cron]$ crontab -l
#al minut 15 cada 6 hores
15 */6 * * * /home/bi/test_cron/list_files.sh ; /home/bi/test_cron/desactivacron.sh > /home/bi/test_cron/cron.log

He fet el següent bash que ho modifica:

——————— desactivacron.sh —————–

#!/bin/sh
#
# Copia i modifica el crontab
#

#Creem un arxiu temporal
tmpfile=$(mktemp)

today=$(date +%Y%m%d)
cond=$(date -d 2017-05-01 +”%Y%m%d”)

#echo “$today > $cond ?”

#Recuperem el crontab actual
crontab -l > $tmpfile

#Si avui es mes gran que la data $cond
if [ $today -gt $cond ]
then
#Si hem passat de la data, es comenta el cron i ja no s’executarà mes…
sed -i ‘s/^15/#15/’ $tmpfile
else
#Si encara no hem passat la data, es descomenta el cron (en cas que el tingues comentat)
sed -i ‘s/^#15/15/’ $tmpfile
fi

crontab $tmpfile

#El·liminem l’arxiu temporal
rm $tmpfile

———————

Si fem

[bi@server1 test_cron]$  ./desactivacron.sh

El cron queda comentat o no segons si s’ha arribat a la data estipulada.

Aquest sh a la vegada l’executo

 

Intercomunicació Linux – Oracle (I)

Hi ha diverses maneres de intercomunicar el pslql amb el bash.

Llegir i escriure un txt a linux desde PLSQL.

Es pot utilitzar el paquet utl.file per llegir i escriure arxius a linux.

declare
fArchivo UTL_FILE.file_type;
pLinea varchar2(1000);

begin

— Escriure i crear
fArchivo := Utl_File.fopen(‘DIR_ORACLE’, ‘test.txt’, ‘w’, 32767);
pLinea:=’Es un test!! ‘||to_char(sysdate,’HH24:MI:SS’);
Utl_File.put_line(fArchivo,pLinea);
Utl_File.fclose(fArchivo);

— Llegir
pLinea:=null;
fArchivo := Utl_File.fopen(‘DIR_ORACLE’, ‘test.txt’, ‘r’, 32767);
Utl_File.get_line(fArchivo,pLinea);
Utl_File.fclose(fArchivo);

— Elimino arxiu
Utl_File.fremove(‘DIR_ORACLE’,’test.txt’);

dbms_output.put_line(pLinea);
end;

———–

Es un test!! 10/04/17
Es un test!! 09:21:16
Es un test!! 09:21:46

——–

Per fer això, cal tindre permisos d’escriptura i creació d’arxius al directori de Linux.
També cal haver definit un DIRECTORY a Oracle amb permisos d’escriptura i lectura.

select * from all_directories;

OWNER DIRECTORY_NAME DIRECTORY_PATH
SYS         DIR_ORACLE             /data/intercanvi/dir_oracle