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_release
locate
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:
top
killall
,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
/usr
y 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:
htop
dstat
lsof
kdirstat
o 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 upgrade
apt-get remove
apt-cache search
type
ydpkg -S
dpkg -L
/etc/apt/sources.list
- más herramientas del shell
- ^Z, fg, bg
kill -STOP
,kill -CONT
pushd
,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
,vmstat
sensors
watch
tail -f
y-F
iotop
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 source
ydebian/rules build
./configure && make
apt-get build-dep
ltrace
- sacando un stack trace con GDB
- entendiendo el proceso de compilacion de C, Objective-C, y C++ para resolver dependencias
objdump
,readelf
file
,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.)
modprobe
y/proc/modules
- módulos privativos
dmesg
- monitoreo con
powertop
ylatencytop
- Synaptic
- ejecución remota con
| ssh host cmd |
- CloneZilla
Esencial.
- las capas del modelo TCP/IP
Ethernet
(y ARP y netmasks)- IP/ICMP
- TCP/UDP/DNS
- HTTP/SSH/SMTP/RTP
ifconfig
yip
mtr
(otraceroute
para 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