Tema 6 Cont

14
TEMA 6.- PROCESOS (cont) nohup Cuando un usuario se desconecta del sistemas el kernel envía la señal HUP a todos los procesos asociados al terminal. Si hay procesos en backqround, son cancelados. Hay veces que es necesario continuar con la ejecución de programas aunque el usuario no esté presente. No es una solución dejar la conexión abierta, es decir, que el usuario permanezca conectado aunque no esté físicamente ante el terminal. La manera de dejar un proceso en ejecución, aun después de haberse desconectado, es utilizar el comando nohup. Su formato es muy simple; hay que introducir nohup seguido del nombre del programa que se está ejecutando. Sintaxis: nohup nombre-programa (darle permiso x al usuario) nohup calcula & La línea de comandos anterior protege al programa calcula de la señal enviada por el kernel. El programa continuará ejecutándose y las salidas serán redirigidas al fichero nohup.out, si no se especifica en el programa, adonde deben ir. El fichero nohup.out será creado en el directorio en curso. Si éste carece de permiso de escritura, el fichero se creará en el directorio HOME del usuario. Con el comando nohup no pueden especificarse tuberías, nohup sólo afecta al primer componente de un piping. Por tanto, en el comando nohup cat lola | wc -w solamente quedaría protegido el comando cat. Si desea emplearlo en tuberías, coloque éstas en un guión shell. Retorno de Valores: nohup retorna los siguientes valores: 126 el comando se encuentra, pero no se puede ejecutar. 127 el comando no es encontrado. Limitaciones de nohup: ver ayuda de man Para los usuarios de UNIX que disponen de un sistema pequeño, muchas veces un AT sin terminales, ps es uno de los comandos más informativos de la actividad del sistema. Los usuarios en estas condiciones son muchas veces programadores nuevos en UNIX y como los programas hay que comprobarlos, no pocas veces, se cuelga el sistema. Con < ALT > y las teclas de función se puede acceder a termínales virtuales. Desde una de estas terminales es posible monitorizar la ejecución de un programa

description

www.fresymetal.com

Transcript of Tema 6 Cont

Page 1: Tema 6 Cont

TEMA 6.- PROCESOS (cont)

nohup

Cuando un usuario se desconecta del sistemas el kernel envía laseñal HUP a todos los procesos asociados al terminal.Si hay procesos en backqround, son cancelados.Hay veces que es necesario continuar con la ejecución de programasaunque el usuario no esté presente. No es una solución dejar laconexión abierta, es decir, que el usuario permanezca conectado aunqueno esté físicamente ante el terminal.La manera de dejar un proceso en ejecución, aun después de habersedesconectado, es utilizar el comando nohup. Su formato es muy simple;hay que introducir nohup seguido del nombre del programa que se estáejecutando.

Sintaxis: nohup nombre-programa (darle permiso x al usuario)

nohup calcula &

La línea de comandos anterior protege al programa calcula de la señalenviada por el kernel.El programa continuará ejecutándose y las salidas serán redirigidas alfichero nohup.out, si no se especifica en el programa, adonde debenir.

El fichero nohup.out será creado en el directorio en curso. Si éstecarece de permiso de escritura, el fichero se creará en el directorioHOME del usuario.

Con el comando nohup no pueden especificarse tuberías, nohup sóloafecta al primer componente de un piping. Por tanto, en el comando

nohup cat lola | wc -w

solamente quedaría protegido el comando cat. Si desea emplearlo entuberías, coloque éstas en un guión shell.

Retorno de Valores:

nohup retorna los siguientes valores:

126 el comando se encuentra, pero no se puede ejecutar.127 el comando no es encontrado.

Limitaciones de nohup:

ver ayuda de man

Para los usuarios de UNIX que disponen de un sistema pequeño, muchasveces un AT sin terminales, ps es uno de los comandos más informativosde la actividad del sistema. Los usuarios en estas condiciones sonmuchas veces programadores nuevos en UNIX y como los programas hay quecomprobarlos, no pocas veces, se cuelga el sistema. Con < ALT > y lasteclas de función se puede acceder a termínales virtuales. Desde unade estas terminales es posible monitorizar la ejecución de un programa

Page 2: Tema 6 Cont

con ps. Los problemas que se pueden determinar mediante los listadosde ps son muchos y muy variados, pero los más comunes suelen ser casostales cómo un proceso que engendra otros ininterrumpidamente, bajandoel tiempo de respuesta del sistema considerablemente.

Otro caso que produce el mismo efecto, es cuando un proceso consumegrandes cantidades del tiempo de CPU o la utilización casi permanentedel disco principal del sistema.

A veces, hay problemas relacionados con los procesos en background.Normalmente, un proceso padre espera la señal de finalización delproceso hijo para reanudar su actividad. Pero el SHELL padre de losprocesos en background no espera tal señal y continúa activo yengendrando procesos hijos. Si por algún motivo, un proceso padrefinaliza su ejecución, el sistema se niega a cancelar los procesoshijos. Estos entran en un estado definido como zombies y resulta unestado especial ya que el proceso no está activo ni consume tiempo deCPU o cualquiera de los recursos del sistema. Estos procesos aparecenen los listados de ps con el indicador <defunct> en la columna queindica el comando.

nohup

nohup comando [ argumentos ]

Descripción:

Ejecuta un comando, que aunque me desconecte, sigue ejecutándose.Si la salida del comando, no es redireccionada a un fichero, el sistema redigirá lasalida al fichero nohup.out, en el que se acumulará tanto la salida standard,como la salida de errores.Si el usuario no tiene permiso de escritura en el directorio actual, la salida esredireccionada al $HOME/nohup.out.Si no existe se crea, nohup.out con permisos de W y R. ***.

Si al ejecutar el comando:

a.- Se encuentra, pero No puede ser ejecutado, devuelve el valor 126.b.- No se encuentra, devuelve el valor 127. Es decir valores de salida.

Ejemplos:$ cat > usuarios.sh

who<ctrl. + d>

# nohup usuarios.sh > salida.out & (salida.out lo pongo yo).Lo redirecciona a salida.out.

# nohup usuarios.sh me lo envía al fichero nohup.out.

Pasos:!.-# nohup usuarios.sh > salida.out &2.- #exit3.- login: root

Page 3: Tema 6 Cont

4.- # ps -f Observo que el proceso usuarios.sh tiene de PPID el 1. Esto esdebido a que su PPID era la sh y al salir de la sesión (2), cuando vuelvo (3) alconectarme el proceso se ha colgado del init que le permite proseguir su ejecución opuede ser que dicho proceso haya finalizado.Si el proceso sigue ejecutándose, su salida la envía a salida.out y por eso no se ve enpantalla.

Page 4: Tema 6 Cont

4.- # ps -f Observo que el proceso usuarios.sh tiene de PPID el 1. Esto esdebido a que su PPID era la sh y al salir de la sesión (2), cuando vuelvo (3) alconectarme el proceso se ha colgado del init que le permite proseguir su ejecución opuede ser que dicho proceso haya finalizado.Si el proceso sigue ejecutándose, su salida la envía a salida.out y por eso no se ve enpantalla.

Page 5: Tema 6 Cont

El rango de valores de nice es O -39, donde los valores más altos tienen menorprioridad..El comando tiene por defecto el valor 20, cuando nice no es usada y se modificamediante el incremento.(20 + incremento).Si el incremento no es especificado, nice toma por defecto 10 y el comando encuestión toma el valor 30.Para dar prioridad 25 a un comando : nice -5 sort grupo > grupo2El número "nice" de un trabajo, se conoce con el comando ps -1. Columna PRI.

Opciones:

-n incremento Se debe poner esta opción.

- incremento Es obsoleta esta opción. No se usa.

Al comando nice se le da un incremento negativo: nice -n -10 cat grupo ónice--10 cat grupo.

Solo root puede especificar un valor negativo en incremento.

Se pueden utilizar las opciones -1 y -o del comando ps para visualizar losvalores de nice en los procesos.

Valores de Retorno

nice retorna unos valores del comando:2 Error de nice.126 El comando es encontrado, pero no puede ser ejecutado.127 El comando no puede ser encontrado.

Ejemplos:

1°.- a.-# nice-lOusuarios.sh &b.- # ps -fc.- se ve en la columna NI el valor 24.d.- El valor del usuario es de 24. La prioridad va de 24-39.e.- El sistema tiene prioridad 20, que es la más alta.

Teniendo lanzado el proceso # nice -10 usuarios, sh & y hago exit: mato todoslos procesos.Para evitarlo utilizo la orden nohup.Ej: # nohup usuarios.sh > salida.out & (salida.out fichero de salida puesto por

el usuario)

Page 6: Tema 6 Cont

Planificación de Procesos

La planificación de procesos por parte del usuario cuenta con variasherramientas: son comandos que permiten indicarle al sistema cuándodebe ejecutar determinados procesos.Esta ejecución en diferido también ahorra sobrecarga al sistema,aunque puede utilizarse con otros fines como son la seguridad y elcontrol.

Un sistema UNIX está permanentemente funcionando, salvo cuando hayque añadir software, hardware o efectuar alguna reparación.

Los programas que deben ejecutarse regularmente, una vez por semana,diariamente o cada equis cantidad de tiempo, pueden ser planificadoscon suficiente antelación.En general son funciones administrativas, pero hay usuarios a quienesla planificación les convenga, sobre todo si ejecutan tareasrutinarias.

Los comandos que permiten tal planificación son at, batch, cron ycrontab. Cada uno de ellos será descrito en un punto de este capítulo.Antes de ejecutar cualquiera de ellos, pida permiso al administradordel sistema y aunque parezca algo tonto, verifique la fecha y hora desu sistema. Es bastante común encontrar cierta diferencia, casisiempre unos pocos minutos, entre la hora que tiene el sistema y lahora real.

En una empresa, esa diferencia horaria puede conducir a errores. Siusted necesita comunicar algo a una secretaria que finaliza su jornadaa las 17 hs. y tiene una diferencia horaria de 10 minutos, su mensajeno llegará a tiempo si lo envía 16:55 hs. por el reloj del sistema.Los problemas pueden ser más serios que ha sido expuesto; por ello, nose olvide de verificar la fecha y hora de su sistema.

También es importante que averigüe cuáles son las horas enque el sistema soporta menor actividad.

Page 7: Tema 6 Cont

at

at [-m] [-f fichero] [-q letra] time [date] [incremento]at [-m] [-f fichero] [-q letra] -t [[ cc]yy]mmddhhmm.[ss]at -r id-trabajo...at -1 [id-trabajo . . . ]at -1 -q letra

Descripción:Es la temporización concreta en un momento concreto.

El comando at permite la ejecución posterior de una lista decomandos. La lista introducida desde el teclado o mediante un guiónshell y se ejecuta a la fecha y hora indicadas.

Opciones:

-r permite eliminar el trabajo de la cola.-1 permite visualizar la cola de trabajos-m Envia un e-mail al usuario cuando se ha completado la tarea.-f fichero:-q letra:

No es necesario que el usuario esté conectado al sistema para laejecución de la lista de comandos. Veamos un ejemplo:a. -

$ at 14sort clientes > clientes2 (poner salida a terminal /dev/tty03)<CTRI + d>

job 698353200.ab.-$ at 14

sort clientes > /dev/tty03 (poner salida a terminal)<CTRI + d>

job 698353200.a

La primera linea invoca el comando seguido de la hora, en nuestroejemplo las 14. El día no se ha especificado, en consecuencia, toma eldía de hoy. Después de la hora pulsamos <INTRO> y no aparece el promptporque el sistema está esperando los comandos que se desean ejecutar ala hora indicada.En la segunda linea introducimos el comando; es la clasificación de unarchivo con salida a otro.Para finalizar la entrada pulsamos <CTRL+D>.

En pantalla se imprime un número que identifica el trabajo.

at almacena los trabajos en colas para su ejecución posterior y éstospueden ser suprimidos indicando el número de identificación.

La fecha y hora pueden ser introducidas en diferentes formatos, perovayamos de lo simple a lo complejo.

A.- La hora, que tiene dos formatos

1) reloj de 24 horas.

' i / „,. £r • '* i / •« ¡ ji ''•>:> \, - • * l -•( -i-

£MA '\, '-^ . i; vi / ,4Tj^^i 1;17c íix^OftÁ'i

Page 8: Tema 6 Cont

2) formato 12 horas con los sufijos am o pm.

1.- En el modo reloj de 24 horas, si se especifican uno o dos dígitosse interpretará como tiempo en horas enteras. Si los dígitos soncuatro, los dos primeros serán horas y los dos segundos, minutos. Deesta manera, 8 son las 8 en punto de la mañana y 2020 son las 8 y 20de la noche. Es válido el uso de los dos puntos para separar las horasde los minutos. Son equivalentes 1845 y 18:45.

Si la hora especificada es posterior a la actual y no se indica eldía, at entiende que nos referimos a hoy; si la hora es anterior,entiende que nos estamos refiriendo al día de mañana.

2.-En el segundo formato las primeras doce horas del día sereferencian con el sufijo am y las doce horas siguientes, con pm. Deesta manera 7:20am son las 7 y 20 de la mañana y 7:20pm son las 7 y 20de la noche.

Hay dos horas especiales que se definen con los vocablos noon ymidnight. El primero corresponde a las 12 horas y el segundo a las 24.

Ej:a. -$ at 0040 (00:40 12.40 de la noche)Who > /dev/tty03 (terminal)<ctrl + d>

b.-$ at 00:40sh usuarios > /dev/tty03

<ctrl + d>Nota: el script usuarios contiene : who

c.- con am y pm$ at 7:20am

who # al no redireccionar va a su buzón de correo. Ejecutarluego mail<ctrl. + d>

d.-$ at 7:20pmwho > /dev/tty03

<ctrl. + d>

B.- La fecha, se puede especificar el día de la semana. En inglés,por supuesto. La orden

at 17 Monday

significa "el Lunes a las 5 de la tarde". También se puede emplear laabreviatura de tres letras correspondiente:

Monday MonTuesday TueWednesday WenThursday ThuFriday FriSaturday SatSunday Sun

Page 9: Tema 6 Cont

La fecha se indica con el mes y el día, en ese orden (también eninglés). Por ejemplo: April 22.

El comando at puede utilizarse como un recordatorio, puesto quepermite la redirección de la salida a un terminal en particular. Si suterminal es siempre el mismo, puede enviarse mensajes a una hora yfecha determinadas .

$ at 20 Friecho "AGAGAG FIN DE LA SEMANA LABORAL" > /dev/ttyd2<CTRL + D>

A las 8 de la noche del Viernes, sonarán tres pitidos en su terminal yse visualizará en pantalla:

FIN DE LA SEMANA LABORAL

Los pitidos los produce <CTRL + G > y el mensaje es un buenrecordatorio para los enfermos del trabajo.

La lista de comandos puede introducirse desde el teclado, finalizandocon < CTRL + D>, o puede hallarse en un guión shell. Si opta por estoúltimo, ponga el nombre del fichero que contiene el guión shell acontinuación del símbolo de redirección.

a.- $ at 1620 sat < cuentab.- $ at 1620 sat < cuenta >/dev/tty03

Habrá trabajos que se ejecuten cuando el usuario no esté conectado alterminal. Si éstos requieren salida a la pantalla (porque ésta no hasido redireccionada : /dev/tty03 caso a.-) el sistema envía dichasalida de ejecución de los comandos y errores al usuario a su correoraail.Para ello luego se deberá ejecutar malí.Una vez que se ha terminado de introducir la lista de comandos para

at, el terminal visualiza el número de identificación del trabajo. Coneste número se puede eliminar el trabajo de la cola en la cual ha sidopuesto por at. Solamente debe especificar la opción -r (remove)seguida del número de trabajo.

$ at -r 678654312.a

Para visualizar la cola de trabajos de at, introduzca

$ at -1

y tendrá en su, pantalla un listado de la cola de trabajos de at. Ellistado está formado por el número de identificación de los trabajos yla fecha y hora en la cual deben ser ejecutados.

El uso de at está subordinado a lo permitido por el administrador delsistema. Hay dos ficheros encargados de permitir o no la ejecución deeste comando: .,./

1.- Uno es /usr/lib/cron/at. allow; en él se ponen las identificaciones(LOGNAME) de los usuarios que pueden utilizar el comando.

2.- El otro fichero, es /usr/lib/cron/at. deny, allí se especifican losusuarios que tienen denegado el uso de at.

El sistema da prioridad a at. allow, si los dos ficheros existen.

Page 10: Tema 6 Cont

El sistema busca el primer fichero. Si éste no existe, comprueba elsegundo para determinar si el uso del comando le ha sido expresamenteprohibido al usuario.Si ninguno de los dos ficheros existe, solamente el administrador delsistema puede utilizar at.

Si el fichero at.deny existe pero está vacío, todos los usuarios delsistema pueden hacer uso de comando at. En los entornos deprogramación casi siempre está dispuesto de este modo.

NOTA: atjobs se encuentra en : /var/spool/cron/atjobs

10

Page 11: Tema 6 Cont

batch

Este comando es muy parecido a at. Ejecuta una lista de comandos endiferido. La diferencia con at radica en que no se especifica la horani la fecha. Esto se deja a cargo de un programa del kernel quedetermina, estadística mediante, cuando la carga que soporta elsistema es más baja. En ese momento se ejecutan los trabajos delcomando batch.En resumen es el sistema quien decide cuando se ejecuta el comando.

Al igual que con at, los trabajos encargados a batch se almacenan enuna cola y se identifican por un número. También pueden ser suprimidosde la cola con el comando at y la opción -r.

El formato que utilizan ambos comandos es idéntico, es decir, seutiliza la misma sintaxis.

$ batch <intro>lista de comandos

<ctrl. + d>

Este comando es un alternativa interesante a la ejecución enbackground, no necesita hacer uso de nohup ya que no es necesario queel usuario esté conectado y además se asegura que será ejecutadocuando el sistema esté menos cargado.

11

Page 12: Tema 6 Cont

croncrontab

crontab [ fichero]crontab [ -e | -11 -r]crontab -u user [ -e | -11 -r]

Los comandos cron y crontab

Dentro de un sistema UNIX hay un mecanismo de planificación y temporización de lastareas.El programa interno que se ocupa de ejecutar las tareas planificadas es cron. Su

nombre proviene de cronógrafo y está asociado al reloj del sistema.Este programa se ejecuta cuando arranca la máquina y a partir de allí se ejecuta una vez

por minuto. Su finalidad es examinar un fichero especial para ver si hay tareas paraejecutar. Si las hay, las ejecuta. Si no, vuelve a dormir hasta el próximo minuto.

El fichero especial donde cron busca lo que debe ejecutar es /usr/spool/cron/crontabs.Allí se ponen los programas (almacenan los trabajos planificados) o comandos aejecutar regularmente mediante el comando crontab.

El comando crontab le indica al comando cron qué procesos debe ejecutar y sufrecuencia, es decir ejecutar una lista de comandos a una hora y fecha determinadas deforma periódica.

Existen los ficheros cron.allow y cron.deny para controlar qué usuarios puedenejecutar el comando.Si el usuario tiene acceso al comando crontab es necesario que también disponga de unfichero denominado cronfile en su directorio de presentación.**ver **** para y pag 119 pingüino **

Un usuario pone un programa que hace las nóminas para que se ejecute el día 28 a las14 hs. Con at o batch el programa se ejecutaría sólo una vez; con crontab se ejecutarátodos los meses regularmente.

El administrador del sistema es el único que puede utilizar cron directamente.Los usuarios pueden hacer uso de él a través de crontab.Este comando instala una tabla que el usuario debe preparar en el directorio donde cronbuscará lo que debe ejecutar. La tabla consta de seis campos donde se define qué ycuándo se debe ejecutar.

Las tablas reciben el nombre de ficheros crontab; no confundir con el nombre delcomando crontab. El comando es quien instala la tabla, los campos de la tabla deben irseparados por espacios o por caracteres de tabulación. El significado de cada campo sedescribe a continuación, en la figura 10.2, pero antes tengamos en cuenta que los cincoprimeros campos se refieren a la fecha y hora de ejecución de la tarea. El sexto y últimocampo, contiene el nombre de la tarea a ejecutar.

12

Page 13: Tema 6 Cont

En un fichero crontab, hay que especificar mediante un valor numérico el contenidode cada uno de los, cinco primeros campos. El valor puede ser un rango o un númeroentero. Con estos valores se puede formar una lista separando los componentes porcomas. Un carácter válido es el asterisco (*), funciona como comodín e indica quecualquier valor es legítimo.

Un programa que se ejecute sólo los Lunes a las 3 de la tarde, se indica de esta manera

O 15 * * 1 /usr/dpconta/facturas

Los días de la semana se numeran comenzando por el Domingo al cual se le asigna el0. Las horas se indican en el modo reloj de 24 horas, donde las 12 de la noche son las Ohoras.

CAMPO

123456

CONTENIDO

Minutos.Horas.Día del mes.Mes.Día de la semana.Nombre de la tarea.

RANGO

0-590-231-311-120-6

Una planificación para copias de seguridad en una oficina normal se implementa deLunes a Viernes cuando finaliza el horario de trabajo. Por ejemplo, a las 20 hsSupongamos que copiaseg es el nombre del guión shell que realiza la copia seguridad,la entrada del fichero crontab se vería así.

O 20 * * 1,2,3»4,5 /usr/anama/copiaseg

Los ficheros crontab pueden tener cualquier longitud, siempre que se respete poner uncomando (línea de comandos) por línea especificando los seis campos . El nombre delfichero puede ser cualquiera: se rige por las mismas reglas que existen para los ficherosordinarios en UNIX.

Antes de instalar el archivo crontab con el comando del mismo nombre, hay que crearun archivo que contenga la lista de comandos que se quiere planificar. El comando seocupa de su colocación. Cada usuario tiene sólo un archivo crontab guardado en eldirectorio /usr/spool/cron/crontabs.

A este archivo se le asigna el nombre del usuario.

Por ejemplo si el nombre del usuario es aluml y se crea un fichero llamado mitabla yse instala escribiendo crontab mitabla, se creará el archivo/usr/spool/cron/crontabs/alumnl con el contenido de mitabla.

13

Page 14: Tema 6 Cont

El listado que está a continuación es un ejemplo de fichero crontab:

00,20,40 14-16 *** who» quienO 10 23 12 * * echo Feliz cumpleaños | mail babi30 6 27 * * /usr/deber/nominas

explicación:

La primera línea ejecuta el comando who, añadiendo la salida al fichero quien. Estecomando se ejecuta cada 20 minutos de 2 a 4 de la tarde todos los días del año.

La línea siguiente se ejecuta únicamente el 23 de Diciembre a las 10 de la mañana.Envía un mensaje a través de mail.

La tercera línea se ejecuta todos los días 27 de cada mes, a las 6 y 30 horas, de lamañana.

El nombre de este fichero es mitabla.Para instalarlo lo hacemos con el comando crontab de esta manera:

$ crontab mitablaSi deseamos visualizar el contenido del fichero instalado, debemos teclear:

$ crontab -1

Para eliminar la tabla de comandos, es decir el fichero crontab, utilizaremos la opción -r(remove).

$ crontab -r

Lo mismo que con at, hay dos ficheros que controlan el acceso a este comando.Los ficheros son : cron.allow y cron.deny que se encuentran en: /usr/lib/cronUno de ellos es un enlace.

14