Skip to content

Instantly share code, notes, and snippets.

@Diex
Created February 20, 2012 18:09
Show Gist options
  • Save Diex/1870399 to your computer and use it in GitHub Desktop.
Save Diex/1870399 to your computer and use it in GitHub Desktop.
Unix - La Navaja del Ejercito Suizo

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: ....@mail.com

Resumen Del Curso

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)

Primera clase: Street Fighting Unix

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

Segunda clase: Ancient Secrets

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
  • 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é
  • básicos de manejo de paquetes:
    • qué son paquetes?
    • apt-get install

Tercera clase: Genesis y Exodus

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

Cuarta clase: La revolución industrial

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 y dpkg -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, Ubuntu universe, multiverse, y otros repositorios de paquetes

Quinta clase: Acceso remoto

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

Sexta clase: Street Fighting Programming

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 y debian/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

Septima clase: El desktop

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 y latencytop
    • Synaptic
    • ejecución remota con | ssh host cmd |
    • CloneZilla

Octavo clase: networking

  • las capas del modelo TCP/IP
    • Ethernet (y ARP y netmasks)
    • IP/ICMP
    • TCP/UDP/DNS
    • HTTP/SSH/SMTP/RTP
  • ifconfig y ip
  • mtr (o traceroute para los pobrecitos)
  • DHCP

Lo que queda

^\ 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment