Processus commandes UNIX et programm

Documents pareils
Cours Programmation Système

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Séance n o 5 : Alternatives, gestion des utilisateurs et des processus

Introduction aux Systèmes et aux Réseaux

Qu'est-ce qu'un processus: Définitions

Les processus. Système L3, /39

Cours 6 : Tubes anonymes et nommés

INFO-F-404 : Techniques avancées de systèmes d exploitation

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

1 Démarrage de Marionnet

Programmation système en C/C++

Programmation système

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Outils pour la pratique

3IS - Système d'exploitation linux - Programmation système

D r o i t s D r o i t s Q u i z z : i n t e r n e t t e x t e

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Thierry Déléris. BMC Mainview Data Server Synthèse & Mise en œuvre

Les processus légers : threads. Système L3, /31

LEs processus coopèrent souvent pour traiter un même problème. Ces

Gestion des processus

DOCKER MEETUP. Christophe Labouisse

Le langage C. Séance n 4

2011 Hakim Benameurlaine 1

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Testez votre installation. Créer un répertoire vide

Stage SambaÉdu Module B. Jour 9 Outils complémentaires et problèmes récurrents divers

Environnements informatiques

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

Le système GNU/Linux IUP NTIC /11/05

Configurer une sauvegarde FTP simple et efficace

La Comptabilité UNIX System V Acctcom

Client windows Nagios Event Log

Chapitre VIII : Journalisation des événements

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Serveur de sauvegardes incrémental

Exercice sur les Dockers

Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P.

Synchro et Threads Java TM

Cours de Système : Gestion de Fichiers

sshgate Patrick Guiran Chef de projet support

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Bases de programmation. Cours 5. Structurer les données

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Analyse de performance, monitoring

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

Algorithmique et Programmation, IMA

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Chapitre 2. Cluster de calcul (Torque / Maui) Grid and Cloud Computing

Cours de Systèmes d Exploitation

Conventions d écriture et outils de mise au point

Le système de gestion des fichiers, les entrées/sorties.

Introduction au langage C

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Architecture d un système d exploitation

SCHMITT Année 2012/2014 Cédric BTS SIO. TP Serveur Backup

Gnu Linux : Bases de. l'administration

TP Service HTTP Serveur Apache Linux Debian

IFT Systèmes d exploitation - TP n 1-20%

Playing with ptrace() for fun and profit

Simulation d un système de paiement par carte bancaire

TP LINUX : LINUX-SAMBA SERVEUR DE FICHIERS POUR UTILISATEURS WINDOWS

Procédure de sauvegarde pour AB Magique

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Nouvelle version de Zonecheck, la 3.0, avec tests DNSSEC

Dans le cadre de SECURIDAY Et sous le thème de Computer Forensics Investigation SECURINETS. Analyse des fichiers LOG. Tarek LABIDI (RT3)

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Procédure d installation de la Sauvegarde de Windows Server

Bacula R - The Network Backup Solution

Administration de Parc Informatique TP03 : Résolution de noms

Sauvegardes sous Mac OS X

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

TP Bases de données réparties

1. Formation F5 - Local Traffic Manager Configuring (LTM)

Google Merchant Center

Algorithmique I. Algorithmique I p.1/??

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

Chapitre IX : Virtualisation

Travaux Pratiques sur GRID 5000

Statistiques réseau et système avec CACTI

ALOHA LOAD BALANCER METHODE DE CONTROLE DE VITALITE

Unix : Programmation Système

FORMATION : Etudiante en deuxième année de BTS Informatique de Gestion. Du 1 er Mars au 16 Avril 2010

Créer une base de données vidéo sans programmation (avec Drupal)

gestion des processus La gestion des processus

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Optimisations des SGBDR. Étude de cas : MySQL

KWISATZ MODULE PRESTASHOP

CARACTERISTIQUE D UNE DIODE ET POINT DE FONCTIONNEMENT

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Performances et optimisations

Le prototype de la fonction main()

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

Transcription:

Processus commandes UNIX et programmation C IUT du Havre Cours - TP

Plan

Plan Commandes 1 Quelques nouvelles commandes de gestion des processus Commande at Commande crontab Commande time 2 de processus

Commande at Commandes Commande at Commande crontab Commande time at permet de différer l exécution d une ou d un ensemble de commandes applications : synchronisation de deux serveurs (opération généralement nocturne), alertes, réveil...

Synopsis de la commande Commande at Commande crontab Commande time at [-f script] HEURE [date] HEURE [date] peut s exprimer de différentes manières : 12 :45 pour indiquer une heure dans la journée (ou le lendemain si l heure est passée), 13 :27 + 2 days (à 13h27 dans deux jours) 4pm Jul 31 midnight 12/31/2005 (Bonne année)

Exemple Commandes Commande at Commande crontab Commande time On désire déterminer l espace utilisé par chaque utilisateur sur le disque local. La commande est du -sh /home/utilisateur/, il faut donc faire la liste des utilisateurs et lancer la commande pour chacun d eux, d où le script du-all.sh : for i in ls do du -sh $i >> /tmp/du_utilisateurs done Commande : at 14 :43 -f du-all.sh

Commande associée Commandes Commande at Commande crontab Commande time atq permet de connaître les commandes qui sont en attente, équivalent à at -l, atrm permet de supprimer certaines commandes qui sont en attente, équivalent à at -d, > at 12 :15 -f commande-at warning : commands will be executed using (in order) a) $SHELL b) lo job 6 at 2006-01-04 12 :15 > atq 6 2006-01-04 12 :15 a guinand > atrm 6 > atq

Commande crontab Commandes Commande at Commande crontab Commande time proche de la commande at, mais permet de gérer un ensemble de travaux et d introduire facilement de la périodicité applications identiques à at, mais permet d exprimer la périodicité des travaux de manière fine, crontab permet de gérer les tables qui pilotent le fonctionnement du démon cron

Synopsis de la commande Commande at Commande crontab Commande time crontab fichier-contenant-les-lignes-de-la-crontab crontab -l : affiche la cron table de l utilisateur crontab -r : supprime la cron table de l utilisateur crontab -e : édite la cron table de l utilisateur

Commande at Commande crontab Commande time Format des lignes de la cron table Le symbole # représente un commentaire chaque ligne est constituée de 6 champs, séparés par des espaces. Ces champs représentent dans l ordre : 1 Les minutes (de 0 à 59). 2 Les heures (de 0 à 23). 3 Les jours du mois (de 1 à 31). 4 Les mois (de 1 à 12). 5 Les jours de la semaine (de 0 à 6, 0=Dimanche, 6=Samedi). 6 Enfin le programme à exécuter.

Commande at Commande crontab Commande time Format des lignes de la cron table Quel que soit le champ, il est possible de spécifier : une valeur simple : 8 un ensemble de valeurs : 2,3,4,5 un intervalle de valeurs : 2-8 toutes les valeurs du champ : * toutes les 3 valeurs entre les bornes de l intervalle : 8-20/2 (exemple, toutes les 2 heures entre 8 et 20 heures).

Exemple Commandes Commande at Commande crontab Commande time On veut compter le nombre de processus d un utilisateur donné toutes les 2 minutes entre 7h et 23h, tous les jours, sauf le samedi et le dimanche, et pour le seul mois de janvier. Ce comptage est assuré par le script ps-cron.sh. On rangera ce nombre dans un fichier /tmp/nb-procs : ps -aux grep utilisateur wc -l >> /tmp/nb-procs

Installation de la cron table Commande at Commande crontab Commande time > crontab -e on édite le fichier */2 7-23 * 1 1-5 ps-cron.sh on sauve > crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.22735 installed on Wed Jan 4 16 :54 :01 2006) # (Cron version $Id : crontab.c,v 2.13 1994/01/17 03 :20 :37 vixie Ex */2 7-23 * 1 1-5 ps-cron.sh

Commande time Commandes Commande at Commande crontab Commande time cette commande permet de connaître le temps d exécution d un programme donné, exemple : time mon-programme avec ses paramètres > time du -sh 12G /home/guinand 0.08user 0.19system 0 :00.28elapsed 99%CPU (0avgtext+0avgdata % 0inputs+0outputs (0major+459minor)pagefaults 0swaps

d un processus lancement d un programme création d un processus par le shell création dynamique de processus? primitive fork

Synopsis Commandes #include<sys/types.h> #include<unistd.h> pid_t fork(void) ;

Primitive fork() Commandes fork() créé un nouveau processus à partir d un processus existant, le nouveau processus est appelé processus fils et l existant est appelé processus père, la valeur de retour de fork() prend une valeur différente dans le processus père et dans le processus fils : 0 dans le fils le pid du processus fils dans le père -1 en cas d échec

Un premier exemple en C #include<unistd.h> #include <sys/types.h> #include<stdio.h> main() { pid_t pid ; switch(pid=fork()) { case(pid_t)-1 : perror("pb dans le fork") ; exit(2) ; case(pid_t)0 : printf("valeur de fork = %d \n",pid) ; printf("je suis %d, mon père est %d \n",getpid(),getppid()) ; exit(0) ; default : printf("valeur de fork = %d \n",pid) ; printf("je suis le père %d et mon père est %d \n",getpid(),getppid()) ; exit(0) ; } }

Suite Commandes main() { pid_t pid ; int a = 10 ; printf( %d : a vaut %d,getpid(),a) ; switch(pid=fork()) { case(pid_t)-1 :... case(pid_t)0 : printf( %d : a vaut %d,getpid(),a) ; a++ ;... break ; default : printf( %d : a vaut %d,getpid(),a) ;... break ; } printf( %d : a vaut %d,getpid(),a) ; }

Quelques expériences Initialisez une variable entière avant l appel du fork() et modifiez-la dans le code du fils, que se passe-t-il? Que peut-on en déduire? on fait compter le processus père et le processus fils jusqu à 100, 200 puis 1000. Comment cela se passe-t-il? Que peut-on en déduire? Arrive-t-il des situations particulières? modifiez le programme de telle sorte que le père et le fils au début et à la fin du comptage indiquent qui ils sont et qui sont leur père. Que constatez-vous? Pourquoi?

Quelques éléments de réponse Initialisez une variable entière avant l appel du fork() et modifiez-la dans le code du fils, que se passe-t-il? Que peut-on en déduire? On constate que les deux valeurs ne sont pas identiques, chaque processus travaille sur sa propre copie des données

Quelques éléments de réponse on fait compter le processus père et le processus fils jusqu à 100, 200 puis 1000. Comment cela se passe-t-il? Que peut-on en déduire? Arrive-t-il des situations particulières? jusqu à 100, le fils termine son décompte avant que le père n ait pu commencé, mais les choses changent lorsque la valeur est grande on peut en déduire que les deux processus sont ordonnancés de manière indépendante l un de l autre, on constate également quelque fois que le prompt ne réapparaît pas à la fin de l exécution.

Effet de l ordonnancement

Quelques éléments de réponse modifiez le programme de telle sorte que le père et le fils au début et à la fin du comptage indiquent qui ils sont et qui est leur père. Que constatez-vous? Pourquoi? on constate que pour certaines exécutions, le fils n a plus son père, ceci se produit lorsque le père termine son exécution avant que son fils n ait terminé la sienne. Pour conserver l arborescence des processus, le fils est rattaché, par le système, à un autre processus.

Application au tri par insertion On va réaliser le tri par insertion avec un programme C simple et avec un programme qui partage le travail entre le père et le fils. Principe : création d un tableau par le père père et fils remplissent puis trient leur tableau attente de la fin du fils par le père le père réalise la fusion des résultats

Synchronisation père/fils rien ne garantie que le fils se termine avant le père le père doit attendre la fin du processus fils pour accéder aux résultats primitive de synchronisation : waitpid() l appel à cette primitive par le processus père le bloque tant que le fils n est pas terminé

Synopsis Commandes #include <sys/types.h> #include <sys/wait.h> pid_t wait (int * status) ; pid_t waitpid (pid_t pid, int * status, int options) ; status apporte des informations sur les conditions d arrêt du fils (pour nos exemples, ce sera généralement (int *)NULL), options permet d effectuer un appel non bloquant et d avoir des informations sur les fils bloqués (généralement 0).

Exemple - Commandes reprenez le code de comptage ajouter la primitive waitpid() faites-le tourner pour de grandes valeurs que se passe-t-il?

Exercice Commandes reprenez le code précédent et modifiez-le de telle sorte que le père et le fils effectuent un tri par insertion de leur tableau et écrivent leur résultat chacun dans un fichier écrire une procédure de fusion des résultats à partir de deux tableaux de taille N/2 en un tableau de taille N et qui sauvegarde le nouveau tableau dans un fichier (on prendra celui du père) effectuez une comparaison en temps (time) du tri d un tableau de 2n éléments (de l ordre de plusieurs dizaines de miliers) par un processus seul, puis faites la même expérience avec votre code. Que constatez-vous?