Primer curso de Escuela Newton. Serán 8 clases sobre los conocimientos mínimos necesarios para poder trabajar cómodamente en cualquier sistema operativo de la familia Unix (en particular Linux - Ubuntu) Dictado por Javier Sitaker. 8 Clases. Comienza el 5 de Marzo de 2012. Mas info: [email protected]
Lamentablemente, un montón de nuestros sistemas actuales Unix están en otro mundo, diferente del de las interfaces de Web y GUI que usamos cotidianamente --- un mundo subterráneo debajo del iPhone, Android, Kindle, Mac, casi todos los servidores, y los desktops de software libre. Éste curso te abre las puertas a todo ésto.
Trae tu laptop con Ubuntu o Debian ya instalado.
(ref: https://gist.github.com/gists/1870364)
El conocimiento fundamental para usar el terminal en vez de Finder o Nautilus para la mayoría de las cosas.
- intro: qué quiere decir SO? breve historia de Unix y GNU
- bash y terminal:
- qué es un terminal? y un shell?
ls,cd,less,emacs- autoayuda:
man - programas para manejar archivos:
cp,mv,rm - filosofía de Unix: shell y filesystem como interfaz usuario
- tab-completion para navegar el sistema de archivos
- ^R
- sistema de archivos (filesystem):
/home/bin/etc
- algunos comandos más:
lsb_releaselocate
El conocimiento fundamental para entender lo que "realmente" está pasando en la máquina.
- qué es un kernel? y un proceso?
- visualizar la relación con
strace
- visualizar la relación con
- básicos de monitoreo:
topkillall,kill,sudo kill:)df,du
- interfaz entre kernel y otros programas:
strace/dtruss- ^C
- más partes del filesystem:
- montar y el comando
mount /boot/usry por qué
- montar y el comando
- básicos de manejo de paquetes:
- qué son paquetes?
apt-get install
Qué pasa en la máquina mientras bootea, y cómo resolver problemas cuando algo no anda, la mayoría del tiempo.
- cómo se bootea, y por qué
- BIOS
- bootloader
- kernel
- el proceso de booteo con sysvinit (Mac usa launchd, Ubuntu usa Upstart)
- segundo nivel de monitoreo:
htopdstatlsofkdirstato GrandPerspective
- más partes del filesystem:
/tmp/var,/var/log
Cuando hay alguna tarea repetititiva en la compu, hay que automatizarla. En Debian (y otras distribuciones de Linux) tenemos automatizadas muchas tareas de administración de sistemas que los pobres usuarios de Mac y Windows aún están haciendo a mano. Una vez que algún desarrollador Debian tenga configurado e instalado algún software en particular, su trabajo puede aplicarse a todas las máquinas del mundo. También tenemos unas herramientas para usar el shell cómodamente en vez de un sistema de ventanas.
- no más DLL Hell!
- más cosas del sistema de paquetes APT
apt-get update; apt-get upgradeapt-get removeapt-cache searchtypeydpkg -Sdpkg -L/etc/apt/sources.list
- más herramientas del shell
- ^Z, fg, bg
kill -STOP,kill -CONTpushd,popd,cd -,~-
main,non-free,contrib, Ubuntuuniverse,multiverse, y otros repositorios de paquetes
La mayoría de las máquinas Debian o Ubuntu son servidores, que suelen estar colocados en centros de datos. Cómo usarlas como si estuviesen en tu casa? O aún más facilmente, porque hay menos cortes de luz.
ssh- reconectar a tu sesión con
screen -DURR - compartir la sesión con los demás
screen -x - VPN instante con
ssh -D - disponibilizar servicios en tu notebook con
ssh -R - sincronizar sistemas de archivos con
rsync - más del shell y terminal:
- M-.
!!,!$- ^L y
reset - ^X ^E
- más del monitoreo:
iostat,vmstatsensorswatchtail -fy-Fiotop
A veces hay un problema que no podés resolver simplemente a traves de matar procesos, actualizando paquetes, y borrando archivos. Tenés que entender en más detalle qué está pasando para arreglar el tema.
apt-get sourceydebian/rules build./configure && makeapt-get build-depltrace- sacando un stack trace con GDB
- entendiendo el proceso de compilacion de C, Objective-C, y C++ para resolver dependencias
objdump,readelffile,xxd
Hay algunos temas que nos importan mucho más para el uso de una máquina con Linux como desktop que para un servidor, por lo menos un servidor que alguien demás ya instaló.
- dispositivos (drivers, etc.)
modprobey/proc/modules- módulos privativos
dmesg- monitoreo con
powertopylatencytop - Synaptic
- ejecución remota con
| ssh host cmd | - CloneZilla
- las capas del modelo TCP/IP
Ethernet(y ARP y netmasks)- IP/ICMP
- TCP/UDP/DNS
- HTTP/SSH/SMTP/RTP
ifconfigyipmtr(otraceroutepara los pobrecitos)- DHCP
^\ disown pushd popd debsums dpkg -l /var/tmp /usr/share/doc mount --bind /sbin syscalls ELF dmesg grep awk sort uniq find xargs join comm dd >() <() diff patch perl -pie s/// perl -ne print if route -n netstat -an