IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 102 (torneu a la resta de temes)
Fitxers: LPI107.2_CronIAt.pdf (LPI107.2_CronIAt.odp),UD_8_14_automatitzacio_tasques.pdf (Apunts Eva Dominguez)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/107.2
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Objectius del tema

107.2. Automatitzar tasques d'administració del sistema amb treballs programats
Objective.jpg
  • Objectiu: Els candidats han de ser capaços d'utilitzar cron o anacron per tal d'executar tasques en intervals regulars i utilitzar at per tal d'executar tasques en moments específics.
  • Pes: 4
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

  • Gestionar tasques de cron i at
  • Configurar l'accés dels usuaris als serveis cron i at
Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 107.2. Automatitzar tasques d'administració del sistema amb treballs programats

Cron

Vixie-cron

Servei de planificació de tasques basat en temps molt utilitzat en SO Unix-like (hi ha ports per a altres SO)

És una abreviatura de cronògraf

Permet als usuaris executar comandes o guions de shell de forma automàtica i periòdica.

Utilitzat sovint pels administradors de sistemes com a eina per automatitzar tasques d'administració.

Hi ha diverses implementacions i té una llarga història de modificacions. Utilitzarem el cron vixie, de l'autor Paul Vixie (també autor de Bind)

Hi ha altres implementacions de cron, com la de AT&T que poden diferir lleugerament

Cron com a dimoni

Dimoni: aplicació no interactiva que s'executa en segon terme de forma continuada

Control del servei:

sudo /etc/init.d/cron

Comprovar que cron està funcionant

Configuració de cron amb crontab

Són els fitxers que configuren cron

També és l'ordre que permet consultar i editar els fitxers crontab

consulta

$contrab -l

Cada usuari té el seu crontab (incloent el superusuari)

Editar crontab

$contab -e
$sudo contab -e
$sudo contrab

Format del fitxer crontab. crontable

S'utilitza l'editor del sistema (variable d'entorn EDITOR)

El fitxer té 6 camps pels usuaris normals i 7 pel superusuari (pot indicar quin usuari executa la tasca)

Camp 1 (minut): Valor entre 00 i 59 o llista de valors

15 * * * * s'executa al minut 15 de cada hora de cada dia

Camp 2 (hora): Valor entre 00 i 23 o llista de valors

15 12 * * * s'executa tots el dies a les 12 i 15 minuts del migdia

Camp 3 (dia_mes): valor entre 1 i 31

0 * 15 * * s'executa el dia 15 de cada dia

Camp 4 (mes) Valor entre 1 i 12 o llista de valors

0 * 0 1 * * s'executa cada dia u del mes

Camp 5 (weekday): Valor entre 0 i 6(0=diumenge i 6) o sun, mon, tue, wen, thu, fri i sat. També permet llista de valors

0 0 * * 5 s'executa tots els dijous a les 00

Camp 6 (usuari): nom de login de l'usuari. Només crontabs del sistema o de superusuari.

Camp 7 (ordre): Ordre o guió d'ordres a executar.


Jordiromerounix147.png

Columna d'usuari es opcional, ja que es pot afegir accions de cron del propi usuari

Variables d'entorn

es poden utilitzar variables d'entorn a cada fitxer crontab Les següents variables d'entorn s'estableixen segons el contingut del fitxer /etc/passwd de l'usuari:

SHELL, USER, LOGNAME, i HOME

IMPORTANT: La shell per defecte és sh (/bin/sh).

Totes les VE es poden modificar excepte USER.

Es pot establir TZ però s'ignorarà excepte si l'utilitza només una ordre

Altres mètodes per automatitzar tasques

fitxer /etc/crontab

contrab del sistema no recomanable editar

Carpeta /etc/cron.d

Aquí és on les aplicacions col·loquen els seus scripts cron. No cal que siguin executables.

[email protected]:/etc/cron.d$ cat anacron
# /etc/cron.d/anacron: crontab entries for the anacron package

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#30 7    * * *   root	test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d  anacron start >/dev/null
30 7    * * *   root	start -q anacron || :

Utilitzar les tasques diàries, setmanals, ...

Segons el contingut de /etc/crontab

Cada hora al minut 17 s'executen el fitxers executables de la carpeta /etc/cron.hourly

Cada dia a les 6:65 s'executen el fitxers de /etc/cron.daily

Cada diumenge a les 6:47 s'executen el fitxers de /etc/cron.weekly

Cada dia 1 dels més a les 6:52 s'executen el fitxers de /etc/cron.monthly

Control de les sortides amb cron

Intèrprets d'ordres i cron

Control d'accés a cron

Fitxers de log

Exemples

anacron

at

Control d'accés a at

Paquets

Paquet cron

Paquet anacron

Anacron a diferència de cron no pressuposa que la màquina s'està executant de forma continuada.

Les tasques de cron que “s'executen” quan la màquina està aturada es salten i mai s'executen

Només l'administrador del sistema pot executar i pot configurar tasques d'anacron

Anacron només pot executar tasques un cop al dia (o en períodes més grans: setmanes, mesos, etc.) en contrast amb cron que es pot arribar a executar cada minut.

Si el sistema es torna a iniciar o s'inicia després de la mitjanit, les tasques diàries són executades després de cert retard i de forma ordenada (una tasca anacron a l'hora).

De fet anacron utilitza cron per executar-se, consulteu el fitxer /etc/cron.d/anacron.

S'assegura que les tasques diàries s'executin sempre encara que siguin a hores que l'ordinador no està encès:

[email protected]:/etc/cron.d$ cat anacron
# /etc/cron.d/anacron: crontab entries for the anacron package

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#30 7    * * *   root	test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
30 7    * * *   root	start -q anacron || :

Anacron no és un dimoni o servei. Només s'executa durant l'arrancada del sistema o es executat periòdicament per cron

No hi ha ordre anacrontab

[email protected]:/etc/cron.d$ cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details. 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# These replace cron's entries
1	5	cron.daily	 nice run-parts --report /etc/cron.daily
7	10	cron.weekly	 nice run-parts --report /etc/cron.weekly
@monthly	15	cron.monthly nice run-parts --report /etc/cron.monthly

Ordres

crontab

Exemple

Creem una tasca per a que ens aparegui un missatge per pantalla

10,20,30,40,50 * * * * env DISPLAY=:0 /usr/bin/zenity --warnig --title="Et recomanem..." 
--text="Que DESCANSIS" --width=500 >> /home/jordi/logfile 2>&1

Exemple

Automatització d'enviament d'un correu electrònic, per automatitzar aquesta tasca primer comprovarem que podem enviar correus per línia de comandes ho farem de la següent manera

Instal·larem el paquet ssmtp

$sudo apt-get install ssmtp

Editarem el fitxer de configuració del ssmtp a /etc/ssmtp/ssmtp.conf i li afegirem les següents línies

[email protected] 
mailhub=smtp.gmail.com:465 
rewriteDomain=gmail.com 
AuthUser=nom_usuari
AuthPass=contrasenya_correu 
FromLineOverride=YES 
UseTLS=YES

Com enviar un correu electrònic

ho farem de la següent manera

echo "missatge de prova 1" | mail -s "missatge de prova" [email protected]

Automatitzarem l'enviament amb contrab -e

i li afegirem la següent línia

...
#automatització enviament de correu
1,10 * * * * echo "si tot funciona, llegirem el correu correctament" | mail -s 

Per comprovar que funciona he fet que envie un correu tots els dies al minut 1 i 10 de cada hora, el resultat en el log del sistema és el següent

$sudo tail /var/log/syslog
Jun  6 13:10:01 jordi CRON[5795]: (jordi) CMD (echo "si tot funciona, llegirem el correu correctament"
| mail -s "missatge automatitzat" [email protected])
Jun  6 13:10:01 jordi sSMTP[5798]: Creating SSL connection to host
Jun  6 13:10:01 jordi sSMTP[5798]: SSL connection using RSA_ARCFOUR_SHA1
Jun  6 13:10:04 jordi sSMTP[5798]: Sent mail for [email protected] (221 2.0.0   
closing connection g51sm5149474eea.14) uid=1000 username=jordi outbytes=453

at

atq

atrm

Fitxers de configuració

/etc/crontab

/etc/cron.d

/etc/cron.daily /etc/cron.hourly, /etc/cron.weekly, /etc/cron.monthly

/etc/at.deny

/etc/at.allow

/etc/crontab

/etc/cron.allow

/etc/cron.deny

/var/spool/cron/*

/etc/init/cron.conf

/usr/share/doc/cron/FEATURES

/etc/init/anacron.conf