A continuación os indico una pequeña lista de comandos

Moviendose por el sistema de archivos

El comando pwd nos devuelve la ruta en la que estamos en ese momento.

Para cambiar de directorio usamos cd, que tiene varias opciones:

  • cd /path/deseado/ nos lleva a /path/deseado
  • cd . directorio actual
  • cd .. directorio padre
  • cd (sin parametros) lleva al home de tu usuario
  • cd ~ nombreusuario te lleva al home de nombreusuario, si tienes permisos para ello.
  • cd ~ te lleva al home de tu usuario.
  • cd / te lleva al home de tu usuario.
  • cd - te lleva al ultimo directorio en que hallas estado

Creando/borrando directorios

Para crear nuevos directorios, la opción es mkdir.

Para borrar archivos o directorios, rm:
rm -r carpeta, usando la opción -r para borrar cualquier subcarpeta

Moviendo, renombrando, copiando

Usamos cp /ruta/archivo/original /ruta/para/copia para copiar archivos.

mv ruta/archivo nueva/ruta/archivo sirve tanto para mover un archivo o carpeta como para renombrarlo

listando archivos

El comando ls muestra una lista de los archivos de un directorio.

ls [opciones] [archivo|directorio] [archivo|directorio...]

  • ls (sin parametros) lista archivos del directorio actual.
  • ls -a muestra todos los archivos, incluido ocultos
  • ls -A igual que -a menos los archivos «.» y «..»
  • ls -R listado recursivo
  • ls -l muestra permisos de cada fichero y ultimo acceso
  • ls -s muestra el tamaño de cada fichero listado

Instalando, desistalando y reconfigurando….

  • aptitude install tal: Instala el paquete tal, y todas sus dependencias (por defecto, también las recomendaciones, que para algo están).
  • aptitude remove tal: Elimina el paquete tal. Si al eliminar ese paquete, hay otros que ya no son necesarios, también serán eliminados. No te preocupes por eso, aptitude sabe lo que se hace .·
  • aptitude purge tal: Lo mismo que la opción anterior, pero eliminando también los archivos de configuración
  • aptitude update: Actualiza la lista de paquetes disponibles, en base a lo que diga /etc/apt/sources.list
  • aptitude save-upgrade: Actualiza el sistema de forma segura
  • aptitude dist−upgrade: Actualiza el sistema, eliminando y borrando paquetes que sean necesarios. A pesar de que es lo habitual, en ocasiones puede que queramos actualizar sólo algunos usando upgrade.
  • aptitude −h: Muestra la ayuda de aptitude.

dot slash ./

Y ya que esto es una breve introducción a la consola, hay que recordar que en linux las rutas a los archivos siempre se separan con la barra /.

Y otra diferencia con Windows que a veces pasa desapercibida. Cuando intentamos ejecutar un comando en Windows, este siempre busca el ejecutable en primer lugar en el archivo desde el cual se ejecuta la orden, y luego en cualquier otro directorio incluido en el path. Por el contrario Linux no buscará el ejecutable en el directorio actual, salvo claro está que dicho directorio esté en el path.

Por tanto la forma de asegurarnos la correcta ejecución de cualquier ejecutable, si estamos en el directorio donde se encuentra, es usar un punto y barra para indicar que busque en nuestro directorio: por ejemplo,

migarcia@migarcia-desktop: migarcia/home ~$ ./miscript.sh

serviría para ejecutar miscript.sh solo si este se encuentra en migarcia/home

Y ya que hablamos del path, si quieres ver que rutas tienes en esta variable, simplemente escribe echo $PATH

A algunos les resulta de interés que linux busque siempre ejecutables en el directorio actual. Si es tu caso, simplemente ponlo en el path, añadiendo a la variable $PATH un punto: busca en el directorio raiz de tu usuario un archivo oculto .profile y añádele:

PATH=$PATH:$HOME/bin:.

incluido el punto al final de la linea, claro.

SU

Siempre se ha dicho que la buena práctica en linux es acceder al sistema como usuario con derechos limitados, y ganar los privilegios de root solo cuando nos sea necesario, y ello para evitar ejecutar por error algún comando que se cargue el sistema (y porque linux es un sistema multiusuario, presumiendo que varias personas harán uso de el, y no todas ellas serán administradores).

Pues bien, desde tu linea de comando  conectado como usuario, puedes ganar privilegios de root con el comando su.

Por ejemplo, tras la orden

[migarcia@localhost] ~ $ sudo kedit /etc/fstab

el sistema te preguntará por la contraseña de root, y si es correcta, editará el archivo /etc/fstab con el programa kedit, con permisos de root.

sudo permite ejecutar como root solamente la instrucción de la línea donde se ejecuta. Como alternativa puedes simplemente escribir su, introducir la contraseña y ganar privilegios de root para esa sesión de consola.

Fíjate como el promt te identifica como root, no solo por el nombre del usuario, sino también por el signo # que reemplaza el signo $

Ejecutando tareas en segundo plano

Si quieres ejecutar un comando o programa que prevés que va a tardar tiempo en completarse, y no deseas cambiar de Terminal, puedes ordenar que se ejecute en segundo plano simplemente añadiendo un carácter & al final de la orden, antes de ejecutarla.

Para regresar a cualquier proceso que has dejado en segundo plano, generalmente se utilizan los comandos fg o exit.

Comodines

Prácticamente todas las utilidades que emplean la línea de comandos admiten comodines * ?

el comodín ? representa cualquier carácter. Por ejemplo, ls diari?.log te mostraria la existencia tanto de diario.log como de diaria.log

Y * coincide con cualquier secuencia de caracteres. ls foto.* te indicaría la existencia de foto.jpg, foto.gif etc

Pipes y redireccionadores

 

Las “pipes” traducido normalmente como tuberías, es un sistema que nos permite redirigir la salida de un comando hacia la entrada de otro, y cuando lo llevamos a la practica, hace que todo lo que un comando iba a presentar en pantalla (Standard output) sea enviado a la entrada (Standard input) del siguiente; una tubería la indicamos con el signo <|>, y cuando lo que queremos es enviar la información a un fichero en disco,podemos utilizar el ‘> nombre fichero’ si lo queremos guardar en un fichero nuevo, o ‘>> nombre fichero’ si queremos añadir lineas a un fichero existente.

Ejemplos:

Visualizar el contenido de un directorio, paginando

$ ls | more

Imprimir el contenido de un fichero

$ cat nombrefichero > lp

Guardar la lista de ficheros de una carpeta en disco

$ ls > nombrefichero

 

Los procesos

Cuando ejecutamos un comando en el shell, sus instrucciones se copian en algún sitio de la memoria RAM del sistema para ser ejecutadas. Cuando las instrucciones ya cumplieron su cometido, el programa es borrado de la memoria del sistema, dejándola libre para que más programas se puedan ejecutar a la vez. Cada uno de estos programas que pasan a la memoria del sistema y son ejecutados es lo que conocemos con el nombre de PROCESO. El tiempo que este proceso estuvo en la memoria del sistema ejecutándose, se conoce como TIEMPO DE EJECUCIÓN de un proceso.

La gestión de procesos en Linux no difiere demasiado de la que se hace en cualquier otro sistema UNIX. Así, el encargado de asignar una parte de la memoria a un proceso es el KERNEL, quien decide cuánta memoria dar a cada proceso y cómo repartir la capacidad del microprocesador entre los procesos que se están ejecutando. Unos procesos serán más importantes que otros, y de alguna manera tendrán «preferencia» a la hora de pedir cálculos o instrucciones al microprocesador sobre otros procesos. Este concepto se llama PRIORIDAD de un proceso. Por lo tanto, debe quedar claro que es el kernel quien «manda» sobre los procesos y controla su ejecución simultánea y el reparto de los recursos de la máquina.

Como todo en los sistemas UNIX, y por extensión en Linux, los procesos también tienen un dueño. Ese dueño es el usuario que ejecuta el programa que da lugar al proceso. Esto viene a explicar parte de la seguridad de Linux en cuanto a permisos. Como los archivos (y dispositivos como más adelante veremos) tienen un usuario, un grupo y unos permisos determiandos asignados, y también los procesos, un proceso contará de cara al sistema de ficheros con los permisos que tenga el usuario que lo creó. Resumidamente, un proceso, respecto al sistema de ficheros, podrá hacer tanto como el usuario al que pertenece. Un programa ejecutado por un usuario no privilegiado nunca podrá leer en /root o borrar o escribir cosas en /usr/bin. Un usuario normal no podrá tampoco modificar parámetros de procesos que no le pertenezcan. root podrá ejercer cualquier acción sobre cualquier proceso.

Un proceso puede crear a su vez nuevos procesos. En la práctica, todos los procesos son hijos del primer proceso ejecutado durante el arranque, el proceso «init». Así, un proceso hijo, a pesar de ser uno nuevo, guarda una relación con el proceso que lo creó (proceso padre).

Básicamente, un proceso tiene estas propiedades:

Un número identificador, (Process ID o PID), identificador de proceso. Es necesario para referirnos a un proceso en concreto de los varios en ejecución.

Un PPID (Identificador del proceso padre), es el número que indica qué proceso creó al proceso en cuestión.

Un estado; habrá momentos en los que un proceso seguirá existiendo en el sistema, pero no estará haciendo nada realmente. Puede estar esperando a que una SEÑAL le sea enviada (sobre lo que trataremos más tarde) para volverse activo, o a nosotros como usuarios nos puede interesar detenerlo o pausarlo bajo determinadas circunstancias. Los estados más importantes son dormido (S), y en ejecución (R).

Un dueño, generalmente es el usuario que lo ejecutó, y como ya se dijo, el proceso hereda los permisos del usuario de cara al sistema de ficheros. Si un ejecutable es SUID, al ejecutarse, el proceso resultante adquiere los permisos del usuario dueño del archivo. Generalmente, un usuario normal no puede ejercer control sobre procesos que no le pertenecen.

Una prioridad que determina su importancia. Ya vimos que no todos los procesos eran igual de importantes. Veremos cómo cambiar la prioridad de un proceso más adelante.

Mostrando los procesos en ejecución y sus propiedades.

Para empezar, podemos ver las tareas y sus subtareas en una estructura anidada mediante el comando pstree. Al ejecutarlo, veremos algo como:ubuntu-pstree

 

Asimismo, pstree -p muestra entre paréntesis el número identificador (PID) de los procesos, algo muy importante cuando queremos pasar de actuar de forma pasiva a interactuar con los procesos, cosa que normalmente haremos señalando sus PIDs.

Aunque esta información estructurada resulta interesante, existen dos programas muy conocidos – cada cual más avanzado – que muestran una cantidad ingente de información sobre los procesos, estos son ps y top.

ps muestra una lista de los procesos en ejecución. Prueba ps u , que muestra los procesos que pertenecen al usuario actual. La combinación más habitual de opciones es ps aux , que muestra información detallada de todos los procesos en ejecución. Algunos de los campos más importantes mostrados por ps son:

  • USER – usuario dueño del proceso.
  • PID – número identificador del proceso.
  • %CPU – porcentaje de uso del microprocesador por parte de este proceso.
  • %MEM – porcentaje de la memoria principal usada por el proceso.
  • VSZ – tamaño virtual del proceso (lo que ocuparía en la memoria principal si todo él estuviera cargado, pero en la práctica en la memoria principal sólo se mantiene la parte que necesita procesarse en el momento).
  • RSS – tamaño del proceso en la memoria principal del sistema (generalmente son KBytes, cuando no lo sea, se indicará con una M detrás del tamaño).
  • TTY – número de Terminal (consola) desde el que el proceso fue lanzado. Si no aparece, probablemente se ejecutó durante el arranque del sistema.
  • STAT – estado del proceso.
  • START – cuándo fue iniciado el proceso.
  • TIME – el tiempo de CPU (procesador) que ha usado el proceso.
  • COMMAND – el comando que inició el proceso.

Al fin y al cabo, lo que ps nos muestra es una «instantánea» de los procesos del sistema en el momento que ejecutamos el comando, así que a priori no podremos ver la evolución.

top es la versión interactiva de ps, y tiene algunas utilidades interesantes añadidas. Si lo ejecutamos en una terminal y sin opciones, aparecerá arriba información del sistema: usuarios, hora, información del tiempo de funcionamiento de la máquina, número de procesos, uso de CPU, uso de memoria, y uso del swap. A continuación tenemos una lista de procesos similar a la que nos mostraba ps con la diferencia de que esta se actualiza periódicamente, permitiéndonos ver la evolución del estado de los procesos.

image063


Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.