Guía 1er laboratorio
Linux - Comandos - Fork
Cuentas
Linux:
• Cuenta (passwd):
[email protected]
(sis2013OP..)
Windows:
• Cuenta (passwd): So (s2013O..)
Programación en C
Linux
• sobre Linux:
• gcc compiler
• sobre Windows:
• Dev-C++ (http://sourceforge.net/projects/dev-cpp/)
• Code::Blocks (http://codeblocks.org).
• Entorno de trabajo:
• Modo texto: usando las terminales.
• Modo gráfico: entorno CDE (Common Desktop Environment) -
Gnome -KDE
• Ingreso al sistema y manejo de múltiples
consolas:
• En cada sesión se pueden habilitar varias sesiones. KDE,
Gnome, Java.
• Root: superusuario
• Cambios modo texto/ modo gráfico: ctrl+alt+f1, ctrl+alt+f7
Linux - Estructura de
directorios
Los directorios tienen diferentes funciones de almacenamiento y
organización. Clasificación:
• Estáticos: sólo los cambia el root, pero pueden ser leídos por
otros usuarios (/bin, /sbin, /opt, /boot …)
• Dinámicos: pueden leerse y escribirse por su respectivo
usuario. (/var/mail, /var/spool/, /home ..)
• Compartidos: archivos que pueden leerse por varios usuarios
y otra computadora
• Restringidos: archivos que no se pueden compartir, sólo
modificables por el admin (/boot, /etc, )
Linux: Estructura de
directorios
/ → directorio raíz.
/etc → configuración de los programas instalados.
/etc/X11/ → Archivos de configuración para el X Window System,
versión 11.
/var (variables) → Archivos variables.
/var/spool: Tareas a la espera de ser procesados (ej: colas de
impresión y correo no leído)
/var/mail: correos o mensajes de los usuarios.
/var/log: logs del sistema.
/var/run: información reciente.
/var/tmp: archivos temporales (no se borran entre sesiones).
Linux: Estructura de
directorios
/bin → binarios (ejecutables).
/sbin → binarios de sistema (uso exclusivo del root).
/usr → usuarios (aplicaciones y datos).
/usr/bin: ejecutables para todos los usuarios.
/usr/sbin: binarios no esenciales. por ej: demonios para varios servicios
de red.
/usr/include: headers para C y C++
/usr/lib: bibliotecas para C y C++.
/usr/src: códigos fuente de algunas aplicaciones y del kernel Linux.
Linux: Estructura de
directorios
/root → /home del administrador.
/dev → dispositivos del sistema.
/home → archivos del usuario.
/home/sistop
/lib → bibliotecas esenciales.
/mnt → montajes temporales de unidades.
/tmp → ficheros temporales.
/proc → procesos.
/media → montaje de los medios extraíbles de almacenamiento.
Comandos básicos
• cd: ingresar/cambiar de directorio.
• mkdir: para crear un directorio. — rmdir: para borrar un directorio.
• rm: para borrar archivos. — cp: para copiar archivos — mv: para mover o cambiar de
nombre a un archivo.
• ls: muestra el contenido de un directorio
• ls –a : muestra las entradas que comienza con .
• ls –l : muestra todos los atributos
• more : muestra texto paginado en pantalla.
• cat: concatena archivos y los imprime en la salida standard
• touch: cambia la fecha y hora de un archivo
• pwd: para ver la posición en la que se encuentra un archivo
Comandos básicos
• grep: buscador de patrones, por ej: grep root /etc/passwd
(-n) muestra el número de línea, por ej: grep –n root /etc/
passwd
grep –v bash /etc/passwd | grep –v nologin
• find: busca por archivos en la jerarquía de directorios
find <path> <expresión>. Ej: find / -name nombrearch
• finger: lista información del usuario.
• wc: imprime el número de líneas, palabras y bytes de un archivo
Comandos básicos
• W: cuántos están logeados y qué están haciendo — Who: quienes están logeados
• &: para ejecutar un proceso en background
• man: ayuda — man –a: muestra en todos los manuales en que aparece
(1) programas ejecutables o comandos del shell
(2) systems calls
(3) library calls
(4) special files (usually found /dev)
(5) file formats and conventions
(6) juegos
(7) misceláneos
(8) system administration commands
(9) kernel routines (no standard)
• uname: imprime la información del SO y la máquina (nombre, versión, etc)
Comandos básicos
• Montaje del sistema de archivos manualmente:
mount /dev/fd0 – mount /dev/floppy para
montar un diskette y luego poder verlo con:
ls /mnt/floppy, /media/floppy
umount/dev/fd0 – umount/dev/floppy para
desmontar el diskette y poder utilizar otro o
apagar la computadora.
Comandos básicos
• Editores:
—> vi: editor por default de UNIX (modo de edición y comado)
—> pico: en la versión de Centos y en el Fedora 4 no viene
este paquete, en algunas distribuciones viene incluido. En
realidad lo llaman nano
—> kate: editor en modo gráfico del KDE.
—> dtpad (funciona hasta la versión de red hat 9)
—> emacs: reconoce las palabras reservadas.
Modos de init (Fedora)
0 — Halt
1 — Single-user text mode (without networking)
2 — No se utiliza (a definir por el usuario) - Full multi-user text
mode
3 — Full multi-user text mode
4 — Sin usar (a definir por el usuario)
5 — Full multi-user graphical mode (with an X-based login screen)
6 — Reboot
Init
Gestión de usuarios y grupos
/etc/passwd
• El init como proceso 1 de Unix.
• /etc/init.d, /etc/rc0.d, /etc/rc1.d …
• ¿Qué relación tienen estos directorios con los
distintos modos de arranque?
• Quién puede acceder al sistema y qué puede hacer.
• Primera linea de defensa del sistema contra accesos no deseados.
• Registrados las cuentas de usuarios, claves de accesos y privilegios.
Ejemplo —> usuario1:FXWUuZ.vwXttg:500:501:usuario
pepito:/home/usuario1:/bin/bash
Nombre de la cuenta (Login)
UID de esta cuenta
usuario1:
FXWUuZ.vwXttg: Clave de acceso encriptada (password)
500:
501:
usuario pepito:
/home/usuario1:
/bin/bash: Interprete de comando (shell) de usuario pepito
GID del grupo principal al que pertenece la cuenta
Nombre del usuario
Directorio de trabajo de usuario1
Gestión de usuarios y
grupos
• /etc/group:
Almacena información de grupos.
• /etc/shadow:
Guarda los passwords encriptados más algunas propiedades
adicionales.
Contiene una línea por cada usuario de /etc/passwd
• /etc/gshadow:
Passwords encriptados del grupo.
Comandos de procesos
(top)
• top: muestra información de procesos se están corriendo
en tiempo real.
• 1 línea: Datos del sistema
• 2 línea: Total procesos corriendo y los divide por
estados. (Running, Sleeping, Stopped, zombie)
• 3 línea: Uso de CPU en ese momento
• 4 línea: Uso de memoria
• 5 linea: Uso de SWAP
Comandos de procesos
process status (ps)
• ps: lista los procesos que se están ejecutando
• Sin parámetros: muestra procesos del usuario que está logueado.
• ps -a: procesos de todos los usuarios.
• ps -u: lista información de proceso que está corriendo (usuario,
utilización de CPU, memoria)
• ps -x: lista procesos de todas las terminales y usuarios
• ps -aux: (para que prueben los alumnos)
• ps axm: m muestra los threads de cada uno de los procesos,
funciona utilizando la librería pthread.
Comandos de procesos
(top)
• Procesos corriendo:
PID, USER, PR (prioridad), VIRT (mem virtual usada), S (estado del proceso), %CPU, % MEM
• Opciones
u → filtra por usuarios
k → matar procesos
r → cambiar prioridad
q → salir
• Ordenamiento
N (upercase) —> por PID
A (upercase) —> por aparición, primero los mas nuevos
P (upercase) —> por uso de CPU. Es la default
M (upercase) —> por memoria residente
T (upercase) —> por tiempo.
W (upercase) —> Guarda la configuración.
Comandos de procesos
(pstree - kill)
• pstree: árbol con la jerarquía de procesos.
Instalado en las distribuciones de Linux pero no
en Solaris.
• kill: para matar un proceso.
(-9) : SIGKILL . Por ej: kill -9 <procnum>
• /proc: virtual filesystem con información de los
procesos.
Comandos de procesos
Espera por terminación de procesos
• wait:
Espera a que cualquier proceso hijo termine
• waitpid:
Espera a que el proceso hijo con PID termine
• getpid, getppid: Investigar
Fork
• Crea una réplica de sí mismo.
• Es un system call implementado en el kernel.
• Continúa ejecutando concurrentemente.
• La copia creada se llama proceso “hijo” del proceso originario
(proceso “padre”).
• Idénticos procesos resultantes, salvo PID.
• El system call devuelve el PID del hijo al padre y 0 al hijo.
• El hijo hereda recursos del padre (ficheros abiertos, variables)
• Más información: man fork
Comandos de procesos
(exec)
• exec: Cambia la imagen del proceso actual. Esto
es, sustituye la imagen de memoria por un
programa diferente.
int execlp(const char *file, const char
*arg, ...);
primer argumento → la ruta absoluta del archivo
a ejecutar
retorna -1 en caso de error.
*arg → argumentos a pasar al ejecutable
Comandos de procesos
(exec)
• Existen diferentes versiones del exec:
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char
*arg, ...);
int execv(const char* path, char* const argv[]);
int execve(const char* path, char* const argv[],
char* const envp[]);
int execvp(const char *file, char *const argv[]);
• Para su funcionamiento se requiere incluir el archivo de
cabecera unistd.h
Uso del compilador
• gcc [ opción | archivo ] …
gcc -o salida entrada.c
probar:
- gcc hola.c
- gcc hola hola.c
• Para investigar:
man gcc
comando “>”
Comentarios de: Linux - Comandos - Fork - Guía 1er laboratorio (0)
No hay comentarios