Saltar al contenido

Entrada y salida de shell de Unix y Linux

Entrada y salida de shell de Unix y Linux

Entrada y salida de shell de Unix y Linux

Seguimos familiarizándonos con el modo de consola de los sistemas operativos similares a Unix. Si ya está familiarizado con los comandos, archivos y directorios básicos de Unix, puede comenzar a aprender los trucos de entrada y salida de shell. Aprenderá a redirigir la salida y la entrada estándar. Comencemos con la salida estándar.

Si desea enviar la salida de un comando a un archivo en lugar de una terminal, use el carácter de redireccionamiento>

comando> archivo

El shell crea el archivo si aún no existe. Si el archivo existe, el shell primero elimina el archivo principal; esto se denomina clobbering de archivos de carga útil.

Algunos shells de Linux y Unix tienen opciones que evitan que se eliminen las cargas útiles. Por ejemplo, puede escribir set -C para evitar eliminar cargas útiles en bash.

Si no desea sobrescribir el archivo, puede adjuntar la salida al archivo usando la sintaxis de redireccionamiento >>

comando >> archivo

Este es un buen lugar para recopilar los resultados en un solo lugar cuando la ejecución repetida es una variante del mismo comando del sistema operativo.

Para enviar la salida de un comando a la entrada de otro comando, use el carácter de barra vertical (|) o, como dicen, una barra vertical. Para ver cómo funciona esto, pruebe estos dos comandos:

head / proc / cpuinfo

head / proc / cpuinfo | tr az AZ

Puede enviar la salida a través de varios comandos concatenados si lo desea; simplemente agregue otra tubería (|) antes del comando adicional.

Salida de error estándar en Linux

A veces, puede redirigir la salida estándar, pero descubre que el programa todavía envía algo a la terminal. Esta es la salida de error estándar (stderr), un flujo de salida adicional para diagnóstico o depuración. Prueba este comando que genera el error:

ls / fffffff> f

Una vez completado, f debe estar en blanco, pero el terminal aún muestra el siguiente mensaje de error como un error estándar del sistema operativo:

ls / fffffff: no hay archivos o directorios de este tipo

Puede redirigir los errores estándar a donde desee. Si desea enviar la salida estándar af y el error estándar az, use el siguiente comando:

ls / fffffff> f 2> z

El número 2 describe el ID de la secuencia que está modificando el shell. Stream ID 1 es la salida estándar (predeterminado), ID 2 es el error estándar.

También puede enviar el error estándar a la misma ubicación que stdout escribiendo> &. Por ejemplo, para enviar tanto la salida estándar como el error estándar a un archivo llamado F, pruebe este comando:

ls / fffffff> f 2> & 1

Redirección Stdin en Linux.

También es posible pasar un archivo a la entrada estándar de un programa usando el operador <. Aquí hay un ejemplo:

cabeza

A veces, es posible que deba ejecutar un programa que necesite este tipo de redireccionamiento. Sin embargo, debido al hecho de que la mayoría de los comandos de Unix aceptan nombres de archivo como argumentos, esta redirección no es común a todos. Por ejemplo, el comando anterior podría haberse escrito como

head / proc / cpuinfo.

Procesos en sistemas Unix y Linux.

Un proceso es un programa en ejecución. Cada proceso del sistema tiene un ID de proceso numerado (PID). Para ver rápidamente una lista de los procesos en ejecución, simplemente ejecute el comando ps desde la línea de comandos. Obtendrá una lista como esta:

COMANDO PID TTY STAT TIME

520 p0 S 0:00 – golpe

545? S 3:59 / usr / X11R6 / bin / ctwm -W

548? S 0:10 x reloj -geometría -0-0

2159 pd SW 0:00 / usr / bin / vi lib / direcciones

31956 p3 R 0:00 ps

Esta es una lista corta, la suya será mucho más larga si ejecuta el sistema operativo en modo de ventana. Los campos significan:

PID: ID de proceso.

TTY es el dispositivo terminal en el que se está ejecutando el proceso (no se preocupe todavía).

STAT – estado del proceso; es decir, qué está haciendo el proceso y en qué lugar de memoria se almacena. Por ejemplo, S significa esperar y R significa trabajar. Consulte la página de manual de ps (1) para ver todos los símbolos.

TIEMPO es el número de CPU (en minutos y segundos) que se ha ejecutado el proceso. En otras palabras, es la cantidad total de tiempo que tardó el proceso en ejecutar las instrucciones del procesador.

COMANDO: parece obvio aquí, pero tenga cuidado, ya que el proceso puede cambiar el valor original de este campo.

Si está interesado en todos los procesos del sistema operativo (no solo en los que inicia), use ps ax y si desea un registro completo de las características de un proceso, use ps u. Al igual que con otros programas, puede combinar opciones como esta: ps aux (funciona tanto para sistemas Linux como Unix).

Para probar un proceso especial, agregue su PID a la lista de argumentos del comando ps e ($$ es una variable de shell que calcula el PID actual del shell).

En la literatura especializada de Linux, encontrará información sobre dos comandos administrativos convenientes llamados top y lsof. Pueden ser útiles para identificar procesos, incluso cuando no solo son compatibles con el sistema operativo.