Entorno de Trabajo Windows
Computadoras personales conectadas entre si No comparten Memoria Reloj Procesador Pueden compartir Dispositivos Archivos
Comandos Básicos Linux
3
Entorno de Trabajo
Intérprete de comandos
Servidor LINUX ( Recursos de Hardware ) Acceso por telnet Comparten Memoria Reloj Procesador Dispositivos Archivos
2
Cualquier usuario de Linux acabará antes o después relacionándose con el sistema empleando el modo texto, y no los entornos gráficos. Este modo se basa en la ejecución de una serie de comandos, que son interpretados por un programa o shell. Linux dispone de varios de estos programas pero el más habitual es conocido como bash o Bourne Again Shell. Si Linux se arranco en modo texto el sistema arranca de forma directa el shell y queda a la espera de introducción de nuevos comandos 4
1
Intérprete de Comandos
Intérprete de comandos
El shell, o intérprete de comandos, es un programa que está ejecutándose durante toda la sesión con Linux,
actuando de interfaz entre el sistema operativo y el usuario. Permite que el usuario obtenga el máximo rendimiento del sistema y aproveche toda su potencia.
esperar a que finalice la ejecución o volver a pedir otro comando durante la misma.
Una vez que un usuario se ha registrado en el sistema con su login y su password, Se le cede el control al shell, el cual ejecuta dos archivos de configuración:
Hecho esto aparece el símbolo prompt y el cursor espera a que el usuario teclee una orden, que el shell interpretará y ejecutará en el momento de pulsar .
Además, el shell también es un sencillo lenguaje de programación.
5
Intérprete de comandos
Se distinguen así dos planos de ejecución: uno donde el programa tiene toda la atención y otro donde el programa se ejecuta de fondo sin detener la sesión, lo cual permite la posibilidad de ejecutar más comandos al mismo tiempo.
el general (/etc/profile) y el particular (/.profile).
Los intérpretes de comandos tienen dos formas de ejecutar el contenido de una línea de comandos:
7
Línea de comando
El shell evalúa lo que se escribe buscando en primer lugar si contiene un carácter "/" inicial, en cuyo caso lo toma como un programa y lo ejecuta. En caso contrario, examina si se trata de una función (secuencia de comandos identificada por un nombre unívoco), un comando interno o una palabra reservada. Si ninguna de estas condiciones es cierta, el shell lo trata como un comando y lo busca en PATH. Si no está, saca un mensaje del tipo "XX:not found", siendo XX lo que se ha escrito. Por otra parte, el shell ofrece la posibilidad de controlar la ejecución de los programas y la comunicación entre ellos. 6
El formato de un comando es: $ comando -opciones argumentos Hay opciones que se pueden ingresar como: comando -opción argumento, o $ comando a+b argumento. Notar que entre las opciones y argumentos, hay un espacio, que suele ser tomado por Linux como un cambio de argumentos. Por este motivo los nombres de los archivos no deben contener espacios en blanco. 8
2
Entrada – Salida del Sistema
Arranque del Linux Cómo apagar el equipo init Limpieza del sistema de archivos
Shutdown
login passwd login script logout
A los sistemas operativos les disgusta que se apague el equipo. Se corre el riesgo de dañar al sistema operativo Antes de apagar el equipo, hay que ejecutar shutdown Opciones now +n -r -c
apaga al sistema de inmediato n es el número de minutos a esperar realiza el shutdown y re-boot cancela el shutdown
9
Arranque Del Linux
Shutdown
Cuando el equipo se enciende el Linux realiza el proceso de arranque (boot process) automáticamente. Durante este proceso presenta una serie de mensajes en la pantalla De existir inconvenientes, los mensajes de error se mostrarán. Los scripts de arranque se encuentran guardados en el directorio /etc Los principales archivos involucrados son
Ejemplos
Que hace
shutdown now –h
Detiene al sistema de inmediato, listo para apagar Detiene al sistema en 10 minutos, listo para apagar
shutdown +10 –h
/etc/inittab /etc/rc.d
11
shutdown now –r
Detiene al sistema de inmediato y automáticamente realiza el re-boot
reboot
Idem anterior
Recomendación: observar, pero no tocar hasta tener experiencia. 10
12
3
shutdown
init
#shutdown –h now mensajes relacionados con la detención y apagado del sistema aparecen en la pantalla esperar hasta que el la última línea aparece system halted
en este momento se puede apagar el equipo
El sistema ya se encuentra “levantado” y en ejecución, se puede el comando init para arrancar o parar al sistema. Opciones Que hace 0
halt system
1
single user mode (para mantenimiento, no permite que otros usuarios se logueen)
3
multi-user mode (modo normal)
5
multi-user mode with GUI started (modo normal para las workstations utilizando X Windows)
6
reboot
13
Rebooting
init
El único motivo que hace que se requiera reinicializar al sistema es cuando un nuevo seteo se realizó, y se desea que él mismo tenga efecto. Método 1
Estando todos los usuarios deslogueados pulsar simultáneamente CTRL – ALT – DEL Los mensajes de shutdown aparecerán y el sistema se reinicializará
15
Ejemplos init 1
para setear al sistema en modo single user
init 6
reboot
Método 2 #reboot 14
16
4
Limpieza del File System
Cambio de clave o password
fsck Se ejecuta automáticamente cada vez que el sistema arranca Ocasionalmente se puede ejecutar manualmente, para fijar daños en el sistema de archivos. Lo utiliza únicamente el administrador del sistema Se ejecuta logueado como root
Si el usuario desea cambiar su password $passwd Enter existing password Enter new password Enter new password again Si el administrador del sistema desea cambiar la password de un usuario #passwd nombre_usuario
17
login
19
login scripts
Para entrar al sistema hay que conectarse al mismo. Frente al mensaje de login, hay que ingresar el nombre de usuario El sistema a continuación solicita la password o palabra clave que corresponde al usuario Si ambos datos son correctos se entra al sistema, caso contrario, el sistema presenta el login nuevamente. El login y la password son case sensitive
Detrás de escena, mientras uno se loguea al sistema, los siguientes shell scripts se ejecutan. Su objetivo es inicializar las variables de ambiente /etc/profile Este es el primer script que se ejecuta Se utiliza para inicializar los parámetros globales que son comunes a todos los usuarios
/home/<username>/.profile_bash Es el próximo script que se ejecuta normalmente En general tiene el mismo contenido para todos los usuarios Se suele cambiar para inicializar parámetros únicos para cada usuario
18
/home/<username>/.bashrc Es el próximo script que se ejecuta cada vez que se comienza un nuevo shell. 20
5
logout
uptime $ uptime
La salida de una sesión por parte del usuario se
3:53pm
puede realizar de varias maneras:
logout
exit
la combinación de teclas CTRL – D
up 21 min,
1 user,
load average: 0.78, 0.63, 0.38
Tiempo actual (3:53pm) Número de días o mínutos desde el último arranque (up 21 min) Cantidad de usuarios logueados (1 user) Utilización del sistema por los últimos intérvalos de 1, 5 y 15 minutos (load average – carga efectiva)
En el modo gráfico mediante la opción de logout 21
Estado del Sistema
23
who
uptime
who
id
free
du
df
env
ps
top
procinfo
Usuarios logueados Cuando se loguearon De donde se conectaron
tty que están utilizando Idle time
Opciones: -i
muestra el tiempo display idle time muestra las columnas de cabecera
-H
22
24
6
who
free
$ who martin
tty2
Aug 10 15:52
Muestra la estadística de la memoria utilizada. Valores en Kbytes
total used Mem: 158920 156160 -/+ buffers/cache:103312 Swap: 498920 0
$ who –iH USER
LINE
LOGIN- TIME
IDLE
FROM
pepe
ttyp0
Jun 5 23:27
.
(omni)
25
id
Este comando muestra en una linea un resumen del actual usuario nombre usuario y número grupo principal y número otros grupos y números
$ id
free 2760 55608 498920
shared 0
buffers 5208
cached 47640
27
du
Muestra la cantidad utilizada de disco y muestra el tamaño del actual directorio y subdirectorio en Kbytes. $ du 20 .
uid=500(martin) gid=500(martin) groups=500(martin)
26
28
7
du
du
Muestra el espacio disponible en el disco partición por partición Los drives/particiones tienen que estar montadas para obtener esta información. La información del NFS también se puede obtener Para mostrar el espacio libre de los drivers montados localmente $df –l
Para visualizar la cantidad de espacio utilizado por cada directorio dentro de /home, en un formato entendible $ du –sh /home/*
29
du
31
df
Cuando se quiere saber donde y quien está consumiendo espacio en disco, en especial cuando se lentifica el sistema El comando du permite determinar la utilización del disco directorio por directorio Opciones
Descripción
-c
Genera un reporte al final
-h
Muestra los tamaños en formato entendible
-k
Muestra los tamaños en Kbytes y no en bloques (Un bloque = 1 Kbyte, en Linux)
-s
Resumen, sólo muestra la salida de cada argumento
30
Muestra la información de cada file system $df
Filesystem /dev/hda2 none
1k-blocks 2894608 79460
Used Available Use% Mounted on 1885204 862364 69% / 0 79460 0% /dev/shm
32
8
df
env
Muestra el espacio disponible en el disco partición por partición Los drives/particiones tienen que estar montadas para obtener esta información. La información del NFS también se puede obtener Para mostrar el espacio libre de los drivers montados localmente $df –l
Lista todas las variables de ambiente y su contenido para el usuario actual
PWD=/home/martin/comandos HOSTNAME=localhost.localdomain USER=martin MAIL=/var/spool/mail/martin LANG=en_US.iso885915 LOGNAME=martin HISTSIZE=1000 HOME=/home/martin TERM=linux PATH=/usr/local/bin:/bin:/usr/bin:/home/martin/bin_=/usr/bin/env OLDPWD=/home/martin
33
df
ps Este comando lista el estado de los procesos. $ ps u
Para mostrar en formato legible, el actual filesystem donde se halla el directorio actual
USER PID %CPU %MEM martin 10009 0.0 0.8 martin 10076 0.0 0.4
$df –h
35
Para mostrar el espacio disponible del filesystem donde /tmp está ubicado
$df –h /tmp
34
VSZ RSS TTY 2452 1280 tty2 2584 668 tty2
STAT START S 15:52 R 15:56
TIME COMMAND 0:00 –bash 0:00 ps u
El comando anterior muestra el estado de los procesos del usuario actual
36
9
ps
kill
Siendo
PID ÚNICO Identificador de Proceso SIZE tamaño de la imagen virtual; tamaño de texto + data + stack RSS Resident set size; Kbytes del programa en memoria TTY tty que controla el proceso STAT información sobre el estado del proceso
ejecución durmiendo interrumpiblemente durmiendo detenido o en modo traza zombie
R S D T Z • W • N
si el proceso no tiene páginas residentes si el proceso tiene un valor de prioridad positiva
37
ps
39
kill
$ ps ax
El nombre causa confusión. Envía señales a los procesos en ejecución El SO, por defecto, da a cada proceso un conjunto normalizado de manejadores de señales (signal handlers) para el tratamiento de las señales que le lleguen. Desde el punto de vista de la administración, las señales más importantes son la 9 y la 15, ya que ellas matan a un proceso o lo terminan, respectivamente. Cuando el kill se invoca, requiere al menos un parámetro, el pid del proceso al que se le envía la señal. Si se pasa sin parámetro, el sistema toma la 15 por defecto.
Algunos procesos interceptan esta señal y realizan una serie de operaciones para poder terminar
muestra el estado de todos los procesos de todos los usuarios incluyendo los del sistema
adecuadamente.
Otros simplemente terminan.
Desde ya el uso del kill no garantiza la terminación de un proceso.
38
40
10
signal
top
Un parámetro opcional para el kill es –n donde n representa un número de señal. La señal 9 mata a un proceso. La única vez que esta señal falla es cuando esta en el medio de la ejecución de un system call, en este caso el proceso morirá cuando terminé la ejecución del system call. La señal 1 (hang up), es un bit, que se utilizaba en los tiempos de las terminales VT100. En el caso que la comunicación de una terminal de cayerá a la mitad de una sesión, todos los procesos asociados con esa terminal recibián la señal SIGHUP o HUP. Esto le daba la oportunidad a todos los procesos de realizar una terminación limpia, o en el caso de los procesos en background ignorar la señal.
Muestra en una pantalla completa la información top de los procesos. Automáticamente se actualiza hasta que se detiene la ejecución del programa. Para detenerlo se oprime la tecla q
41
seguridades
43
top
La potencia de poder terminar un proceso hace necesario tomar precauciones. Solamente el usuario puede terminar su proceso o aquellos que tengan permiso de matarlo. Si se intenta terminar un proceso sobre el que no se tiene privilegios, el sistema da mensajes de error. El root es la excepción a esta limitación. El root puede enviar señales a cualquier proceso. Desde ya esto implica una gran atención con lo que se hace. $kill 2059 $kill –9 593 $kill –1 1 42
3:56pm up 25 min, 1 user, load average: 0.14, 0.32, 0.30 55 processes: 54 sleeping, 1 running, 0 zombie, 0 stopped CPU states: 11.2% user, 5.9% system, 0.2% nice, 82.6% idle Mem: 158920K av, 156164K used, 2756K free, 0K shrd, Swap: 498920K av, 0K used, 498920K free PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME 10078 martin 15 0 1024 1024 828 R 3.8 0.6 0:00 1 root 15 0 476 476 420 S 0.0 0.2 0:03 2 root 15 0 0 0 0 SW 0.0 0.0 0:00 3 root 15 0 0 0 0 SW 0.0 0.0 0:00 4 root 34 19 0 0 0 SWN 0.0 0.0 0:00 5 root 15 0 0 0 0 SW 0.0 0.0 0:00 6 root 15 0 0 0 0 SW 0.0 0.0 0:00 7 root 15 0 0 0 0 SW 0.0 0.0 0:00 8 root 25 0 0 0 0 SW 0.0 0.0 0:00 12 root 15 0 0 0 0 SW 0.0 0.0 0:00 91 root 15 0 0 0 0 SW 0.0 0.0 0:00 588 root 15 0 560 560 472 S 0.0 0.3 0:00 593 root 15 0 444 444 384 S 0.0 0.2 0:00 613 rpc 15 0 552 552 468 S 0.0 0.3 0:00 641 rpcuser 17 0 712 712 620 S 0.0 0.4 0:00 726 root 15 0 644 644 480 S 0.0 0.4 0:00 820 root 15 0 480 480 424 S 0.0 0.3 0:00 896 root 15 0 944 944 756 S 0.0 0.5 0:00
5696K buff 47016K cached COMMAND top init keventd kapmd ksoftirqd_CPU0 kswapd bdflush kupdated mdrecoveryd12 kjournald khubd syslogd klogd portmap rpc.statd cardmgr apmd xinetd
44
11
procinfo Información del sistema
Estructura del Sistema de Archivos
procinfo da información del sistema que toma del archivo /proc y lo muestra en forma de reporte en la pantalla. Algunas de las informaciones que entrega:
arbolada
Tiempo del último arranque Carga promedio
El tronco del árbol es el directorio raíz
promedio de tareas en ejecución número de procesos en ejecución número total de procesos PID del último proceso en ejecución Información de swap Recursos de memoria Número de discos Información sobre las IRQs Información sobre los file systems La informacións se actualiza cada 30 segundos
El root directory se identifica por / Todos los otros directorios son ramas que salen de ese tronco.
45
$procinfo –fn30
irq irq irq irq irq irq
0: 1: 2: 4: 6: 7:
0:02:51.00 0:00:03.10 0:01:30.74 0:21:47.11 0:26:11.95
10.9% 0.2% 5.8% 83.2%
157195 timer 744 keyboard 0 cascade [4] 9 6 2
47
Estructura jerárquica de archivos
Linux 2.4.18-3 (bhcompile@daffy) (gcc 2.96 20000731 ) #1 1CPU localhost] Memory: Total Used Free Shared Buffers Cached Mem: 158920 156156 2764 0 5772 47044 Swap: 498920 0 498920 Bootup: Sun Aug 10 15:31:28 2003 Load average: 0.10 0.29 0.29 1/55 10081 user : nice : system: idle : uptime:
La estructura de archivos es una estructura
page in : page out: swap in : swap out: context : irq irq irq irq irq irq
163056 65079 1 0 158729 8: 9: 10: 11: 12: 14:
disk 1:
25137r
Estructura de árbol invertido.
Un directorio equivale a abrir una rama dentro del árbol.
4835w
1 6 2 0 8381 32718
Los directorios pueden contener otros directorios, archivos ordinarios o estar vacíos.
rtc xirc2ps_cs usb-uhci, Texas Inst PS/2 Mouse ide0
46
Un archivo ordinario es siempre el último archivo en un path 48
12
pathnames
pathnames
El primer directorio de la estructura es el directorio raíz; todos los demás archivos y directorios parten de él. El directorio raíz se designa con un nombre especial, /.
Un pathname absoluto especifica la localización de un archivo desde el directorio raíz. Por lo tanto, todos los pathnames absolutos deben de empezar con un slash (/).
Un pathname relativo especifica la localización de un archivo con respecto al directorio en que se está trabajando,
Ningún otro archivo puede tener este nombre.
en lugar del directorio raíz, por lo que no empiezan con un slash (/).
Se lo denomina root, de allí el nombre del superusuario.
. El punto se refiere al directorio en que se está
.. dos puntos se refiere al directorio padre
49
pathnames
Todos los archivos forman parte de la jerarquía.
51
HOMEDIRECTORY
Cualquier archivo de esta estructura es parte de una red de directorios conectados. Esta red de directorios, junto con el nombre de un archivos particular, constituye el pathname para un archivo. Cada archivo se identifica con un único pathname, que describe su localización con respecto a los otros directorios. Se puede especificar un nombre de archivo utilizando 50 pathnames
El home directory es un subdirectorio del directorio raíz (root) en el que se entra cada vez que se hace login es donde van a residir los archivos del usuario.
Normalmente tiene el mismo nombre que el nombre de usuario. El comando pwd ( print working directory) dice en qué directorio se está. El formato es simplemente : $pwd 52
13
Principales Directorios
/ /home /usr /bin /lib /sbin /doc /src
/tmp
Principales directorios
root directory directorio de los usuarios comandos y utilitarios de Linux
programas ejecutables bibliotecas similares a las DLL de Windows más ejecutables de tipo administrativos documentación código fuente de los programas
archivos temporarios de trabajo
/var
archivos específicos de los usuarios
/log /spool /mail
archivos logs archivos utilizados durante las impresiones archivos de e-mail
/proc /root /opt /sbin
archivos del sistema home directory del root otras opciones más ejecutables y utilitarios
53
Principales Directorios
/etc
Archivos y Directorios en Linux
archivos de configuración
/rd.d
scripts usados durante el arranque y parada /sysconf archivos de configuración por defecto /sysconf/daemons programas especiales que se ejecutan en background
/bin
/dev
55
archivos ejecutables que utilizan todos los usuarios archivos de dispositivos
pwd
mkdir
rm
Metacaracteres * ? [ ]
54
cd
rmdir
ls
cp
mv
wc 56
14
pwd
mkdir rmdir
Mostrar el nombre del directorio completo actual /home/jpbeck
mkdir rmdir
rm –r
Crea nuevos directorios Borra directorios, pero que no contienen archivos Borra en primer lugar los archivos que contiene el directorio, y luego el directorio
mkdir midir
crea un nuevo directorio denominado midir
rmdir estedir
borra al directorio estedir, si el mismo se encuentra vacio
rm –r dire1
borra al directorio dire1, junto con todos los directorios y archivos que contenga
57
cd
59
mkdir
Para cambiar de directorio
Se utiliza para crear directorios $mkdir midir
Ejemplos
Qué hace
cd
se ubica en el H0MEDIRECTORY
cd /
se ubica en el directorio root
cd /etc cd ..
se ubica en el directorio /etc se ubica en el directorio padre
Con la opción –p, se puede crear una rama de directorios, suponiendo que sólo existe /tmp $mkdir –p /tmp/bigdir/subdir/midir al ejecutarse de generó automáticamente bigdir, subdir y midir.
58
60
15
rmdir
ls Ejemplos
¿Qué hace?
Idem a la creación, con la opción –p puede borrar
ls
muestra en una única lista todos los nombres de los archivos y directorios en el directorio actual
directorios padre también
ls –l
Lista todos los archivos/directorios del directorio actual en formato largo
$ rmdir –p bigdir/subdir/midir
ls –R
Lista todos los archivos del directorio actual y los que están por debajo
ls –lt
Lista todos los archivos, ordenados por el más reciente utilizado primero
ls –lt /etc/rc*
Lista todos los archivos del directorio /etc, que sólo comienzan con rc y los ordena por el más recientemente utilizado
es importante la ubicación desde donde uno está borrando directorios. 61
ls
63
ls –l total 43 -rw-rw-r— -rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--
Muestra el contenido de un directorio Opciones -l
Qué hace?
-R
lista el directorio actual y todos los directorios dentro del mismo
-a
muestra todos los archivos, aún los ocultos
-r
lista los archivos en orden alfabético inverso
-t
muestra los archivos más recientemente accesados
filename(s)
Muestra el archivo correspondiente
listado largo
62
1 martin 1 martin 1 martin 1 martin 1 martin 1 martin 1 martin 1 martin 1 martin 1 martin 1 martin
martin martin martin martin martin martin martin martin martin martin martin
190 Aug 10 15:55 df 5 Aug 10 15:55 du 885 Aug 10 15:56 env 230 Aug 10 15:54 free 51 Aug 10 15:54 id 0 Aug 10 16:04 lsl 1124 Aug 10 15:57 procinfo 208 Aug 10 15:56 ps 1785 Aug 10 15:56 top 62 Aug 10 15:53 uptime 31 Aug 10 15:53 who
64
16
Información que muestra ls -l
TIPO DE ARCHIVO : d -
Protección de archivos
directorio archivo ordinario
archivo y tres modos diferentes de acceso al archivo.
TIPO DE PERMISOS : r w x
Existen tres clases diferentes de usuarios de un
lectura escritura ejecución
CLASES DE USUARIO Propietario Grupo Otros
65
Información que muestra ls -l
Modos de acceso
NUMERO DE ENLACES
NOMBRE DEL PROPIETARIO DEL ARCHIVO
NOMBRE DEL GRUPO AL QUE PERTENECE EL TAMAÑO DEL ARCHIVO (en bytes)
FECHA DE LA ULTIMA MODIFICACION
NOMBRE DEL ARCHIVO
LECTURA (r) Permite examinar el contenido del archivo. Permite listar los archivos contenidos en el directorio.
PROPIETARIO
67
ESCRITURA (w) Permite cambiar el contenido del archivo. Permite crear y borrar archivos.
EJECUCION (x) Permite ejecutar el archivo como un comando. Permite buscar en el directorio.
66
68
17
Especificación de permisos
Nombres de los Archivos
rwx rwx rwx | | | | | |_______ permisos para otros usuarios | | | |____________ permisos para el grupo de usuarios | |________________ permisos para el usuario propietario
Letras mayúsculas ( A - Z ). Letras minúsculas ( a - z ). Números ( 0 - 9 ). Subrayado ( _ ). Punto ( . ). Coma ( , ). Extensión de un archivo No se admiten espacios en blanco en el nombre
69
Metacaracteres (wildcards) Opciones * ?
Metacaracteres
Qué hace representa ningún, uno o cualquier cantidad de caracteres representa uno y sólo un caracter
[ desde - a ]
representa un rango
[ ! desde – a ]
representa los valores no contemplados en el rango
71
70
Ejemplos
Qué hace
a* *z a*m
todos los archivos que empiezen con a
th??
todos los archivos cuyos nombres son de 4 caracteres y empiecen con th
[a-c]* x[A-C]*
todos los archivos que comiencen con a o b o c
[!M-O]*
Todos los archivos que no comiencen ni con M o N u O
todos los archivos que terminan con z todos los archivos que comienzan con a y terminan con z
todos los archivos que comiencen con x, y cuya segunda letra sea una A, o B o C
72
18
Expansión del nombre de un archivo
chmod
Utilizando el bash, los wildcards o metacaracteres en la línea de comando se expanden antes de pasarse como parámetros a la aplicación. Si se quiere utilizar los metacaracteres como parte de un parámetro por alguna razón, se deben utilizar precedidos por el backslash (\). Esto hace que el shell interprete al asterisco, al signo de pregunta como caracteres regulares en vez de metacaracteres.
El comando chmod (change mode) se utiliza para cambiar los permisos de un archivo ordinario y de un directorio. Existen dos formas de cambiar los permisos. Se pueden cambiar teniendo encuenta los permisos existentes (modo simbólico) O se pueden asignar permisos independientemente de los ya existentes (modo absoluto).
73
Archivos Invisibles u Ocultos
75
chmod modo simbólico
Los archivos cuyos nombres comienzan con un punto (.) Normalmente los archivos ocultos se utilizan para guardar información que el sistema utiliza automáticamente. $ ls -a
Cuando se utiliza el modo simbólico se pueden añadir o quitar permisos a los archivos y directorios.
El formato del comando chmod simbólico es: chmod [who] código-operador permisos fichero
[who] Tipo de usuario 74
76
19
chmod modo simbólico
chmod modo absoluto
Puede tener los siguientes valores:
u : propietario del fichero g : grupo del que el propietario es miembro o : usuarios clasificados como otros a : todos los usuarios del sistema (propietario, grupo y otros)
El modo absoluto se especifica con 3 dígitos numéricos; cada número representa los permisos de cada tipo de usuario. Estos dígitos se obtienen, para cada clase de usuario, a partir de los valores siguientes:
Código-operador: Indica la operación que se va a realizar: + : añadir permisos - : quitar permisos
Tipo de permiso:
r : permiso de lectura w : permiso de escritura x : permiso de ejecución
4 : permiso de lectura 2 : permiso de escritura 1 : permiso de ejecución.
77
chmod modo simbólico
79
chmod modo absoluto
Por ejemplo, si el archivo progra1 tiene los
siguientes permisos:
rwx r_ _ r_ _
y si se quiere dar al grupo de usuarios y al resto de
los usuarios del sistema, el permiso de ejecución
$chmod go +x datos
78
0 : ningún permiso 1 : permiso de ejecución 2 : permiso de escritura 3 : permiso de ejecución y escritura (1+2) 4 : permiso de lectura 5 : permiso de lectura y ejecución (4+1) 6 : permiso de lectura y escritura (4+2) 7 : permiso de lectura, escritura y ejecución (4+2+1) 80
20
chmod modo absoluto
Copiar – Renombrar - Mover
La sintaxis para el comando chmod absoluto es: chmod modo archivo modo: Son 3 dígitos numéricos. Cada uno de ellos corresponde a los permisos de cada tipo de usuario. archivo: Nombre de archivo o directorio.
Por ejemplo: $chmod 777 datos concede permisos de lectura, escritura y ejecución sobre el fichero datos, a todos los usuarios.
cp Copia un archivo $ cp archi1 archi2 copia el archivo archi1 con el nombre archi2, en el mismo directorio mv Renombra archivos $ mv archi2 archi3 le cambia el nombre al archivo archi2 llamándose ahora archi3 mv Mueve archivos $ mv archi1 /home/pepe/archi5 mueve el archivo archi1 del directorio actual (copiando y borrando) al directorio /home/pepe y denominándolo archi5
81
Directorios
cp
El directorio es una instancia especial de un archivo normal
83
El archivo directorio contiene una lista de archivos, donde algunos de ellos pueden ser a su vez directorios.
Concepto similar al folder o carpeta de Windows. 82
Dispone de una cantidad significativa de opciones. (ver con man cp) Para copiar index.html a index-orig.html $cp index.html index-orig.html se supone que el archivo index.html se encuentra el directorio corriente, y se copia con otro nombre en el mismo directorio Para realizar copias interactivas $cp –i *.html /tmp 84
21
mv
wc
Puede mover archivos de una ubicación a otra, también a distintas particiones. En este último caso necesita que primero se haga la copia, por lo que se demora un poco más en su ejecución. Para mover el archivo desde /usr/src/myprog/bin/* a /usr/bin $ mv /usr/src/myprog/bin/* /usr/bin Para renombrar /tmp/blah a /tmp/bleck $mv /tmp/blah /tmp/bleck
Se utiliza para contar líneas, palabras y caracteres de un archivo -c número de caracteres -w número de palabras -l número de líneas
$ wc /etc/sendmail.cf lista el número de líneas, palabras y caracteres en el archivo sendmail.cf $ ls /etc | wc –l Muestra el número de archivos y directorios que contiene /etc
85
rm
Enlaces o Accesos Directos
Borrar archivos $ rm archivitos borra el archivo archivitos
$ rm –i abc*
$ rm abc*
87
Enlace o Vínculos : permite que se comparta la información. La existencia de vinculos es lo que convierte al árbol en un grafo acíclico.
borra, pidiendo confirmación, a cada archivo que comienza con abc borra instántaneamente todos los archivos que comiencen con abc VINCULO
86
88
22
Enlaces o Vínculos
Enlaces Duros y Simbólicos Hard link $ ln pwd otro Soft link $ ln –s pwd otromas $ ls –il
El vínculo es un enlace con el archivo físico, para compartir un archivo entre varios usuarios. No se puede crear un archivo vínculo de la nada, es necesario que exista el archivo físico al cual está vinculado. Al realizar un ls el vinculo viene representado como : clase - > / etc / passwd VINCULO
7418 -rw-rw-r-- 2 martin martin 0 Aug 10 16:27 otro 7420 lrwxrwxrwx 1 martin martin 3 Aug 10 16:26 otromas -> pwd 7418 -rw-rw-r-- 2 martin martin 0 Aug 10 16:27 pwd
Archivo Físico
89
Enlaces o Vínculos
91
Enlaces duros
Enlaces SIMBÓLICOS : Amplia el concepto de vinculo permitiendo vincularse a directorios o archivos de la red. Un vinculo simbólico desde el punto de vista físico no es más que un archivo que contiene el nombre de otro. No se implementa un vínculo, sino que viene el archivo vinculado. Al hacer un vinculo, crea una entrada más en la tabla de directorios, y al mismo tiempo un archivo al que está vinculado. Directorios : Archivo que contiene información sobre
otros archivos( es un archivo). Se puede tratar con las ordenes de tratamiento de archivos.
90
Un hard link no puede existir entre dos archivos que se encuentren en particiones separadas. Esto se debe a que el hard link hace referencia al inodo del archivo original, y el número de i-nodo puede diferir de partición en partición. $ ln pepe /home/miguel/pepe $ ls –i pepe $ ls –i /home/miguel/pepe los dos últimos comandos van a mostrar el mismo i-nodo, y el número de enlaces en 2 92
23
Enlaces simbólicos o blandos
Archivos de texto
Los hard link, que apuntan al archivo a través de su i-nodo
file
Mostrar archivos
| pipes
Comandos múltiples
Los symbolic link apuntan a otro archivo por su nombre.
less cat
sort
Esto permite a los symlinks apuntar a archivos ubicados en otras particiones, aún sobre discos de red.
head
grep
tail
93
ln
file
El formato general del comando es
Verificación del tipo de archivo $ file otro otro: ASCII text
ln original_file new_file
95
Pero ln tiene muchas opciones, la más común es – s, que crea un enlace simbólico en vez de uno
$ file otromas otromas: symbolic link to pwd
duro. $ln –s /usr/local/bin/myadduser /usr/bin/myadduser
94
96
24
pipes |
Comandos múltiples
Si se desea saber cuantos usuarios hay logueados al sistema en un instante determinado $who > logueados $wc –l logueados $rm logueados Mediante la técnica de redireccionamiento se logro escribir un archivo, el cual después se leyo y dio la información Pero en un ambiente de multiprogramación, la escritura y lectura de disco, es un costo muy elevado Mediante pipes se resuelve todo en memoria
$who | wc –l Ahorro de una escritura y una lectura en disco.
Si se ejecuta $ls –l $ cat /etc/passwd
lo puedo hacer en una única línea de comando $ls –l; cat /etc/passwd
97
pipes
99
Redireccionamiento
Los pipes son un mecanismo por el cual la salida de un proceso se envía a la entrada de otro proceso $printenv | grep PS1 El intérprete de comandos de Windows utiliza también pipes La diferencia radica en que los pipes se ejecutan concurrentemente, mientras que en Windows cada proceso se ejecuta en orden, utilizando archivos temporales para guardar los resultados parciales. 98
Mediante el redireccionamiento la salida de un proceso se puede enviar directamente a un archivo. El shell más que el proceso en sí administra esta situación, proveyendo de los mecanismos para que la misma se cumpla Redireccionamiento salida a un archivo agregar a un archivo enviar un archivo como entrada 100
25
Redireccionamiento
Mostrando Archivos Muestra el archivo de texto completo, no tiene posibilidad de paginación como el less o el more $ cat /etc/passwd
$ls > /tmp/directory_listint
$echo “Final” >> /tmp/directory_listing
$grep ‘root’ < /etc/passwd
cat
También se puede utilizar para crear un nuevo archivo $ cat > nuevoArchi Se ingresan las líneas de texto por teclado. Para cerrar el archivo se pulsa CTRL - D 101
Mostrando Archivos
cat
se utiliza para visualizar el contenido de un archivo de texto $ less /etc/passwd
less
Mientras se visualiza se dispone de una serie de opciones que permiten moverse sobre el archivo hacia atrás y hacia adelante, y también buscar palabras.
se utiliza para visualizar el contenido de un archivo de texto $ more /etc/passwd
103
Muestra el contenido de los archivos.
$cat /etc/passwd
$cat /etc/passwd /etc/group
Para concatenar dos archivos en uno sólo
more
$cat /etc/passwd /etc/group > /tmp/comp
Idem al anterior, pero con menor cantidad de posibilidades 102
Para concatenar un archivo a otro ya existente $cat /etc/passwd >> /tmp/orb 104
26
Mostrando Archivos head
Ejemplos de uso de grep
Sólo muestra las primeras líneas de un archivo de texto
$ grep home /etc/passwd $grep –v home /etc/passwd
$ head –5 /etc/passwd Solo muestra las primeras 5 líneas del archivo passwd
$grep –c home /etc/passwd $grep ‘name*’ /etc/sendmail.cf
tail
$grep ‘domain name’ /etc/sendmail.cf
Sólo muestra las últimas líneas de un archivo de texto
$grep tcp /etc/rc*
$ tail –5 /etc/passwd
$grep TCP /etc/rc*
Sólo muestra las últimas 5 líneas del archivo passwd
$grep -i tcp /etc/rc* 105
Mostrando Archivos
grep
sort
se utiliza para encontrar un dato específico dentro de un archivo o grupo de archivos
Opciones
Que hace
-c
Muestra la cantidad de líneas que cumplen la condición
-v
Hace lo opuesto a lo normal, lista las líneas que no cumplen
-i
ignora mayúsculas y minúsculas
pattern
texto que se busca
filename
archivo sobre el que se hace la búsqueda
107
ordenamiento de un archivo - r ordenamiento en orden inverso nombre del archivo -o archivo destino
Ejemplos $ sort /etc/passwd $grep home /etc/passwd | sort $grep home /etc/passwd | sort –r $sort /etc/passwd –o nuevopasswd
106
108
27
Cambio de propietario y grupo
chown
chgrp
Otros comandos
cambio de propietario de archivos o directorios cambio de grupo sobre archivos o directorios
pidof
diff
find
$ chown pepe archi archivos
$ chgrp mgmt archi1 listado2
locate tar
Indica el número de proceso, si se colgara un proceso se hace pidof <nombre>, y da un número ese es el pid. Compara dos archivos en formato texto línea por línea. Busca algún archivo y ejecuta alguna acción con estos archivos. Lista archivos asociados al patrón dado. Empaqueta o desempaqueta un conjunto de archivos o directorios. Ver man para opciones.
109
Otros comandos
date cal clear touch
111
Otros comandos
permite visualizar o cambiar la fecha y hora del sistema muestra el calendario del mes actual, año indicado, o mes y año indicado limpia la pantalla cambia la fecha de actualización de un determinado archivo. En caso de no existir el archivo genera un archivo con 0 bytes. 110
zip gzip
bzip2
su
df
du
Comprime o descomprime archivos. Comprime o descomprime archivos, usando el compresor gunzip. Formato de compresión mas nuevo que los anteriores, permite mayor compresión de los datos. Permite realizar tareas de superusuario estando logueado como usuario normal. Permite ver el uso de los discos que se encuentran montados. Tamaño de lo usado. Permite ver el tamaño de los directorios, se puede definir en que unidad de medida. 112
28
Tareas de Control Jobs Control
Jobs Control
Desde el entorno bash se pueden comenzar múltiples programas desde el mismo prompt. Cada programa se lo denomina job Cuando un job comienza toma control de la terminal (el término proviene de las terminales bobas tipo VT-100 y Wyse-50) La terminal es la interfaz que existe cuando se trabaja en modo texto o la ventana que se crea a partir del X Windows sobre el cual el bash se ejecuta. Las terminales utilizadas en X Windows se llaman pseudo tty o pty
En cualquier momento se puede saber cuantas tareas están a cargo del bash ejecutando el comando $jobs
El listado de programas que aparece estará en dos estados posibles: ejecución (running) stopped (detenido o bloqueado)
113
Jobs Control
115
Jobs Control
Si una tarea tiene control de la terminal, cuando termina tendría que darle el control a la tarea que lo supervisa. Se tiene otra manera de trabajar $galion& Inmediatamente después de oprimir el Enter, el bash devuelve el prompt. La tarea se ejecuta en background. Si el programa ya se está ejecutando y tiene control de la terminal, se puede hacer que la tarea abandone el control de la terminal presionando CTRL-z. Esto detiene la ejecución y devuelve el control al bash, de tal modo que se pueden introducir nuevos comandos. 114
Si una tarea está detenida, se la puede empezar a ejecutar en background, dejando de este modo libre el control de la terminal. O se puede ejecutar la tarea en modo foreground, que le da el control de la terminal a la tarea Si se quiere ejecutar en background $ bg numero Si se quiere ejecutar en foreground $ fg numero siendo numero el número de job a tratar
116
29
Variables de ambiente
Variables de ambiente o entorno
Cada instancia del shell se ejecuta en su propio ambiente, dándole un look & feel particular El seteo particular se logra a través de las llamadas variables de ambiente (environment variables) Algunas variables tienen un significado especial para el shell, se utilizan en los shell scripts. Idem al concepto de variables de ambiente del NT y Windows 2000, la diferencia es que se pueden setear, ver y borrar.
Si el valor a asignar a una variable de ambiente tiene espacios en blanco, se tiene que encerrar con doble comilla $export PEPE = “Bienvenidos al Tren” Para remover o borrar una variable de ambiente $unset PEPE Cada shell tiene mecanismos especiales para setear y remover sus variables.
117
119
Variables de ambiente
Backticks ` `
Para visualizar todas las variables de ambiente $printenv Para observar alguna variable en particular $printenv OSTYPE Seteo de las variables $ variable = valor donde variable es el nombre de la variable y valor es el valor que se le asigna Una vez setea una variable se la puede pasar a otro entorno para ello se dispone de un comando $export variable
118
La salida de un proceso puede ser el parámetro de otro proceso Los backticks ( ` ) pueden embeber comandos como parámetros en otro comando. Un servidor DNS, llamado named, tiene que terminarse. cuando named comienza, escribe su número de identificación de proceso en el archivo /var/run/named.pid utilizando el comando cat se puede visualizar dicho número $cat /var/run/named.pid 1243 $kill –9 1243 Todo se lo puede ejecutar de la siguiente forma $ kill –9 `cat /var/run/named.pid` 120
30
herramientas de documentación
man
info
Block Devices Todos los dispositivos se acceden a través de archivos
Sección del Manual
Tema
1
User tools
2
System Calls
3
C library calls
4
Device Driver Information
5
Configuration files
un número mayor
6
Games
un número menor
7
Packages
8
System tools
Los archivos tipo dispositivos de bloques se utilizan para la interfaz con dispositivos tales como discos Un archivo de block device tiene 3 rasgos identificatorios
cuando se visualiza con ls –l, muestra b como primer caracter 121
man
123
block devices $ls –l /dev/hda brw-rw---- 1 root disk 3, 0 May 5 1998 /dev/hda
$man program_name
$man ls
b al principio indica que se trata de un block device
$man 3 printf
3 es el número mayor
$man 1 printf
0 es el número menor
por defecto, la sección más baja se muestra primero
$man –k printf da un informe resumido de todas las páginas del manual, con su número de sección correspondiente.
122
El número mayor del block device identifica al device driver. Cuando se accede a un archivo el número menor se pasa al device driver como parámetro diciéndole cual es el dispositivo que se accede. Si se disponen de 2 ports, que comparten el mismo device driver o sea tendrán el mismo número mayor, pero cada port serial tendrá un único número menor. 124
31
character device
find
Son archivos especiales que permiten acceder a determinados dispositivos a través del filesystem.
Los dispositivos de bloques se comunican
mediante grandes bloques, mientras que los de caracter lo hacen de un caracter por vez.
Un disco rígido es un dispositivo de bloque
Un modem es un dispositivo de caracter
Permite ubicar un archivo basado en diferentes criterios. Tiene muchas opciones (recomendación leer el man find) Para encontrar todos los archivos en /tmp que no se accedieron en los últimos 7 días $find /tmp –atime 7 –print Encontrar todos los archivos en /usr/src cuyos nombres son core y borrarlos $find /usr/src –name core –exec rm Encontrar todos los archivos en /home que terminen en .jpg y sean mayores a 100K en tamaño $find /home –name “*.jpg” –size 100k
125
character device
127
el parámetro exec
Idem a los dispositivos de bloques, empiezan en
Uno de las parámetros más utiles para find es –exec.
Este le permite a find ejecutar un comando sobre cualquier
vez de con una b de bloques con una c de caracter
archivo encontrado.
Poseen un número mayor y un número menor que cumple el mismo rol que en los dispositivos de
El nombre del archivo se pasa al comando utilizando el string “{}”, y al fin del comando se coloca un \.
Buscar el string ‘tcp’ en todos los archivos en /usr/include/netinet utilizando grep
bloques.
$find /usr/include/netinet –name “*.h” –exec grp ‘tcp’ {} \; -print 126
128
32
dd copiar y convertir un archivo
gzip
Lee el contenido de un archivo y lo envía a otro archivo. Su diferencia con cp es que realiza conversiones al vuelo (on-the-fly) y acepta datos desde una cinta o floppy u otro dispositivo. Cuando dd accede a un dispositivo, no asume nada acerca del filesystem, y coloca los datos en un formato crudo (raw format) dd se utiliza para generar imagenes de discos aún cuando el disco tenga un formato diferente. Para generar una imagen de un floppy (especialmente útil cuando tiene formatos diferentes) $dd if=/dev/fd0 of=/tmp/floppy_image donde if infile y of outfile 129
gzip
Generalmente los archivos comprimidos con gzip tienen una extensión .gz, mientras que los comprimidos con compress .z gzip lo comprime sobre sí mismo al archivo Para comprimir un archivo $gzip miarchivo Para descomprimirlo $gzip –d miarchivo.gz Para comprimir varios archivos utilizando la mejor comprensión $gzip –9 *.html 131
tar
gzip no comparte formato de archivo ni con PKzip o WinZip; sin embargo, WinZip puede descomprimir archivos comprimidos con gzip. compress era el comando para comprimir archivos tradicionalmente en UNIX, pero alguién lo patentó, de modo tal que el GLP, no pudo aplicarse a él. Para reemplazarlo se creó el gzip, que resulto con un algoritmo de comprensión mejor que el compress. Permite descomprimir archivos comprimidos con compress 130
El tar combina múltiples archivos en uno sólo.
Permite seleccionar que herramienta de comprensión se va a utilizar
Permite leer y escribir en dispositivos tal como lo hace dd.
Es un buena herramienta para realizar backups en cintas. 132
33
tape archiver
which
$ tar –cf apache.tar /usr/src/apache
crea (-c) un archivo apache.tar (-f ) conteniendo
todos los archivos de /usr/src/apache
Crear un archivo llamado apache.tar con todos los archivos de /usr/src/apache, pero mostrando lo
que sucede mientras se realiza
$tar –cvf apache.tar /usr/src/apache
Busca en el path completo para encontrar el archivo especificado en la línea de comando. Si el archivo se encuentra, muestra el path del mismo $which ls El which busca sólo en el path, mientras que el find lo hace desde donde se le indica El which por el motivo anterior es más rápido, aunque más limitado
133
tar
135
whereis
Crear un archivo comprimido con gzip llamándolo apache.tar.gz que contenga todos los archivos de /usr/src/apache, y que muestre lo que realiza mientras se ejecuta $tar –cvzf apache.tar.gz /usr/src/apache la opción –z es para que utilize el gzip como programa para comprimir el archivo. Para crear un archivo en un floppy $tar –cvzf /dev/fd0 /usr/src/apache Para recuperar la información guardada en un diskette $tar –xvzf /dev/fd0 desde ya lo recupera donde uno está parado en la estructura de directorios.
Busca en el path del usuario y muestra el nombre del archivo y su path absoluto $ whereis grep
134
136
34
sync
uname
Como se dispone de una cache de disco para mejorar la eficiencia, implica que no siempre lo que se mando a escribir a disco se realizó
Para planificar que la cache de disco escribe sobre el disco se utiliza el comando sync
Si sync detecta que la escritura de la cache ya se planificó, el kernel de inmediato baja la información a disco.
Para asegurarse que la cache de disco sea flusheada
Para obtener el nombre del sistema operativo y release del mismo $uname –s –r La opción –s parece no tener sentido, pero es muy útil cuando hay mezcla de sistemas operativos trabajando en las workstations, en una workstation SGI devuelve IRIX, mientras que en un SUN devuelve SunOS. Es muy útil en los scripts que deben trabajar en diferentes entornos de UNIX
$sync; sync 137
uname
su
En el caso en que uno estuviera conectado remotamente a diversos servidores, puede ocurrir que no sepa en que servidor está (algo parecido a los directorios) También es útil para los scripts shell, ya que se puede variar el path de acuerdo al servidor
Opción
Descripción
-m
muestra el tipo de hardware de la máquina (i686 para el Pentium Pro)
-n
muestra el nombre del hostname
-r
muestra el número de release del SO
-s
nombre del sistema operativo
-v
versión del sistema operativo
-a
todo lo anterior
139
138
Una vez que uno se logueo, si desea cambiar de identidad, o sea loguearse como otro usuario no se necesita salir y volver a loguearse, simplemente se cambia de usuario El su sin ningún parámetro intenta conectarse como superusuario. Cuando se le pasa un parámetro ese tiene que ser el identificador de un usuario del sistema. $su pepe $su – pepe El – del último comando informa que se loguee corriendo el login script que le corresponde a dicho usuario. 140
35