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 |
107.2. Automatitzar tasques d'administració del sistema amb treballs programats | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement: |
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 107.2. Automatitzar tasques d'administració del sistema amb treballs programats |
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
Dimoni: aplicació no interactiva que s'executa en segon terme de forma continuada
Control del servei:
sudo /etc/init.d/cron
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
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.
Columna d'usuari es opcional, ja que es pot afegir accions de cron del propi usuari
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
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
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
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