Your SlideShare is downloading. ×
Tema 6 Cont www.fresymetal.com
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tema 6 Cont www.fresymetal.com

538

Published on

www.fresymetal.com

www.fresymetal.com

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
538
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 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
  • 2. con ps. Los problemas que se pueden determinar mediante los listados de ps son muchos y muy variados, pero los más comunes suelen ser casos tales cómo un proceso que engendra otros ininterrumpidamente, bajando el tiempo de respuesta del sistema considerablemente. Otro caso que produce el mismo efecto, es cuando un proceso consume grandes cantidades del tiempo de CPU o la utilización casi permanente del 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 del proceso hijo para reanudar su actividad. Pero el SHELL padre de los procesos en background no espera tal señal y continúa activo y engendrando procesos hijos. Si por algún motivo, un proceso padre finaliza su ejecución, el sistema se niega a cancelar los procesos hijos. Estos entran en un estado definido como zombies y resulta un estado especial ya que el proceso no está activo ni consume tiempo de CPU o cualquiera de los recursos del sistema. Estos procesos aparecen en los listados de ps con el indicador <defunct> en la columna que indica 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á la salida 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 es redireccionada 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.- #exit 3.- login: root
  • 3. 4.- # ps -f Observo que el proceso usuarios.sh tiene de PPID el 1. Esto es debido a que su PPID era la sh y al salir de la sesión (2), cuando vuelvo (3) al conectarme el proceso se ha colgado del init que le permite proseguir su ejecución o puede 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 en pantalla.
  • 4. 4.- # ps -f Observo que el proceso usuarios.sh tiene de PPID el 1. Esto es debido a que su PPID era la sh y al salir de la sesión (2), cuando vuelvo (3) al conectarme el proceso se ha colgado del init que le permite proseguir su ejecución o puede 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 en pantalla.
  • 5. El rango de valores de nice es O -39, donde los valores más altos tienen menor prioridad.. El comando tiene por defecto el valor 20, cuando nice no es usada y se modifica mediante el incremento.(20 + incremento). Si el incremento no es especificado, nice toma por defecto 10 y el comando en cuestión toma el valor 30. Para dar prioridad 25 a un comando : nice -5 sort grupo > grupo2 El 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 los valores 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 -f c.- 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 todos los procesos. Para evitarlo utilizo la orden nohup. Ej: # nohup usuarios.sh > salida.out & (salida.out fichero de salida puesto por el usuario)
  • 6. Planificación de Procesos La planificación de procesos por parte del usuario cuenta con varias herramientas: son comandos que permiten indicarle al sistema cuándo debe 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 el control. Un sistema UNIX está permanentemente funcionando, salvo cuando hay que 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 planificados con suficiente antelación. En general son funciones administrativas, pero hay usuarios a quienes la planificación les convenga, sobre todo si ejecutan tareas rutinarias. Los comandos que permiten tal planificación son at, batch, cron y crontab. Cada uno de ellos será descrito en un punto de este capítulo. Antes de ejecutar cualquiera de ellos, pida permiso al administrador del sistema y aunque parezca algo tonto, verifique la fecha y hora de su sistema. Es bastante común encontrar cierta diferencia, casi siempre unos pocos minutos, entre la hora que tiene el sistema y la hora real. En una empresa, esa diferencia horaria puede conducir a errores. Si usted necesita comunicar algo a una secretaria que finaliza su jornada a las 17 hs. y tiene una diferencia horaria de 10 minutos, su mensaje no 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, no se olvide de verificar la fecha y hora de su sistema. También es importante que averigüe cuáles son las horas en que el sistema soporta menor actividad.
  • 7. 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 de comandos. La lista introducida desde el teclado o mediante un guión shell 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 la ejecución de la lista de comandos. Veamos un ejemplo: a. - $ at 14 sort clientes > clientes2 (poner salida a terminal /dev/tty03) <CTRI + d> job 698353200.a b.- $ 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 nuestro ejemplo las 14. El día no se ha especificado, en consecuencia, toma el día de hoy. Después de la hora pulsamos <INTRO> y no aparece el prompt porque el sistema está esperando los comandos que se desean ejecutar a la hora indicada. En la segunda linea introducimos el comando; es la clasificación de un archivo 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 éstos pueden ser suprimidos indicando el número de identificación. La fecha y hora pueden ser introducidas en diferentes formatos, pero vayamos de lo simple a lo complejo. A.- La hora, que tiene dos formatos 1) reloj de 24 horas. •( -i- £MA ', '-^ ,. '- •• viii / / ,4Tj^^i 1; i; '* */ •« „,. £ r ¡ ji ''•>:> - l 17c íix^OftÁ'i
  • 8. 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ígitos se interpretará como tiempo en horas enteras. Si los dígitos son cuatro, los dos primeros serán horas y los dos segundos, minutos. De esta manera, 8 son las 8 en punto de la mañana y 2020 son las 8 y 20 de la noche. Es válido el uso de los dos puntos para separar las horas de los minutos. Son equivalentes 1845 y 18:45. Si la hora especificada es posterior a la actual y no se indica el dí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 se referencian con el sufijo am y las doce horas siguientes, con pm. De esta manera 7:20am son las 7 y 20 de la mañana y 7:20pm son las 7 y 20 de la noche. Hay dos horas especiales que se definen con los vocablos noon y midnight. 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:40 sh 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. Ejecutar luego mail <ctrl. + d> d.- $ at 7:20pm who > /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 la abreviatura de tres letras correspondiente: Monday Mon Tuesday Tue Wednesday Wen Thursday Thu Friday Fri Saturday Sat Sunday Sun
  • 9. La fecha se indica con el mes y el día, en ese orden (también en inglés). Por ejemplo: April 22. El comando at puede utilizarse como un recordatorio, puesto que permite la redirección de la salida a un terminal en particular. Si su terminal es siempre el mismo, puede enviarse mensajes a una hora y fecha determinadas . $ at 20 Fri echo " A G A G A G FIN DE LA SEMANA LABORAL" > /dev/ttyd2 <CTRL + D> A las 8 de la noche del Viernes, sonarán tres pitidos en su terminal y se visualizará en pantalla: FIN DE LA SEMANA LABORAL Los pitidos los produce <CTRL + G > y el mensaje es un buen recordatorio para los enfermos del trabajo. La lista de comandos puede introducirse desde el teclado, finalizando con < 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 a continuación del símbolo de redirección. a.- $ at 1620 sat < cuenta b.- $ at 1620 sat < cuenta >/dev/tty03 Habrá trabajos que se ejecuten cuando el usuario no esté conectado al terminal. Si éstos requieren salida a la pantalla (porque ésta no ha sido redireccionada : /dev/tty03 caso a.-) el sistema envía dicha salida de ejecución de los comandos y errores al usuario a su correo raail. 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. Con este número se puede eliminar el trabajo de la cola en la cual ha sido puesto 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. El listado está formado por el número de identificación de los trabajos y la fecha y hora en la cual deben ser ejecutados. El uso de at está subordinado a lo permitido por el administrador del sistema. Hay dos ficheros encargados de permitir o no la ejecución de este 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 los usuarios que tienen denegado el uso de at. El sistema da prioridad a at. allow, si los dos ficheros existen.
  • 10. El sistema busca el primer fichero. Si éste no existe, comprueba el segundo para determinar si el uso del comando le ha sido expresamente prohibido al usuario. Si ninguno de los dos ficheros existe, solamente el administrador del sistema puede utilizar at. Si el fichero at.deny existe pero está vacío, todos los usuarios del sistema pueden hacer uso de comando at. En los entornos de programación casi siempre está dispuesto de este modo. NOTA: atjobs se encuentra en : /var/spool/cron/atjobs 10
  • 11. batch Este comando es muy parecido a at. Ejecuta una lista de comandos en diferido. La diferencia con at radica en que no se especifica la hora ni la fecha. Esto se deja a cargo de un programa del kernel que determina, estadística mediante, cuando la carga que soporta el sistema es más baja. En ese momento se ejecutan los trabajos del comando 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 en una cola y se identifican por un número. También pueden ser suprimidos de la cola con el comando at y la opción -r. El formato que utilizan ambos comandos es idéntico, es decir, se utiliza la misma sintaxis. $ batch <intro> lista de comandos <ctrl. + d> Este comando es un alternativa interesante a la ejecución en background, no necesita hacer uso de nohup ya que no es necesario que el usuario esté conectado y además se asegura que será ejecutado cuando el sistema esté menos cargado. 11
  • 12. cron crontab 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 las tareas. 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 para ejecutar. 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 a ejecutar regularmente mediante el comando crontab. El comando crontab le indica al comando cron qué procesos debe ejecutar y su frecuencia, es decir ejecutar una lista de comandos a una hora y fecha determinadas de forma periódica. Existen los ficheros cron.allow y cron.deny para controlar qué usuarios pueden ejecutar el comando. Si el usuario tiene acceso al comando crontab es necesario que también disponga de un fichero 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 las 14 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 cron buscará lo que debe ejecutar. La tabla consta de seis campos donde se define qué y cuándo se debe ejecutar. Las tablas reciben el nombre de ficheros crontab; no confundir con el nombre del comando crontab. El comando es quien instala la tabla, los campos de la tabla deben ir separados por espacios o por caracteres de tabulación. El significado de cada campo se describe a continuación, en la figura 10.2, pero antes tengamos en cuenta que los cinco primeros campos se refieren a la fecha y hora de ejecución de la tarea. El sexto y último campo, contiene el nombre de la tarea a ejecutar. 12
  • 13. En un fichero crontab, hay que especificar mediante un valor numérico el contenido de cada uno de los, cinco primeros campos. El valor puede ser un rango o un número entero. Con estos valores se puede formar una lista separando los componentes por comas. Un carácter válido es el asterisco (*), funciona como comodín e indica que cualquier 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 el 0. Las horas se indican en el modo reloj de 24 horas, donde las 12 de la noche son las O horas. CAMPO RANGO CONTENIDO 1 Minutos. 0-59 2 Horas. 0-23 3 Día del mes. 1-31 4 Mes. 1-12 5 Día de la semana. 0-6 6 Nombre de la tarea. Una planificación para copias de seguridad en una oficina normal se implementa de Lunes a Viernes cuando finaliza el horario de trabajo. Por ejemplo, a las 20 hs Supongamos 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 un comando (línea de comandos) por línea especificando los seis campos . El nombre del fichero puede ser cualquiera: se rige por las mismas reglas que existen para los ficheros ordinarios en UNIX. Antes de instalar el archivo crontab con el comando del mismo nombre, hay que crear un archivo que contenga la lista de comandos que se quiere planificar. El comando se ocupa de su colocación. Cada usuario tiene sólo un archivo crontab guardado en el directorio /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 y se instala escribiendo crontab mitabla, se creará el archivo /usr/spool/cron/crontabs/alumnl con el contenido de mitabla. 13
  • 14. El listado que está a continuación es un ejemplo de fichero crontab: 00,20,40 14-16 *** who» quien O 10 23 12 * * echo Feliz cumpleaños | mail babi 30 6 27 * * /usr/deber/nominas explicación: La primera línea ejecuta el comando who, añadiendo la salida al fichero quien. Este comando 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 la mañana. El nombre de este fichero es mitabla. Para instalarlo lo hacemos con el comando crontab de esta manera: $ crontab mitabla Si 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/cron Uno de ellos es un enlace. 14

×