Sessió 6 curs programació linux

De Wikijoan
Dreceres ràpides: navegació, cerca

Programació dimonis

========

Continuació sessió 5


ProgramacioDimonisLinux.pdf


cd /etc/

ls rc

són els nivells dels dimonis:


rc0: nivell 0, màquina apagada

rc1: nivell 1, sistema monousuari

rc2: debian sempre es queda en aquest nivell

en altres sistemes: nivell 5 (executar entorn gràfic), nivell 6 (reboot)


ls -l rc0.d/ -> veiem que estan en color blau (són enllaços).

amb aquesta comanda apareixen els enllaços, on es veu la crida al fitxer en la carpeta init.d

s (start)

k (stop)

el número després de la s o la k indica l'ordre d'execució, com s'executen els serveis en l'inici de la màquina.

Són scripts en bash. La plantilla de com s'ha de fer un fitxer d'aquests és un skeleton (no cal reinventar, ja està fet i s'ha d'adaptar)

/etc/init.d/skeleton

L'objectiu és que el servidor d'echo de la setmana passada crearem els init.d, i l'empaquetarem, i així veiem tot el procés amb un servidor senzill (servidor echo)


. /lib/init/xxx.sh -> és un include d'un fitxer en bash


syslog (registre del sistema)

és un servei que centralitza els missatges de log

normalment agafa els missatges de la pròpia xarxa, però es pot configurar com a client/servidor i agafar els missatges de log de tota la xarxa.


hi ha una sèrie de nivells, i nivells llindar (nivell de debug, depuració, error,...)

el nivell llindar es configura en el syslog.conf


com es fa a nivell de programació?

/usr/include/syslog.h


visualitzador de registres de log. L'eina es diu gnome-system-log (executar-la)

-> té unes utiltiats gràfiques (surt en negreta els logs nous), però també es pot obrir directament el fitxer


$tail -f /var/log/syslog -> mostra la última línia del fitxer de forma continuada

hi ha un paràmetre per indicar quantes línies es mostren. Per defecte, 10?


al cap i a la fi, l'objectiu és deixar rastre en el log del funcionament del nostre servidor d'echos.

A partir del skeleton, el modifiquem pensant en la nostra aplicació (tenir molt present els paths)


sudo cat /etc/default/rcS -> controlar coses que es fan quan s'inicia la màquina

per ex, TMPTIME=0 diu que cada vegada que s'inicia la màquina s'esborra el contingut de la carpeta /tmp

Podem posar el valor de 60 per dir que ho esborri cada 2 mesos.

VERBOSE=no ho podem canviar a yes.


Falta empaquetar l'aplicació

================================================

Sessió 6. Programació en C. 2a part

=======================

ls -la /dev/tty* -> són els dispositius de terminal que tenim (tty ve de teletipus, dels ppis de UNIX)

avui en dia hem substituït la impressora per una pantalla, però continuem tenint la mateixa arquitectura


Ctrl-ALT-F1 -> anem al terminal 1 (tty1)

en iniciar la màquina tenim 6 terminals, i el terminal 7 és la pantalla gràfica (provar-ho)


Ctrl-ALT-Supr mata una terminal gràfica


pseudo-terminals: són terminals software. Són les terminals de Linux amb què treballem habitualment.

Ctrl-Maj-T-> una nova terminal, que en la nostra consola és una nova pestanya.


$lsof -> ens ensenya tots els fitxers oberts en aquest moment (llarg)

(ls open files). Filtrem la sortida:

ls | grep pts (pseudo-terminals)


consoles virutals: Ctrl-ALT-Fx


getty (get tty): obtenir una terminal

finger: mostra informacio d'usuaris i terminals


$tty -> /dev/pts/1 (estic en una pseudo-terminal)


$ write user (tty) missatge -> per enviar un missatge a un usuari


en la wiki del curs: http://acacha.dyndns.org/mediawiki/index.php/Exemples_de_Shell_Scripts

(buscar per scripts)

és una mediawiki (com la wikipedia), que significa que podem cercar per paraules

instal.lar-la a l'institut!!

la pàgina de mediawiki.org està fet amb la pròpia mediawiki



Exemple Noecho. No mostrar una Contrasenya -> programació en C a baix nivell de la terminal (per no fer echo en el password, o bé canviar el caràcter de pwd)


cd /sessio6/terminals/noecho

per descarregar-se els fitxers de la sessió 6 ho fem des del Eclipse, amb el CVS, tal com es va fer la setmana passada.


banner -> aplicació per imprimir títols amb caràcters grossos

$apt-get install banner (potser ja està instal.lat)


llibreria ncurses -> escriure aplicacions amb interfícies basades en text. Serveix per exemple per fer instal.ladors amb menús, botons, etc.


amb php es poden fer aplicacions que no siguin web.


sudo apt-get install libncurses5 libncurses5-dev


s'instal.len dos paquets

libncurses5 -> per treballar directament amb l'aplicació

libncurses5-dev -> per desenvolupadors


gcc -o holamon -lncurses holamon.c (linka amb ncurses)


  1. include <ncurses.h>

int main() {

initscr(); -> inicia la finestra. Ara podria ficar colors a la finestra, etc.

printw("Hola Mon!!!");

refresh();

getch();

endwin();

return 0;

}


següent exemple: finestra amb colors

  1. include <ncurses.h>


int main() {


       initscr();

if (has_colors()) {

       	start_color();

init_pair(1,COLOR_BLUE,COLOR_YELLOW);

attron(COLOR_PAIR(1));

printw("Hola Mon!!!");

attroff(COLOR_PAIR(1));

       }
       refresh();
       getch();
       endwin();
       return 0;

}


per exemple, en el CVS hi ha unes torres de hanoi fetes amb ncurses.


en el CVS, en ncurses_programs, hi ha el fitxer makefile que dóna instruccions de com s'ha de compilar.

Aleshores executem make, i llegint el fitxer makefile, compila els fonts de cadascuna de les carpetes, i dóna les istruccions finals (per exemple, diu que vagis a /demo/exe)

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines