Visualización de procesos

Section header image

Visualización de procesos 17

Ejecutar un comando da como resultado algo llamado proceso. En el sistema operativo Linux, los procesos se ejecutan en función de los privilegios del usuario que ejecuta el comando. Esto permite que los procesos se limiten a ciertas funciones dependiendo de la identidad del usuario.

Aunque hay excepciones, generalmente el sistema operativo diferenciará entre los usuarios en función de si son o no el administrador. Normalmente, los usuarios habituales, como el usuario sysadmin, no pueden controlar los procesos de otro usuario. Los usuarios que tienen privilegios administrativos, como la cuenta root, pueden controlar cualquier proceso de cualquier usuario, incluyendo la detención de cualquier proceso.

El comando ps se puede utilizar para enumerar los procesos.

ps [OPCIONES]
sysadmin@localhost:~$ ps
  PID TTY          TIME CMD
   80 pts/0        00:00:00 bash
   94 pts/0        00:00:00 ps

Por defecto, el comando ps mostrará los procesos que se están ejecutando en la terminal actual. En el ejemplo anterior, la última línea corresponde al proceso generado al ejecutar el comando ps. La salida incluye las siguientes columnas de información:

  • PID: El identificador para el proceso (process identifier), el cual es único para cada proceso. Esta información es útil cuando necesitamos controlar los procesos según su número identificador (ID).

  • TTY: El nombre de la terminal en la que está funcionando el proceso. Esta información es útil para distinguir entre diferentes procesos que tienen el mismo nombre.

  • TIME: La cantidad total de tiempo de procesado que utiliza un proceso determinado. Normalmente, los usuarios normales no utilizan esta información.

  • CMD: El comando que inició el proceso.

En lugar de ver sólo los procesos que se están ejecutando en la terminal actual, los usuarios pueden querer ver todos los procesos que se están ejecutando en el sistema. La opción -e muestra todos estos procesos:

sysadmin@localhost:~$ ps -e
  PID TTY          TIME CMD                                                     
    1 pts/0        00:00:00 init                                                    
   33 ?            00:00:00 rsyslogd                                                
   37 ?            00:00:00 cron                                                    
   39 ?            00:00:00 sshd                                                    
   56 ?            00:00:00 named                                                   
   69 pts/0        00:00:00 login                                                   
   79 pts/0        00:00:00 bash                                                    
   94 pts/0        00:00:00 ps 

Muchas veces se puede utilizar la opción -f para proporcionar un resultado más detallado que incluya las opciones y los argumentos de cada proceso. Localice el comando ps en la última línea, la columna CMD ahora incluye las opciones utilizadas con el comando:

sysadmin@localhost:~$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD                             
root         1     0  0 19:16 pts/0        00:00:00 /sbin??? /init                  
syslog      33     1  0 19:16 ?            00:00:00 /usr/sbin/rsyslogd              
root        37     1  0 19:16 ?            00:00:00 /usr/sbin/cron                  
root        39     1  0 19:16 ?            00:00:00 /usr/sbin/sshd                  
bind        56     1  0 19:16 ?            00:00:00 /usr/sbin/named -u bind         
root        69     1  0 19:16 pts/0        00:00:00 /bin/login -f                   
sysadmin    79    69  0 19:16 pts/0        00:00:00 -bash                           
sysadmin    95    79  0 19:43 pts/0        00:00:00 ps -ef  
Image of woman at a job interview. 80% of hiring managers are looking to recruit Linux talent. 87% of hiring managers reporting difficulty recruiting enough open source talent.

«El 80% de los gerentes de contratación buscan reclutar talento Linux. El 87% de los gerentes de contratación encuentran dificultades a la hora de reclutar suficiente talento para trabajar con código abierto.»

 
 

Redirección

Section header image

Redirección 20

Agregar contenido a archivos en Linux puede hacerse de varias maneras. Linux posee algunos editores de texto que pueden usarse para agregar contenido a un archivo. Sin embargo, este método requiere cierta familiaridad con los comandos del editor de texto de Linux.

Nota

Los editores de texto de Linux están cubiertos en la siguiente sección de este curso.

En Linux, se puede agregar contenido a un archivo rápidamente usando una función de línea de comandos llamada redirección de entrada/salida (E/S) (input/output; I/O). La redirección E/S (I/O) permite enviar la información de la línea de comandos a archivos, dispositivos y otros comandos. La entrada o salida de un comando se redirige desde su destino predeterminado a una ubicación diferente. La redirección E/S es como una serie de vías de tren, donde se puede habilitar un conmutador para dirigir la salida de un comando a una vía diferente que vaya a otro lugar en el shell. En esta sección, escribiremos a archivos a través de la redirección de la salida de un comando hacia otro archivo.

Cuando se trata de comandos de entrada y salida, existen tres rutas, o “vías”. Estas rutas se denominan descriptores de archivos. El primer descriptor de archivo es la entrada estándar, abreviada como STDIN (standard input). La entrada estándar es la información que el comando recibe y procesa cuando se ejecuta, esencialmente lo que un usuario escribe en el teclado. El segundo descriptor de archivo es la salida estándar, abreviada como STDOUT (standard output). La salida estándar es la información que muestra el comando, la salida del comando. El último descriptor de archivo es el error estándar, abreviado como STDERR (standard error). STDERR, son los mensajes de error generados por comandos que no se ejecutan correctamente. Los siguientes son ejemplos de cómo aparecerán los descriptores de archivos en la terminal:

Entrada estándar (STDIN)

sysadmin@localhost:~$ ls ~/Documents

Salida estándar (STDOUT)

sysadmin@localhost:~$ ls                                                        
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

Error estándar (STDERR)

sysadmin@localhost:~$ ls fakefile                                               
ls: cannot access fakefile: No such file or directory

Esta sección cubrirá uno de los tres descriptores de archivos, STDOUT, y cómo redirigir STDOUT desde donde normalmente aparece en el terminal, a un archivo en el sistema de archivos. Para ejecutar la redirección, simplemente use el símbolo “mayor que” > junto al nombre del archivo:

[COMANDO] > [ARCHIVO]

Para demostrar cómo funciona la redirección, usaremos la salida del comando cat. Sin redirección, la salida del comando cat se mostrará en el terminal:

Siga leyendo

Utilice el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents
sysadmin@localhost:~/Documents$ cat food.txt                                    
Food is good.

Ahora utilice el carácter > para redirigir el STDOUT del comando cat food.txt anterior a un nuevo archivo llamado newfile1.txt:

sysadmin@localhost:~/Documents$ cat food.txt > newfile1.txt

Como puede ver, no se muestra ninguna salida ya que el STDOUT se ha redirigido al archivo newfile1.txt. Compruebe que el STDOUT del comando cat food.txt se encuentra en newfile1.txt:

sysadmin@localhost:~/Documents$ cat newfile1.txt                     
Food is good.

Esta función es útil si necesita copiar contenido de un archivo importante a otro archivo para editar su contenido sin modificar el archivo original. Sin embargo, ¿qué sucede si desea agregar un comentario o una nota a un archivo ya existente? Para hacer esto, puede usar el comando echo. El comando echo se utiliza para imprimir una salida en la terminal:

sysadmin@localhost:~/Documents$ echo "Hello"           
Hello                                                                   

Imprimir comentarios en la pantalla es una función curiosa, pero el comando echo puede ser más útil cuando se usa con la redirección. Mediante el comando echo, puede agregar contenido al archivo newfile1.txt:

sysadmin@localhost:~/Documents$ cat newfile1.txt         
Food is good.     
sysadmin@localhost:~/Documents$ echo "I like food." > newfile1.txt
sysadmin@localhost:~/Documents$ cat newfile1.txt             
I like food.                                           

Observe que el STDOUT del comando echo ha reemplazado el contenido original del archivo. Esto se debe a que el carácter > sobrescribe cualquier contenido de un archivo existente. Para añadir contenido a un archivo, en lugar de sobrescribir, utilice el símbolo “mayor que” dos veces >>:

sysadmin@localhost:~/Documents$ echo "This food is good." >> newfile1.txt
sysadmin@localhost:~/Documents$ cat newfile1.txt              
I like food.                                                      
This food is good.                                 

Importante

Para redirigir la información a un archivo existente, el usuario debe tener permisos de escritura para ese archivo.

 
 

Editor de texto

Section header image

Editor de texto 21

El principal editor de texto para Linux y UNIX es un programa llamado vi. Si bien hay numerosos editores disponibles para Linux incluyendo desde el pequeño editor nano hasta el editor masivo emacs, el editor vi tiene varias ventajas:

  • El editor vi está disponible en todas las distribuciones Linux del mundo. Esto no ocurre con ningún otro editor.

  • El editor vi se puede ejecutar tanto en una CLI (interfaz de línea de comandos) como en una GUI (interfaz gráfica de usuario).

  • Aunque se han añadido nuevas características al editor vi, las funciones principales han existido durante décadas. Esto significa que si alguien aprendió a usar el editor vi en la década de 1970, podrá usar la versión moderna sin ningún problema. Aunque eso pueda parecer trivial, puede que dentro de veinte años no sea tan trivial.

A tener en cuenta

La forma correcta de pronunciar el nombre del editor vi es vi-ay. Las letras vi representan visual, pero nunca se pronunció de esta manera. En su lugar se pronuncia la letra v (vi) seguida de la letra i (ay) en inglés.

En realidad, la mayoría de los sistemas Linux no incluyen el editor vi original, sino una versión mejorada del mismo conocida como vim (vi mejorada) (vi improved). Este hecho puede estar oculto en la mayoría de las distribuciones de Linux. En su mayor parte, vim funciona igual que vi, pero presenta funciones adicionales. Para los temas que se tratan en este curso, tanto vi como vim funcionarán perfectamente

Para comenzar a usar vi, simplemente escriba el comando seguido del nombre de ruta del archivo que quiere editar o crear:

sysadmin@localhost:~$ vi newfile.txt

Los tres modos utilizados en vi son los siguientes: modo de comando, modo de inserción y modo ex.

Modo de comando: Movimiento

Inicialmente, el programa empieza en modo de comando. El modo de comando se utiliza para escribir comandos, como los utilizados para desplazarse por un documento, manipular texto o acceder a los otros dos modos. Para volver al modo de comando en cualquier momento, presione la tecla Esc.

Una vez haya agregado texto a un documento, deberá presionar la tecla Esc para volver al modo de comando y realizar acciones como mover el cursor. Esto parece que sea mucho trabajo, pero recuerde que vi funciona en un entorno terminal en el cual un mouse es inservible.

Los comandos de movimiento en vi tienen dos aspectos, el movimiento (motion) y un prefijo numérico opcional (count) que indica cuántas veces se debe repetir ese movimiento. El formato general es el siguiente:

[número] movimento

En la siguiente tabla se resumen las teclas de movimiento disponibles:

Movimiento Resultado
h Un carácter a la izquierda
j A la línea siguiente
k A la línea anterior
l Un carácter a la derecha
w Una palabra adelante
b Una palabra hacia atrás
^ Al principio de la línea
$ Al final de la línea

Nota

En la actualización vim también es posible usar las teclas de flecha     en lugar de los caracteres h j k l respectivamente.

Estos movimientos se pueden anteponer con un número para indicar cuántas veces se debe realizar el movimiento. Por ejemplo, 5h moverá el cursor cinco caracteres a la izquierda y 3w moverá el cursor tres palabras a la derecha.

Para mover el cursor a un número de línea específico, escriba ese número de línea seguido del carácter G. Por ejemplo, para llegar a la quinta línea del archivo, escriba 5G. Puede usar 1G o gg para moverse a la primera línea del archivo, mientras que una G única le llevará a la última línea. Para averiguar en qué línea se encuentra el cursor, utilice CTRL+G.

Modo de comando: Acciones

La convención estándar para editar contenido con procesadores de texto es usando copiar, cortar y pegar. El programa vi no tiene ninguno de estos. En su lugar, vi utiliza los tres comandos siguientes:

Estándar Vi Significado
cortar d eliminar (delete)
copiar y sacar (yank)
pegar P | p poner (put)

Los movimientos aprendidos en la página anterior se utilizan para especificar dónde se llevará a cabo la acción, comenzando siempre con la ubicación actual del cursor. Cualquiera de los siguientes formatos generales es aceptable para comandos de acción:

acción [número] movimento
[número] acción movimento

Eliminar

Eliminar (delete) suprime el texto indicado de la página y lo guarda en el búfer, siendo el búfer el equivalente al “portapapeles” (clipboard) utilizado en Windows o Mac OSX. En la siguiente tabla se proporcionan algunos ejemplos de uso comunes:

Acción Resultado
dd Elimina la línea actual
3dd Elimina las tres líneas siguientes
dw Elimina la palabra actual
d3w Elimina las tres palabras siguientes
d4h Elimina cuatro caracteres hacia la izquierda

Cambiar

La función cambiar (change) es muy similar a la de eliminar; el texto se elimina y se guarda en el búfer. Sin embargo, el programa cambia a modo de inserción y permite la introducción de cambios inmediatos en el texto. En la siguiente tabla se proporcionan algunos ejemplos de uso comunes:

Acción Resultado
cc Cambiar la línea actual
cw Cambiar la palabra actual
c3w Cambiar las tres palabras siguientess
c5h Cambiar cinco caracteres hacia la izquierda

Sacar

Sacar (yank) coloca el contenido en el búfer sin eliminarlo. En la siguiente tabla se proporcionan algunos ejemplos de uso comunes:

Acción Resultado
yy Sacar la línea actual
3yy Sacar las tres líneas siguientes
yw Sacar la palabra actual
y$ Sacar el fragmento desde el cursor hasta el final de la línea actual

Poner

Poner (put) coloca el texto guardado en el búfer antes o después de la posición del cursor. Tenga en cuenta que estas son las dos únicas opciones, poner no utiliza movimientos como los comandos de acción anteriores.

Acción Resultado
p Poner o pegar después del cursor
P Poner antes del cursor

Buscar en vi

Otra función estándar que ofrecen los procesadores de texto es la función de búsqueda (find). A menudo, las personas usan CTRL+F o miran en el menú de edición. El programa vi utiliza la búsqueda. La función de búsqueda es más potente que la función find porque admite patrones de texto literales y expresiones regulares.

Para buscar hacia adelante desde la posición actual del cursor, use la / para iniciar la búsqueda, escriba un término de búsqueda y, a continuación, presione la tecla Enter para iniciar la búsqueda. El cursor se moverá al primer resultado que coincida con su término de búsqueda.

Para proceder al siguiente resultado coincidente usando el mismo patrón, presione la tecla n. Para volver al resultado anterior, presione la tecla N. Si se alcanza el final o el comienzo del documento, la búsqueda se ajustará automáticamente para continuar con el resto del documento.

Para empezar a buscar desde la posición del cursor hacia atrás, empiece por escribir ?, entonces escriba el patrón de búsqueda y presione la tecla Enter.

Modo Insertar

El modo Insertar se utiliza para agregar texto a un documento. Hay algunas maneras de entrar en el modo de inserción desde el modo de comando, cada una diferenciada por donde comienza la inserción de texto. La siguiente tabla presenta los más comunes:

Entrada Función
a Comenzar a insertar justo después del cursor
A Comenzar a insertar al final de la línea
I Comenzar a insertar justo antes del cursor
I Comenzar a insertar al principio de la línea
o Comenzar a insertar en una nueva línea después del cursor
O Comenzar a insertar en una nueva línea antes del cursor

Modo Ex

Originalmente, el editor vi se llamaba editor ex. El nombre vi era la abreviatura del comando visual en el editor ex que cambiaba el editor al modo “visual”.

En el modo normal original, el editor ex sólo permitía a los usuarios ver y modificar una línea cada vez. En el modo visual, los usuarios podían ver la mayor parte del documento que podía caber en la pantalla. Dado que la mayoría de los usuarios preferían el modo visual al modo de edición por línea, el archivo de programa ex se vinculó a un archivo vi. De este modo los usuarios podían iniciar ex directamente en modo visual al ejecutar el enlace vi.

Eventualmente, el archivo de programa fue renombrado vi y el editor ex se convirtió en un enlace que apuntaba al editor vi.

Cuando se utiliza el modo ex del editor vi, es posible ver o cambiar su configuración, así como ejecutar comandos de archivo como abrir, guardar o cancelar cambios en un documento. Para acceder al modo ex, escriba el carácter : en el modo de comando. En la tabla siguiente se enumeran algunas acciones comunes realizadas en modo ex:

Entrada Función
:w Escribir el documento actual al sistema de archivos
:w nombre_del_archivo Guardar una copia del documento actual bajo el nombre nombre_del_archivo
:w! Forzar escritura al documento actual
:1 Ir a la primera línea (o otra línea indicada por el número)
:e nombre_del_archivo Abrir nombre_del_archivo
:q Suspender (salir) (quit) si no se han realizado cambios al documento
:q! Suspender sin guardar los cambios realizados al documento

Un análisis rápido de la tabla anterior revela que cuando un signo de exclamación, ! , se agrega a un comando, se intentará forzar la operación. Por ejemplo, imagine que realiza cambios a un archivo en el editor vi y luego intenta salir usando :q, solo para descubrir que el comando falla. En este caso, el editor vi no quiere salir del documento sin guardar los cambios realizados, pero usted puede forzar la salida con el comando ex :q!.

A tener en cuenta

Aunque el modo ex ofrece varias maneras de guardar y salir, también está disponible el comando ZZ; éste es el equivalente a :wq. Hay muchas más funciones que se solapan entre el modo ex y el modo de comando. Por ejemplo, el modo ex se puede utilizar para navegar a cualquier línea del documento escribiendo : seguido del número de línea, mientras que G se puede utilizar en modo de comando como se ha demostrado anteriormente.

Siga leyendo

Si tiene un archivo de texto abierto, salga ejecutando el comando :q!. Esto lo cerrará sin guardar cambios.

~
~
:q!_