Documente Academic
Documente Profesional
Documente Cultură
Les sessions
L arrt du systme
Chgt PROM
Boot primaire
param noyau et modules
dans /stand/system
ISL
Grub-Lilo
Chgt noyau
/stand/vmunix
LOADER
Automatique
ou
Intractif
dmesg
Swapper (PID=0)
init (PID=1)
/sbin/init
(PID=1)
/etc/inittab
Ensemble dapplications
compatibles avec le
niveau d'init courant
0
arrt du systme (shutdown = init 0)
1 ou S maintenance ou Single user (root)
2
multi-utilisateurs
3
niveau 2 + rseau
4
niveau spcifique dfinir
5
niveau 3 + mode graphique (Linux)
6
reboot
q
force init relire /etc/inittab
JY CELLE anne 2013-2014
Les commandes
init
pour changer de niveau (telinit)
runlevel, who -r pour connatre le niveau
JY CELLE anne 2013-2014
/etc/rc*.d
Activation du rseau
cron
lpsched
Applications spcifiques
init
rc*
/etc/rc2.d/*
K10ora
S01mount
K30tcp
S35cron
Les fichiers dans /etc/rc*.d sont en fait des liens vers les vritables scripts de
dmarrage qui sont tous situs, indpendamment du niveau d'init, dans /etc/init.d.
La gestion de ces liens peut se faire de manire simplifie avec des commandes
comme chkconfig ou service sur Redhat ou Suze ou update-rc.d sur Debian.
JY CELLE anne 2013-2014
ls l /etc/rc.d
init.d/
rc*
rc0.d/
rc4.d/
rc5.d/
rc6.d/
rc.sysinit*
ls l /etc/rc.d/rc5.d
K20rstatd@
S05kudzu@
S26apmd@
rc1.d/
rc2.d/
rc3.d/
rc.firewall rc.local* rc.modules*
K20rusersd@
S10network@
S56rawdevices@
K20rwalld@
S11portmap@
S56xinetd@
K20rwhod@
S12syslog@
S60nfslock@
S01usb@ S05harddrake@
S20random@
S25netfs@
S71sound@
S75keytable@
init
/etc/gettydefs
getty
tty0
login
sh
getty
/etc/passwd
/etc/profile
tty1
login
ksh
$HOME/.profile
$HOME/.kshrc
$HOME/.profile
JY CELLE anne 2013-2014
10
Les processus
Le service cron
Les IPC
Le logiciel libre
JY CELLE anne 2013-2014
11
un fichier excutable
zro ou n bibliothques
utilisation de makefile
JY CELLE anne 2013-2014
12
13
Ordonnanceur ou scheduler
2 type de processus
14
signal
ready
signal
ordonnancement
run
terminaison
zombi
RUN : Le
fin dentre/sortie
Entre/sortie
sleep
15
Les processus :
La table des process
identifiant
identifiant du pre
Identifiant d'un groupe de processus
propritaire
groupe propritaire
terminal de rattachement
PID
PPID
PGID
UID
GID
TTY
16
17
18
Les processus :
Utilisation primitives fork et wait
/* sync1.c
/* synchronisation de pere et fils par wait
#include <stdio.h>
main()
{
int n;
*/
*/
if ((n=fork()) == -1)
{
printf("Le fork est en erreur \n");
exit(1);
}
else if (n==0)
{
/* on est ds le process fils
*/
printf("identification du processu fils : %d\n",getpid());
sleep(10);
exit(3);
}
else
{
/* on est ds le process pere
*/
int m,n;
/* si le fils se termine normalement par exit le pere recoit
/*
256 fois la valeur de exit*/
/* si le fils se termine par reception de signal -> plante
/* le pere recoit le numero du signal eventuellement augmente
/* de 128 si il y a eu creation de fichier core
m=wait(&n);
printf("fin du process %d avec valeur de retour de wait %d\n",n,m);
}
}
*/
*/
*/
*/
19
La commande kill interromps un processus si celuici n a pas t programm pour trait le signal reu.
Les signaux les plus courants sont
1
2
3
9
15
SIGHUP
SIGINT
SIGQUIT
SIGKILL
SIGTERM
simulation de dconnexion
touche DEL ou SUPPR
idem avec cration de core
arrt immdiat
demande de terminaison
20
init
kill
httpd
sh
PID=382
Processus
dtach
PID=225
# kill -SIGHUP 225 -> renvoie config ou gnre un dump interne
# kill -1 382 -> kill du shell
JY CELLE anne 2013-2014
21
init
shell de connexion
sh
/etc/profile
$HOME/.profile
TERM=vt220
export TERM
JY CELLE anne 2013-2014
22
$ echo $TZ
MET-1METDST
$ date
jeudi, 22 novembre 2001, 20:51:19 MET
$ export $TZ=GMT
$ date
jeudi, 22 novembre 2001, 20:51:46 GMT
JY CELLE anne 2013-2014
23
ps -ef
liste des processus
su c ou sudo lance un processus sous un compte
at
lance un processus en mode diffr
crontab
lance une application priodiquement
cmd &
lance une commande en background
nohup cmd lance une commande en dtache
wait
attend la fin des commande background
sleep n
attend n secondes
exec cmd
substitution de commande
. cmd
excute le script cmd
time cmd
visualise le temps dexcution dun processus
JY CELLE anne 2013-2014
24
temps dexcution
temps dattente
temps pass dans le systme
nice value (entre 0 et 40 par dfaut 20)
25
La commande at
exemples
at 1230 feb 25
at 4 Saturday
JY CELLE anne 2013-2014
26
Crontab (1/2)
Fichier crontab
/var/spool/cron/crontab/jean
crontab
jean
cron.allow
cron.deny
SPOOL
crond
log
27
Crontab (2/2)
$ more cronfile
* *
*
*
*
0 21
*
*
*
0 0
1
* 1-6
30 12 3,8,15 3-10 *
minutes
(0-59)
heure
(0-23)
date
who
cal
touch .profile
la commande
mois
(1-12)
jour
(1-31)
Jour de la semaine
(0-6) 0:dimanche
La commande crontab
crontab -e
edite le crontab
crontab -l
liste le crontab
crontab -r
supprime son crontab
JY CELLE anne 2013-2014
28
printf( );
$ compta
printf( );
printf
...
$ ps
PID TTY
TIME
CMD
854
pts/0
00:00:00
1029
pts/0
00:00:00
JY CELLE anne 2013-2014
calcul
compta
29
communication inter-processus
30
31
pipe(p)
int p[2]
p[0] accs en lecture
p[1] accs en criture
Primitive de cration
Seuls des process ayant
communiquer par ce moyen.
une
filiation
peuvent
32
*/
*/
*/
*/
if (n)
{
/* processus pere */
fclose(out);
/* lecture d'un entier
*/
while (scanf("%d",&m) != EOF)
if (m%2 == 0) fprintf(in,"%d",m);
/* fermeture du pipe en ecriture
*/
fclose(in);
wait(0);
}
else
{
/* processus fils */
int t[NMAX],i=0;
/* fermeture en ecriture indispensable
/* pour atteindre la fin du pipe
*/
fclose(in);
while (fscanf(out,"%d",&m) != EOF)
{
printf("boucle \n");
if (i<NMAX) t[i++]=m;
}
if (i == NMAX) t[NMAX-1]=0;
else t[i]=0;
/*t[(i==NMAX)?NMAX-1:i]=0;*/
for (m=0;m<i;m++) printf("%d\n",t[m]);
}
}
*/
33
34
Primitive de cration
dev = 0
Pour mode voir /usr/include/sys/stat.h
35
*/
*/
*/
/* comfifo2.c
/* process 2 qui lit dans pipe nomme ou FIFO
#include <stdio.h>
#include <fcntl.h>
main(n,v)
int n;
char *v[];
{
int p;
char c;
/* ouverture du pipe v[1] en lecture */
if ((p=open(v[1],O_RDONLY,0))==-1)
{
printf("ouverture impossible\n");
exit(2);
}
/* lecture de 1 caractere
*/
read(p,&c,1);
/* impression du caractere lu
*/
putchar(c);
putchar('\n');
}
*/
*/
36
Les signaux
37
/* signal.c
/* test de reception de signal sur tache en attente
*/
*/
#include <stdio.h>
#include <signal.h>
inter()
{
printf("signal recu \n");
}
main()
{
int n;
signal(SIGINT,inter);
n=pause(10);
printf("valeur de retour de pause %d\n",n);
}
38
Commandes
39
40
actions possible
41
42
43
44
/* ecribal.c
*/
/* essai d'ecriture de message dans boite aux lettres*/
/* on repere la bal en donnant son identificateur*/
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
extern int errno;
main()
{
int i,num;
long t;
struct msgtext {
long mtype;
char mtext[256];
} message;
struct msqid_ds buf;
printf("Numero de la file ou ecrire \n");
scanf("%d",&num);
if (msgctl(num,IPC_STAT,&buf)==-1)
{
printf("erreur sur la bal recherchee %d\n",errno);
exit(1);
}
/* affichage caracteristique de la bal
*/
printf("Nb de message avant ecriture: %d \n",buf.msg_qnum);
printf("PID dernier process ecrivain: %d \n",buf.msg_lspid);
*/
45
46
Le logiciel libre
Xfree86
GNOME, KDE
Apache, Samba
MySQL, PostresSQL
47
Paquetage PKG
Paquetage RPM
rpm
JY CELLE anne 2013-2014
48
Les patches
patchadd, patchrm
les patch cluster
49