cuando emplea un comando para ejecutar un programa, el intérprete de comandos espera casi siempre a que el programa termine antes de pedirle que use otro comando. Sin embargo, podría ejecutar el comando para arrancar el programa, esperar a que éste comenzase y después pasar al comando siguiente de inmediato. Para lograr esto, se teclea un carácter “&” al final del comando.
Ejecutar el comando: ls>temp&, hará que el comando ls se ejecute en el PLANO SECUNDARIO y que la salida estándar se redireccione hacia un archivo llamado temp.
Cuando lanzamos un PROCESO en SEGUNDO PLANO obtenemos un PID y un número de trabajo. El PID, como ya hemos mencionado, es el número de PROCESO y es el método que utiliza el sistema operativo para identificar de forma única al PROCESO. En cambio el número de trabajo es un identificador de uno o varios procesos correspondientes a un usuario.
La orden fg se utiliza para traer a PRIMER PLANO un trabajo que está en SEGUNDO PLANO, bien esté activo o bien esté detenido.
La orden fg se usa como: fg [%num_trabajo].
La orden bg se utiliza para poner en ejecución en segundo plano un trabajo que está en segundo plano detenido y se utiliza como:
bg [%num_trabajo].
Con la orden jobs podemos obtener una lista de los trabajos que hemos “lanzado” en el sistema.
La orden nohup lanza un proceso y lo independiza del terminal que estamos usando.
Los PROCESOS se organizan de forma jerárquica, de forma que si abandonamos la SHELL que nos conectó al sistema (abandonamos la sesión de trabajo) automáticamente se matarán todos los PROCESOS que dependan de ella.
El rango de prioridades va de -20 a 19, siendo -20 la PRIORIDAD máxima.
Cambiar prioridad a los PROCESOS
Por defecto, la PRIORIDAD con que se ejecutan los PROCESOS es 0.
Para “lanzar” un PROCESO con una determinada PRIORIDAD utilizamos el comando nice. Si queremos cambiar la PRIORIDAD de un PROCESO en ejecución utilizaremos el comando renice.
Archivos de registros con AWK
Podemos considerar que cada línea de un archivo es un “registro”, que cada uno de estos “registros” se compone de varios “campos” delimitados (o separados) por algún caracter delimitador, como por ejemplo un “*”, “:”, “#”, etc.
AWK usa $0 para identificar la línea completa del archivo (registro), $1 para el primer campo, $2 para el segundo campo..etc…
RS – Separador de registros (Record Separator), contiene el carácter que indica a AWK en qué punto del archivo acaba un registro y empieza el siguiente. Es “\n” por omisión.
NF – Número de campos de un registro (Number of Fields), contiene el número total de campos que contiene el registro que se está leyendo en cada momento. También se usa para nombrar el último campo.
NR – contiene el número de orden del registro que se está procesando en cada momento (Number of Record).
Para imprimir las líneas o registros del archivo arch, incluido el número del registro, usaremos: awk –F # ′{print NR”\t”$0}′ arch.
Para imprimir en pantalla los campos 1 y 2 del archivo arch separados por un caracter de tabulación (\t), usaremos: awk –F # -v OFS=“\t” ′{print $1,$2}′ arch.
Para imprimir las líneas impares del archivo arch, usaremos: awk ′{if (NR%2==1) print NR,$0}′ arch.
Para imprimir las líneas o registros del archivo /etc/passwd, usaremos: awk -F : ′{print $0}′ /etc/passwd.
Para mostrar solo los registros de usuarios del sistema en el archivo /etc/passwd, usaremos: awk -F : ′$3>=500 {print $0}′ /etc/passwd.
Para imprimir en pantalla un listado de todos los subdirectorios del directorio actual, usaremos: ls -l ¦ awk ′/^d/ {print $1,” “,$9}′.
Para mostrar los nombres de login de todos los usuarios “logueados” en la máquina, usaremos: who ¦ awk '{print $1}‘.
Para borrar sólo los archivos del directorio actual, usaremos: ls -l * ¦ grep -v drwx ¦ awk '{print "rm "$9}' ¦ bash.
Para borrar sólo los archivos del directorio actual, ahora sin usar grep: ls -l ¦ awk '$1!~/^drwx/ {print $9}' ¦ xargs rm.