MEMENTO DES COMMANDES ESSENTIELLES
UNIX SUN SOLARIS
Durée : 3 jours
MEMENTO DES COMMANDES ESSENTIELLES
ADMINSTRATEUR UNIX
2 Préliminaires sur ce document
7 Informations de base sur le Noyau
Solaris :
8 Commandes pour avoir des
informations sur le noyau :
9 Fichiers spéciaux Unix (pour les
Entrées / sorties …) :
10 Démarrage de la machine (démarrage
système) :
11 Arrêt machine (arrêt système) :
13 Les méta-caractères utilisés dans
les commandes shell :
13.3 Autres commandes importantes :
13.4 Commande de traitement ou de
recherches de chaînes de caractères
13.4.1 Commandes “ grep, egrep, fgrep ”
13.4.3 Commandes “ nawk ”, “ awk ”
13.5 Chaînes ou caractères employés dans
les nawks :
13.6 Etiquettes “ BEGIN ” et
“ END ” :
13.7 Opérateur d’affectation
arthmétique :
13.8 Opérations dans le
“ print ” :
13.9 Liste des variables internes au
“ nawk ”
13.10 Exemple de tableau avec
nawk :
13.11 L’instruction “ printf ”
du nawk
13.12 Expressions conditionnelles avec
nawk
13.14 Instructions de contrôle next et
exit
13.15 Ecriture de sorties dans un
fichier
13.16 Commandes d’impression :
14 Commandes d’administration UNIX de
base :
15 Permissions sur un fichier :
16 Autres type de permission :
17 Chmod – tableau récapitulatif
18 Fichiers importants pour les
droits
19 Permissions et fichiers ACL :
20.1 Introduction des éditeurs courant
sous Unix
20.2 Commandes d’insertion sous “ vi ”
20.3 Commandes de fin sous
“ vi ”
20.4 Les commandes de déplacement
20.5 Les commandes de recherche sous
“ vi ”
20.6 Les commandes de déplacement dans la
ligne sous “ vi ”
20.7 Les commandes de changement et de
recherche de texte sous vi
20.8 Les commandes de suppression sous
“ vi ”
20.9 Les commandes de substitution sous
“ vi ”
20.10 La commande globale sous
“ vi ”
20.11 Les commandes de déplacement de
texte sous vi
20.12 La commande d’interaction avec le
shell sous “ vi ”
20.13 Les commandes de personnalisation
sous vi
20.14 Exemple d’abréviations sous
“ vi ”
20.15 Exemple de macros sous
“ vi ”
20.16 Exemple de contenu du fichier
“ .exrc ”
20.17 Tableau détaillé et récapitulatif
de toutes les commandes “ vi ”
21 Commandes de sauvegarde et
restauration : tar, cpio, jar, pax
21.1 Commande de sauvegarde restauration
“ tar ” :
21.2 Commande de sauvegarde restauration
“ cpio ” :
21.3 Commande de sauvegarde restauration
“ pax ” :
21.4 Commande de sauvegarde restauration
“ jar ” :
22 Gestion réseau sous Unix Solaris
(réseau TCP/IP) :
22.1 Définitions de termes réseaux :
22.4 Rsh rcp telnet rlogin ftp NFS NIS+
tftp
22.6 Type de machines Unix (dans le
contexte du réseau) :
22.7 Fichiers importants pour le réseau
(et le protocole réseau TCP/IP) :
22.9 Commandes important pour le
réseau :
22.10 Les “ remote commandes ”
ou “ r-commandes ” :
22.11 Fichiers de sécurité par rapport
aux “ r-commandes ” :
22.12 Service NIS+ et Serveur
NIS+ :
22.13.2 Fichiers importants pour NFS :
22.13.3 Process (démons) lancés pour NFS :
22.13.4 Commandes pour les montages ou démontages
NFS :
24 Gestion de Processus (process) et
de la mémoire
24.4 Appels et contrôles de
processus :
24.5 Espaces d’adressage d’un
processus :
24.8 Informations sur les
processus : la commande « ps »
24.9 Commande pour terminer un
processus : kill
24.10 Commande de gestion de
processus :
25 Notions de rédaction de scripts
shell en Korn shell :
25.1 Configuration de l’environnement en
Korn shell et Bourn shell :
25.2 Commandes sur les variables shell en
Bourne shell et Korn shell :
25.3 Variables Bourne shell toujours présentes
dans l’environnement de l’utilisateur
25.3.2 Alias “ history ” et fichier historique des commandes
passées : “ .sh_history ” :
26 Notion de “ Desktop
KornShell ” (dtksh)
27 Rédaction de scripts (programmes)
Bourne shell
27.1.1 Substitution de paramètres en shell
27.1.3 la commande “ shift ” :
27.1.4 Variables standards du shell
27.1.6 L’instruction “ case ” :
27.1.10 Calcul d’expression avec la commande “ expr ”
27.3 Les fonctions dans le shell
(sous-programmes dans le shell)
28 Annnexe : noms des fichiers
spéciaux liés à des unités de bandes
29 Commandes de communication entre
machines Unix
29.1 Messagerie électronique :
commandes « write », « wall » et « mesg » :
29.2 Courrier électronique :
commandes « mail » et « mailx »
30 Outils d’administration Solaris
33 Commande d’administration “smc”
1.
Tout
ce qui est en gras dans ce document, correspond à des commandes, des
options de commandes, des fichiers standards sous Unix Solaris, et à des mots
clés importants et tous les mots réservés UNIX.
2.
Dans
la suite, nous remplacerons souvent l’appellation “ Administrateur
système ” par l’appellation “ root ” (celui qui a tous
les droits sous Unix).
Solaris est un OS (Operating system / Système
d’exploitation) + une interface graphique Open Windows (CDE) + des Progiciels
réseau (ONC+).
Note : sur une machine donnée, peut coexister les 2
types d’environnement graphique :
CDE et Open Windows.
-> Contrôle des terminaux, lignes de communication,
imprimantes, disques dur, I/O (entrées/sorties).
-> Noyau (Kernel) : partage des utilisateurs,
applications => gère les ressources des utilisateurs,
-> partage des fichiers (UFS, VxFS ...)
Le Shell est un langage de commande du système UNIX (Job
control langage - JCL) :
è
dialogue
entre utilisateur et l'OS (le système)
Bourne : /bin/sh (prompt : $), C-shell :
/bin/csh (prompt : %), Korn shell : /bin/ksh (prompt : $)
-> # forme de shell : sh, ksh, csh
-> perl (sh, grep, sed, awk) -> utilisé majortairement pour
application Internet,
-> dtksh
(desktop Korn shell), pour environnement graphique Motif
(situé dans répertoire /usr/det/bin/dtksh , voir
en fin de ce cours).
Attention ! sous Unix, on doit distinguer
les majuscules et les minuscules, dans les commandes contrairement au MS-DOS
(par ex. le mot avec “ I ” majuscule dans cet exemple
“ Init ” n’est pas équivalent au mot avec “ i ” minuscule
dans cet autre exemple “ init ”).
CDE :
CDE (Common Desktop Environment) est l’environnement
graphique de Solaris (environnement X-Windows).
2 répertoires importants:
1) /platform/`uname
- i`/kernel
2) /kernel
uname -m : avoir la configuration hardware.
uname - i : avoir le nom de la machine (est souvent aussi le nom
réseau).
Note : ~ : répertoire d'accueil (celui dans
lequel on arrive quand on se connecte). Exemple : ls –l ~
a) pour Disques Durs, CD : /dev/dsk/... et /dev/rdsk/ ... (raw, brut ...).
b) écrans : /dev/rdsk/ ...
c) console système : /dev/console et /dev/term/ ...
d) disquette : /dev/diskette
e) bandes (DAT ...) : /dev/rmt/
....
f) imprimantes : /dev/bpp0/ ...
g) clavier : /dev/kbd/ ...
h) fichier null
: /dev/null
Langage
Forth, open boot : "OK boot", "b" :
a) Pour
booter sur le CD : ok boot cdrom
b) sur le disque : ok boot disk1
c) sur le réseau : ok boot net
-g : délais de grâce,
-i : "niveau d'init"
arrêt immédiat : init 0, shutdown - i 0 g300 ou encore halt (on force l'arrêt de toutes les applications)
arrêt avec coupure de courant : init 5, shutdown
-i 5 -g300 ou encore poweroff (on attend l'arrêt de ces
applications)
reboot : init
6, shutdown -i 6 -g300 ou
encore reboot
shutdown pour être en mono-utilisateur : init S, shutdown
La commande shutdown est dans /usr/sbin
Fin de cession : Ctl-D ou exit ou logout
(pour le csh).
Doc Unix en ligne sur la machine (si elle est installée)
:
Recherche d'une doc sur une commande : 1) man - s
section nom_cde
2) recherche par mot clé :
a) il faut d'abord installer cette fonctionnalité par :
a) install catman -w
b) la recherche par mot clé : man -k mot_clef
En résumé : Unix contient des programmes, des
utilitaires, des applications, des outils de formatages de doc (nroff, troff
...),
des outils de communications entre utilisateurs, des
éditeurs (ed, vi, voire "emacs" ...), des bases
de donnée.
Mais à la base, il ne comprend pas un traitement de
texte.
1) ls :
-a : tous les fichiers (y compris cachés ...)
-F : type du fichier
-R : liste tous les fichiers, les répertoires, avec
leurs fichiers et sous répertoires (affichage récurcif),
-l: toutes les informations possibles sur les fichiers
(type, permission, si le fichier est de type lien _ voir plus loin _,
son
propriétaire _ owner _, son groupe _ voir plus loin _, sa taille en octect, sa
date de création ou mise à jour,
et le nom du
fichier.
-d : liste uniquement les répertoires
* : tous les caractères quelconques sauf le
"." (comme sous DOS),
? : un caractère (quelconque, mais un seul caractère)
[] : ex [a-z] : liste tous les caractères de la liste
entre crochets droits, ici de a à z,
[!] : ex. : [!a-z] : on exclut une liste de caractères (ici
on exclut les caractères de a à z).
méta-caractères
utilisés pour l'exécution de commandes :
& : force l'exécution, en arrière-plan (background)
de la commande (dont elle termine la syntaxe). ex. :
cmde
& grep "toto" * >
titi &
\ : neutralise la prise en compte de caractères spéciaux
dans la commande.
`cde`: remplace par la sortie (résultat) de cette
commande,
'...' : "littéralise" la chaîne sauf les 2
quotes " ' ".
" ... ": idem sauf pour les méta-caractères
suivants : $, `, ', \, !
find rep – name nom_fic –exec cmde \ ;
stdin ® sh ® stdout (
stdout : 1> 1>> )
ë¾®
stderr ( stderr : 2> 2>> )
et 2> &1 ®sortie des stdout et stderr
dans le même fichier.
commande1 | commande2 :
le résultat de la commande1 est passé à la commande2.
commande1 || commande2 :
même si la commande1 est en échec, on exécute la commande2.
commande1 && commande2 :
on ne peut exécuter la commande2 que si la commande2 est réussie.
(code de contrôle de la
commande1 = 0 _ i.e. “ exit 0 ”)).
Note : tous le
composants d’un pipe doivent être des commandes exécutables.
tee :
syntaxe : cmde | tee [–a]
fic : tee permet à ce que la sortie sysout d’une commande
aille à l’écran et en même temps dans le fichier « fic » (note :
en ajout si l’option « -a » est précisée).
echo texte : affiche à l’écran le texte.
echo $Variable_shell : affiche à l’écran le contenu de la
variable shell.
cd [rep] : changement de répertoire.
“ cd ” sans nom de répertoire précisé : retour au
répertoire d’accueil.
cat fic : affiche contenu d’un fichier (texte).
more fic : idem
rm : suppression de fichier(s) (remove),
rm –i fic : on interroge avant chaque suppression.
rm –f fic : on force la suppression.
touch fic : création d’un fichier vide, ou mise à jour à
la date système actuelle d’un fichier existant.
mv fic fic_cible : déplacement (ou renomage) de
fichier.
cp fic [fic2 …] fic_cible : copie de fichier.
cp – p :
cp –r :
ln : ln fic fic_link ou ln –s fic fic_link
cmp fic fic2 : compare 2 fichiers (texte) ligne par
ligne.
diff fic fic2 : affiche différences entre 2 fichiers
(texte) ligne par ligne.
diff – c :
affiche 3 lignes,
diff –e :
pour executer sed ou ed
diff –n :
affichage ordre inversé et n° de ligne ;
last : affiche les dernières connexion de l’écran.
compress fic : outil de compression de fichier
uncompress fic : commande inverse de
“ compress ”
(tar c fic_tar fic : commande pour
concaténer des fichiers dans fichier de type “ tar ”, voir plus
loin).
wc fic : compte de mots (word count)
head [-N] fic : affiche les N 1ières
lignes d’un fichier (texte)
(Note :
si l’option « –N » n’est pas précisée => affiche les
10 1ières lignes).
tail [-N] fic : affiche les N dernières
lignes d’un fichier (texte)
(Note :
si l’option « –N » n’est pas précisée => affiche les
10 dernières lignes).
cut –fN –d’C’ fic (ou encore : cmd | cut –fN –d’C’
) : sélectionne le N° champs selon le caractère séparateur ‘C’. Exemples :
lognam=`id | cut -d'(' -f2 | cut
-d')' -f1`
uustat | cut -d" " -f1
Note : Avec la syntaxe –fN- indique qu’on sélectionne tous les champs à
partir du N° champ
Avec la syntaxe –f-N indique qu’on sélectionne tous les champs
jusqu’au N° champ.
od fic : affiche contenu d’un fichier, od –o :
en octal, od –c : affichage des caractères affichables,
od –x :
en hexadécimal,
split [-n] [-an] fic [fic_cible]
Note : si fic_cible est omis, créé des fichiers
portant comme nom “ xaa ”, “ xab ” etc ..
Saucissonne
un fichier en x fichiers de “ n ” ligne chacun.
paste fic1 fic2 : fusionne les fichiers fic1 et fic2,
ligne par ligne.
tr [-n]|[-an] ‘car1’ ‘car2’ < fic_src > fic_cible :
“ traduit ” (remplace) les occurrences d’un caractère donné par un
autre dans un fichier
ex :
tr ‘[a-z]’ ‘[A-Z]’ < fic_in > fic_out
sort [-r] [-o fic_out] [-t car] [-k num_champ[n]]
fic : tri des lignes d’un fichier sur des critères de tri donné.
avec :
. car : caractère séparateur des champs (à trier)
.
num_champ : numéro du champ
exemple : sort –k 2 fic : tri sur le 2ième
champ,
sort –n fic : tri sur champ numérique ( ?)
sort –u fic : ramène des lignes uniques (ramène une
occurrence unique de
chacune ligne trouvée dans
le fichier. Voir aussi la commande “ uniq ”).
uniq [-udc] fic : tri sur un fichier ne
ramenant qu’une occurrence unique d’une ligne donnée dans
le fichier à trier.
uniq –u :
ramène, en résultat du tri, des lignes unique (en cas de lignes identiques dans
le fichier),
uniq –d :
liste que les lignes dupliquées (et chacune en un seul exemplaire),
uniq –c :
liste toutes les lignes + nombre d’occurrence(s) de la ligne affichée.
whereis cde : arborescence de la commande (affiche toutes
les occurrences de la commande avec leur arborescence),
which cde : arborescence de la commande par défaut,
type cde : type de la commande,
file fic : type du fichier (type texte ascii, type
binaire exécutable, type archive etc …).
which cmde : localise
une commande, affiche le nom de son chemin (pathname) ou son alias
type fic : donne une description du type de la commande.
df –k|n rep|dev|fic : volume du répertoire
df : informations sur l’occupation du disque. Affiche
le nombre de fichiers et de blocs disques libres.
du –ksa rep|fic : volume (taille) du fichier ou du
répertoire du disque dur.
date [+Format] : 1) sans argument affiche la date
système, 2) avec argument, modifie la date système. Exemple : date
+%T date +%Y%m%D
sleep n[s] : attend n secondes. sleep nm
: attend n minutes. sleep nh : attend n heures.
Exemples : sleep 2 : attend 2 secondes. sleep
3h : attend 3 heures. sleep 3m : attend 3 minutes.
grep [-viln] chaîne|critère fic [fic2 …] :
recherche de la chaîne de caractère “ chaîne ” dans le / les fichiers
listés dans la commande. Exemple : grep ‘*’ fic : recherche toutes
les lignes du fichier “ fic ” contenant le caractère “ * ”.
Avec options :
-v : sélectionne les lignes correspondant au critère
inverse du critère indiqué dans la commande,
-i : ne différencie pas les majuscules et minuscules
dans la commande,
-l : donne une liste de nom de fichiers contenant le
critère au lieu des lignes elles-même.
-h : idem
-n : affiche les lignes sélectionnées et leur n° de
ligne.
Note : dans une expression régulière du grep, ‘^’
indique début de ligne, ‘$’ indique fin de ligne.
‘.’ indique un caractère quelconque, ‘.*’
indique une groupe de caractère quelconque.
Exemples : grep –v ‘oui’ fic grep –n ‘R.*n’
fic ls | grep ‘\.jpg$’ cat fic | grep `pwd`
Expressions régulières dans certaines commandes
(grep …) ou mode “ commande ” de certains éditeurs
Expressions régulières |
Signification |
. |
Un caractère quelconque (joker) |
^chaîne |
Ligne commençant par “ chaîne ” |
Chaîne$ |
Ligne finissant par “ chaîne ” |
[xYyYzZ] |
Classe de caractères |
[x-z] |
Intervalle de caractères |
[^x] |
Tout caractère sauf “ x ” |
* |
Une ou plusieurs occurrence du caractère précédent |
\x |
Ote la signification spéciale du caractère
“ x ” (en général un caractère spécial :
“ \ ”, “ * ”,` ? ” …) |
\< |
Marque de début de mot |
\> |
Marque de fin de mot |
\(…\) |
Un groupe dans une expression régulière qui peut être
répété. |
\1 \n (associé avec \(…\) |
Répétition d’une fois, de 2 fois … de l’ expression
régulière \(…\) |
Exemples :
grep ‘\(chaîne\).*\1’ fic : sélectionne les lignes
avec au moins 2 occurrences de la chaîne “chaîne” etc …
grep ‘\<q.*me\>’ fic ; ls –la | grep ‘^d’
; find . –name ‘*.h’ –exec grep ‘time’ ‘{}’ \ ;
niscat
passwd.org_dir | grep ‘ksh$’ ; ypcat passwd | grep ‘ksh$’
Note : ATTENTION ! une “ expression
régulière ” est différente de “ méta-caractère ” (voir plus
haut).
Expressions régulières |
Métacaractère correspondant |
. |
? |
^chaîne |
Chaîne* |
Chaîne$ |
*Chaîne |
[xYyYzZ] |
Idem |
[x-z] |
idem |
[^x] |
[ !x ] |
* |
/ (n’existe pas) |
\x |
Idem |
\< |
/ (n’existe pas) |
\> |
/ (n’existe pas) |
\(…\) |
/ (n’existe pas) |
\1 \n (associé avec \(…\) |
/ (n’existe pas) |
egrep : commande grep reconnaissant plus de caractères spéciaux que grep
Expressions régulières du egrep |
Signification |
? |
Zéro ou plusieurs occurrence de l’expression régulière
précédente |
+ |
Une ou plusieurs occurrence de l’expression régulière
précédente |
| |
Choix dans une liste (couple) d’expressions régulières
séparées dans le caractère “ | ” |
( … ) |
Groupe de caractère dans une expression régulière |
\(…\) |
/ (n’existe pas). Non reconnu |
\(…\) |
/ (n’existe pas). Non reconnu |
\<…\> |
/ (n’existe pas). Non reconnu |
sed : éditeur non intératif, n’effectuant pas de
modification dans les fichiers (uniquement comme filtre sur un flot de données
en sortie d’un fichier ou d’un pipe “ | ”).
sed [-n] [-e instruction ] [ -f ] fichier : avec :
-e : utilisé lorsque plusieurs instructions sont données
sur la ligne de la commande “ sed ” (chaque instruction à son
“ -e ”).
-n : les résultats du “ sed ” ne sont pas sortis
(affichés) sur la sortie standard.
-f fichier_inst : fichier_inst est une une liste
d’instruction (de fonctions) “ sed ” à traiter sur le fichier
“ fichier ”.
Exemple : cat agenda | sed ‘s/mencherini/Mencherini/’
> agenda_corrige
sed ‘d/®9./&*/’ agenda (ici ® représente le caractère
tabulation. Dans l’expression, il faut impérativement mettre le caractère
tabulation).
Note ici “ & ” insère le masque (la
chaîne) recherchée dans la chaîne de remplacement.
sed ‘/^®.*$/d’ agenda : cette commande recherche toute ligne vide
(sans caractère, sans blanc, sans tabulation …) et l’efface.
sed ‘/===/r fic_a_inclure’ agenda > agenda_modifie :
à chaque occurrence de la chaîne “ === ” inclus le contenu du fichier
“ fic_a_inclure ”.
sed ‘s/:x :[^:]*:/:x::/’ passwd : afficher le fichier passwd sans sa colonne
“ UID ”.
sed ‘s/:x :[^:]*:/:x::/w fic_no_uid’
passwd : idem, mais le
résultat au lieu d’être affiché à l’écran est redirigé dans le fichier
“ fic_no_uid ”.
Exemple de script “ sed ” à utiliser
avec l’option “ -f ” du “ sed ” :
s/Ph.*re/Phil Rebiere/
1,3d
s/®|0-9] [0-9]/ ®/
Exemples :
uustat | cut
-d" " -f1 | sed -e "1,\$s/^/uustat -k/" >
/tmp/kiluu$$
sid=`echo $dirora | sed "s:oracle_::"`
find $startdir -type d -print 2> /dev/null | sort -f | \
sed -e "s,^$startdir,," \
-e "/^$/d" \
-e "s,[^/]*/\([^/]*\)$,\`-----\1,"
\
-e "s,[^/]*/,| ,g"
(voir le script « dtree »
dans le document « outils et scripts d’administration UNIX » de
ce cours « Unix pour futurs administrateurs »).
Tableau
des commande “ sed ”
Résumé de la commande
sed |
|
sed options 'instruction' fichier (s) |
édition fichiers et résultat sur stdout |
Syntaxe d’une adresse sed |
|
1,$ commande |
opération sur tout le fichier |
/chien/commande |
opération sur lignes contenant "chien" |
/chien/,$commande |
opération de la ligne contenant "chien" à la fin de fichier |
Description des fonctions et arguments de sed |
|
s/ancien/nouveau/[g] |
substitue ancien par nouveau |
s/ancien/&nouveau/[g] |
ajoute nouveau à ancien |
d |
annule les lignes indiquées (ex. 4,10d) |
r fichier |
charge fichier à la ligne indiquée |
w fichier |
écrit les lignes indiquées dans fichier |
P |
imprime les lignes indiquées |
a\ texte |
place le texte après la ligne indiquée |
i\ texte |
place le texte avant le ligne indiquée |
c\ texte |
remplace lignes indiquées par texte |
Description de quelques options sed |
|
-e instruction |
utilisée lorsque plusieurs instructions sont données sur la ligne de commandes sed. Chaque fonction a son propre -e |
-f fichier |
fichier est une liste de fonctions sed à traiter sur le fi- chier |
-n |
les résultats issus d'une commande sed ne sont affi- chés sur la sortie standard. |
Notes : nawk est le awk de Solaris avec
plus de fonctionnalités. Elle permet de traiter des champs.
C’est un langage interprété, donc moins rapide
d’exécution que des programmes compilées (comme le C …).
nawk [ -F sép ] [ -v variable=valeur
] ‘pattern {action}’ fichier
nawk [ -f script_nawk ] fichier
avec :
-F : indique quel est le séparateur de champs, dans
le fichier “ fichier ” (par défaut, espace ou tabulation)
-v variable=valeur : permet d’initialiser des
variables externe au programme “ nawk ”.
-f script_nawk : permet d’exécuter un programme nawk
rédigé de manière externe.
pattern {action} : où
“ pattern ” est encore appelée “ expression régulière
(RE) ”, toujours entre “ / … / ” et
“ action ” une ou plusieurs instruction du langage nawk.
3 cas :
pattern {action} : si
“ pattern ” est vérifié, on exécute “ action ”
(“ pattern ” est un filtre).
{action} : (sans présence de
“ pattern ”), on exécute “ action ” sur toutes les lignes
du fichiers.
pattern : on sort toutes les lignes correspondant /
vérifiant “ pattern ”. On affiche la ligne entière. Cela équivaut à
un grep .
Dans la partie “ action ”, voici les
indications ou commandes nawk qu’on peut trouver :
print : affiche certains champs du fichier ou variables
$0 : variable indiquant la ligne entière.
$1 : variable indiquant le 1er champs du
fichier
$2 : variable indiquant le 2ème champs du
fichier
etc ..
Les champs, dans la ligne de commande nawk sont
séparés par des “ , ”.
Exemple : nawk ‘/9/{print $1, $4, $3 ‘’\t’’ $4}’
agenda : recherche lignes avec le chiffre “ 9 ” et reformate la
sortie.
nawk ‘/®[0-9][3]/{print $1}’ agenda : imprime le champ
1 de lignes contenant une tabulation, suivi d’un chiffre entre 0 et 9, puis du
chiffre “ 3 ”.
echo ‘’Il est’’ `date | nawk ‘{print $4 }’ | nnawk –F :
‘{print $1}’ ` ’’heure.’’
(affiche par ex. : il est 17 heure).
Symbole de la chaîne constante dans le nawk |
valeur |
\t ou \011
ou \042 |
Tabulation |
\n ou \012 |
Newline (saut à la ligne) |
\045 |
% |
L’étiquette BEGIN indique qu’une {action} doit
être exécutée avant que toutes les lignes soient lues.
(souvent utilisée pour un titre, un entête d’un
rapport),
L’étiquette FIN indique qu’une {action} doit être
exécutée après que toutes les lignes soient lues.
(souvent utilisée pour les sommaires et les totaux).
Note : dans les parties BEGIN et END, on ne peut
utiliser les champs $n .
Exemple : nawk ‘{total += $6 } END {print
total }’ agenda : on affiche la variable total qui est
égale à la somme du 6° champ (de tous les enregistrement du fichier).
Symbole de l’opération |
Son action |
+= |
Ajouter à |
-= |
Soustraire à |
/= |
Diviser par |
%= |
Modulo (n) |
^= |
Puissance (de
n) |
Symbole de l’opération |
Son action |
+ |
Addition |
- |
Soustraction |
* |
Multiplication |
^ |
Exponentiation |
++ |
Incrément |
-- |
Décrément |
% |
Modulo |
Nom de la variable |
Valeur par défaut |
Description |
OFS |
Espace |
Séparateur de champ en sortie |
FS |
Espace ou tab |
Séparateur de champ en entrée |
ORS |
Newline |
Séparateur d’enregistrement en sortie |
RS |
Newline |
Séparateur d’enregistrement en entrée |
NF |
|
Nombre de champs dans l’enregistrement |
NR |
|
Numéro d’enregistrement depuis le début |
FNR |
|
Nombre d’enregistrements dans le fichier |
ARGC |
|
Nombre d’arguments sans la commande |
ARGV |
|
Tableau des arguments de la commande |
OFMT |
“ %.6g ” |
Format de sortie pour les nombres |
FILENAME |
|
Nom du fichier d’entrée |
Exemples :
nawk ‘BEGIN {OFS=’’/’’ } {print $1,$2,$3}’
agenda
nawk ‘BEGIN {OFS=’’\t’’ } {print $2, $5*1000/$6}’ agenda
nawk ‘BEGIN {OFMT=’’%.2g’’ } {print $2, $5/$6}’ agenda
Exemple de sortie, avec le dernier exemple
précédent :
LISAN 0.69
LOTAR 2.4
LUTTEN 4
…
List [0] = ‘’1° element’’
List [dupont] = ‘’jean-jacques’’ (“ dupont ” est un indice)
List [total] = ‘’55’’ (“ total ” est un indice)
List [1] = $0
Print list [0]
list [dupont] list [total]
C’est une instruction print formatée du nawk
(dont le formatage est inspiré du langage C).
Syntaxe : { printf (‘’ chaîne de caractères
pouvant comporter des masques’’ [ , valeurs ] ) ;
}
Les valeurs sont utilisées pour remplir les masques.
Voici la liste de ces masques :
Symbole du masques |
Format des données en sortie |
%d |
Valeur entière |
%f |
Valeur point flottant |
%c |
Valeur caractère |
%s |
Valeur chaîne |
%x |
Valeur hexadécimale |
%nd (idem pour
: %nf %ns %nc ) |
La valeur est cadrée à droite dans la taille n
du champ |
%-nd (idem pour
: %-nf %-ns %-nc ) |
La valeur est cadrée à gauche dans la taille n
du champ |
%m.nf %.nf |
Avec les valeurs “ points flottants ”, il
est possible de contrôler la taille du champ “ m ” et le
nombre de décimales “ n ” après le point |
Exemples : printf(‘’Le résultat est : %10.2f
%-10s %d\n’’, num / 6 * 25 , $3, num )
printf(‘’%d, %7.2f, %20s\n’’, $1, $2, ‘’==è’’)
nawk ‘{if ( opérande opérateur opérande ) action }
‘ fichier
Symbole de l’opérateur relationnel |
Type |
Rôle ou signification |
== |
Test nombres ou chaînes |
Egal à |
!= |
Idem |
Différent de |
> |
Test nombres |
Plus grand que |
< |
Idem |
Plus petit que |
>= |
Idem |
Plus grand ou égal à |
<= |
Idem |
Plus petit ou égal à |
~ |
Test chaînes |
Contient /RE/ (contient expression régulière) |
!~ |
Test chaînes |
Ne contient /RE/ (ne contient expression régulière) |
&& |
Test logique |
AND logique |
|| |
Test logique |
OR logique |
Exemples :
nawk ‘{num = $5/$6 ; if (num>2) print $1,
num }’
agenda
si le résultat de $5 divisé par $6 est supérieur à 2, on
affiche $1 et le résultat de la division.
nawk ‘{if
($1 ~ /e/) print $1 }’ agenda
si l’on trouve des lignes dont le champ n° 1 contient un
“ e ” on affiche la ligne.
tolower(chaîne) : convertit toute la chaîne
“ chaîne ” en minuscule.
toupper(chaîne) : convertit toute la chaîne
“ chaîne ” en majuscule.
Il en existe bien d’autre selon le type de awk (c’est à
dire selon le constructeur) :
sort , sqrt , exp , log , …
Etc …
Exemple : nawk ‘{if (tolower($4) == ‘’paris’’
) print $0 > ‘’fic_resultat_paris’’ }’
next : arrête le traitement sur la ligne courante, lit
la ligne suivante du fichier d’entrée et redémarre au début du programme nawk
.
Exemple : nawk ‘{if ($5<50)
next ; print $1}’ agenda
Si le résultat est vrai, la ligne est écartée, et la
prochaine ligne est lue.
exit : termine le programme nawk . Elle transmet
le code d’état (facultatif) indiqué dans le programme nawk au processus
parent de nawk (sauf s’il existe
un bloc END : dans ce cas, celui-ci est exécutée avant la fin du
processus).
Exemple : nawk ‘{if ($3 == ‘’50’’)
{print ; exit 0}}’ agenda
nawk ‘{print $1, $2 > ‘’fic_resultat’’}’ agenda
met le résultat dans le fichier “ fic_resultat ”.
lp : lp -d printer fic : impression du
fichier (prendre plutôt un fichier texte),
lpstat : voir les jobs d’impression en file d’attente
(queued jobs) et l’état de/des imprimante(s).
cancel n°_de_job : suppression du job d’impression ayant
comme n° de job : “ n°_de_job ”.
su [ - ] : changement de compte
utilisateur.
id : informations sur l’identifiant de l’utilisateur
en cours.
Exemple d’info affichées par la
commande ‘id’ :
uid : 2000 (sam), gid : 10 (staff)
whoami : nom de login de l’utilisateur en cours.
who am
i : idem mais …
Permissions : r w x
r : 4 : lecture
w : 2 : écriture
x : 1 :exécution
7 : rwx , 6 : rw , 0 :
aucune permission
chmod [ -R ] droits fic|rep : modifie les droits sur
fichier(s) ou répertoire(s).
chmod –R
droits rep : modifie récursivement les droits sur répertoires et tout ce
qui se trouve dessous.
Classes :
u : usager
g : groupe
o : others (autres)
a : all
Opération concernant les droits :
= : affecte une permission ;
- : suppression d’une permission
+ : ajouter / positionner un droit
permissions : r w x
exemple :
chmod – R g+x rep
chown nom_utilisateur [fic | rep] : changement du
propriétaire du ou des fichiers ou répertoires listés dans la commande “ chown ”.
umask [droits] : en général mis dans le scripts
d’ouverture d’une cession (login) utilisateur,
positionne des droits sur les actions de
l’utilisateur durant sa cession.
Par défaut : droits pour utilisateur : 777
pour les répertoire, 666 : pour les fichiers,
umask 000 (ne fait rien)
umask
022 (rw-r—r--)
umask
027 (rw-r-----)
setuid : S : SUID , s : SUID + execute
setgid : S : GUID, s : GUID + execute
sticky : T : STICKY , t : STICKY + execute
exemple de droits SUID et GUID :
-r-Sr-sr-x
exemple de commande chmod pour positionner le GUID :
chmod 2777 rep => drwxrwSrwx
Comment cela fonctionne ?
L’exécutant d’id = id1, prend l’id = id2, pour exécuter le fichier du owner d’id = id2.
Notations
symboliques |
|||||
Classe |
Opérations |
Permissions |
|||
u |
user (propriétaire) |
= |
assigne |
r |
lecture |
g |
group |
- |
retire |
w |
écriture |
o |
others |
+ |
donne |
x |
exécution |
a |
all |
|
|
||
Notations octales |
|||||
Valeur |
Permissions |
Explication |
|||
7 |
rwx |
Lecture, écriture, exécution |
|||
6 |
rw- |
Ecriture, lecture |
|||
5 |
r-x |
Lecture, exécution |
|||
4 |
r-- |
Lecture |
|||
3 |
-wx |
Ecriture, exécution |
|||
2 |
-w- |
Ecriture |
|||
1 |
--X |
Exécution |
|||
0 |
--- |
Aucun accès |
|||
Permissions spéciales |
|||||
Valeur |
Permissions |
Chmod |
Explication |
||
4 |
setuid : -rwsr-x--x |
4751 |
Prend id. user |
||
2 |
setgid
: -rwxr-s--x |
2751 |
Prend
id. groupe |
||
1 |
sticky
bit : drwxr-x--t |
1751 |
Limite effacement |
/etc/passwd : fichier des utilisateur
/etc/shadow : (il est root et sys, mais un
utilisateur par la commande “ passd ” peut modifier un mot de
passe dedans, parce que la commande “ /usr/bin/passwd ” a les
droits –r-Sr-sr-x )
Note : netstat : donne les statistiques
réseau.
Un sticky bit :
1) sur un répertoire : indiquer que seul “ root ”
et le owner peuvent supprimer les fichiers qui s’y trouvent.
(par exemple, pour éviter que les fichiers dans /tmp
soient effacés par d’autres utilisateurs que “ root ”.
exemple de droits sur /tmp : drwxrwxrwt )
2) sur un fichier : la taille du fichier est fixe
(ex. : zone de swap, diskless). Permet de réserver de la place
sur le disque.
Permissions |
Valeurs octales |
Valeur symbolique |
Setuid (SUID) |
4 |
S |
Setgid
(GUID) |
2 |
S |
Sticky
bit |
1 |
t |
ACL : définition d’un fichier de sécurité pour un
fichier ou répertoire.
Owner, group, others, owners spéciaux, groupes
spéciaux,
Exemple de commande de mise à jour des droits =>
setfacl
–s user : :rw-, group : :---, other :---,
mask :rw- fic
Autre exemple de mise à jour : setfacl – m
user :matin:rw, group:market:r fic
getfactl : getfacl –a permission_courante_et_fichier_ACL
gatfacl –d :acl_par_défaut
Exemple de commande d’affichage des ACL :
ed : éditeur ligne
vi , view , vedit : éditeur plein
écran
sed : éditeur sur un flot de données (en général sur
le résultat d’un “ pipe ”).
Pour mention dtpad : éditeur pleine page
graphique dans l’environnement graphique CDE X-Windows.
vi –r fic : récupération du fichier qui était en cours
d’édition par “ vi ” (en fait, un “ recovery ”). On va le
chercher dans “ /var/tmp ”.
vi +-n° fic : édite à partir de la ligne dont le numéro
= n°
vi +/chaîne fic : éditer à partir de la 1ière
occurrence de la chaîne dans le fichier fic.
Différent mode de vi |
Description |
|
Mode Insertion |
|
|
a |
Ajout après le curseur |
|
A |
Ajout à la fin de la ligne |
|
i |
Insère avant le curseur |
|
1 |
Insère au début de la ligne |
|
0 |
Ouvre une ligne après le curseur |
|
0 |
Ouvre une ligne avant le curseur |
|
cw |
Modifie un mot |
|
r |
Remplace un caractère |
|
R |
Remplace jusqu'au prochain <ESC> |
|
Mode commande |
|
|
x |
Efface un caractère |
|
dw |
Efface un mot |
|
dd |
Efface une ligne |
|
yy |
Sélectionne une ligne |
|
p |
Pose la sélection après le curseur |
|
P |
Pose la sélection avant le curseur |
|
u |
Défaire la dernière modification |
|
. |
Refaire la dernière modification |
|
nG |
Aller à la ligne n (ou à la dernière
ligne si n est omis) |
|
/chaîne |
Recherche "chaîne" en
avançant dans le fichier |
|
?chaîne |
Recherche "chaîne" en
remontant dans le fichier |
|
Mode ligne |
|
|
:w |
Sauvegarde le fichier |
|
:wq |
Sauvegarde et quitte le fichier |
|
:q |
Quitte sans sauvegarder |
|
:q! |
Quitte sans rien sauvegarder du tout |
|
Différents mode de vi |
Description |
Mode insertion |
|
a |
Ajout après le curseur |
A |
Ajout à la fin de la ligne |
i |
Insère avant le curseur |
1 |
Insère au début de la ligne |
o |
Ouvre une ligne après le curseur |
O |
Ouvre une ligne avant le curseur |
cw |
Modifie un mot |
r |
Remplace un caractère |
R |
Remplace jusqu'au prochain <ESC> |
Fin de cession
d’édition |
|
Mode commande |
|
ZZ |
retourne sous le prompt de l'interpréteur. |
Mode ligne (ou mode ex) |
|
Ecriture d'un fichier |
|
: w [nouveau_fichier] |
Le nouveau fichier est écrit sur disque. Si le fichier existe déjà, un message apparaît à l’écran pour recommander l’utilisation de w! (réécrit sur un fichier existant). |
: ligne début,ligne finw [nouveau_fichier] |
|
:w! nomfich |
|
Fin de la session
d’édition |
|
:q |
quitte vi et retourne
sous l'interpréteur |
:q! |
annule les modifications faites et récupère le fichier dans son état initial |
:wq |
sauvegarde le fichier et quitte vi |
:x |
sauvegarde le fichier et quitte vi (identique à :wq) |
Déplacement sur l'écran Mode commande |
|
Déplacement avec les touches de fonction |
|
® ou 1 |
Déplacement d'un caractère à droite (id. <space>) |
¬ ou h |
Déplacement d'un caractère à gauche (id. <bs>) |
ou k |
Déplacement d'une ligne vers le haut |
¯ ou j |
Déplacement d'une ligne vers le bas (id. <retour>) |
Déplacement avec les touches du clavier |
|
+ |
Positionnement au début de la ligne suivante |
- |
Positionnement au début de la ligne précédente |
Déplacement avec les caractères de contrôle |
|
^d |
Descend d'un demi-écran |
^u |
Monte d'un demi-écran |
^f |
Déplacement d'une page vers la fin du fichier |
^b |
Déplacement d'une page vers le début du fichier |
Shift-g |
Fin de fichier |
Déplacement recherche mode
commande |
|
Recherche de texte |
|
/chaîne |
recherche chaîne vers la
fin du texte. |
?chaîne |
recherche chaîne vers le
début du texte. |
N, // ou ?? |
trouvent l'occurrence suivante (n pour next) |
N |
répète la dernière
recherche en sens opposé |
Déplacement sur la
ligne Mode Commande |
|
Déplacement vers
l’avant de la ligne |
|
$ |
déplace à la fin de la
ligne |
w |
déplace d’un mot sur la droite |
#w |
déplace du nombre spécifié de mots vers la droite; par exemple 5w déplace de 5 mots. |
Déplacement vers
l’arrière de la ligne |
|
(zéro) ou ^ |
déplace au début de la ligne |
b |
déplace d'un mot vers la gauche (backward) |
#b |
déplace du nombre spécifié de mots vers la gauche; par exemple 3b déplace vers la gauche de 3 mots. |
Changement et remplacement de texte
Mode insertion |
|
Changement de texte |
|
cw |
change un simple mot |
#cw |
change le nombre spécifié de mots |
C |
change le texte jusqu'à la fin de la
ligne |
$ |
marque la fin de la suite de
caractères à substituer |
Remplacement de texte |
|
R |
remplace le texte jusqu'à ce que la touche
<ESC> soit entrée |
r |
remplace le caractère présent sous le curseur avec
le nouveau caractère saisi au clavier |
Suppression de texte mode commande |
|
Suppression de texte |
|
x |
supprime un caractère |
4x |
supprime 4 caractères |
dw |
supprime 1 mot |
6dw |
supprime 6 mots |
dd |
supprime 1 ligne |
3dd |
supprime 3 lignes |
dO (zéro) |
supprime vers le début de la ligne |
D ou d$ |
supprime vers la fin de la ligne |
J |
concatène deux lignes (suppression du retour chariot |
• Les caractères
supprimés sont conservés dans un buffer.
• On peut les
faire réapparaître à l'endroit choisi en se positionnant et en utilisant P ou p
( Put ) pour poser le contenu du buffer.
• C'est un moyen
pour déplacer des morceaux de texte.
Substitution de texte Mode ligne |
|
Entrez en mode ligne par
“ : ” |
|
:début,fin$/ancienne/nouvelle/ |
Cela substitue de la ligne début à la ligne fin
toutes les premières occurrences sur chaque ligne de ancienne par nouvelle. |
:début,fin$/ancienne/nouvelle/g |
Pour substituer toutes les occurrences, il faut le
préciser par g en fin de commande (g pour global). |
•Le
caractère"$"fait référence à la dernière ligne du texte.
•Le
caractère"."fait référence à la ligne courante.
•Le
caractère""remplace à lui seul 1,$
Commande globale Mode ligne |
|
Entrez en mode ligne par
“ : ” |
|
:début,fing/chaîne/commande |
La commande est exécutée lorsque entre la ligne début
et la ligne fin, chaîne est détectée. Il s’agit d’un filtre
spécial de recherche. |
:début,fing/chaîne/S/ancienne/nouvelle/g |
La substitution est faite pour toutes les lignes
entre début et fin, contenant chaîne. (Premier g pour le
filtre et le second g pour global ). |
:début,fing/chaîne/d |
Toutes les lignes contenant chaîne, dans
l’intervalle indiqué, seront détruites. |
Déplacement de texte Mode ligne |
|
Entrez en mode ligne par
“ : ” |
|
:début,finmno_de_ligne |
Déplacement du texte après le n° de ligne indiqué
en destination de no_de_ligne et renumérotation des lignes à l’écran. |
Les accès au système Unix sous
“ vi ” en Mode ligne |
|
Entrez en mode ligne par
“ : ” |
|
:r fichier |
Insertion du contenu de fichier à la ligne
courante |
:! commande_Unix |
Exécution de la commande et retour sous
“ vi ” |
:r! commande_Unix |
Exécution de la commande et insertion de son
résultat après la ligne courante |
Personnalisation de la session vi Mode
ligne |
|
Entrez en mode ligne “ : ” |
|
:set |
Affiche tous les paramètres actuellement positionnés |
:set ail |
Affiche tous les paramètres possibles sous vi et leur valeur actuelle |
: set var [=valeur] |
Initialisation |
Quelques variables de l’éditeur |
|
ai |
Permet l'auto-indentation |
IC |
Dans recherches/substitutions, pas de distinction en- tre minuscules et majuscules |
Nu |
Affiche les numéros de ligne |
List |
Visualise des fabulations (A!) et des fins de lignes ($) |
Ws |
Boucle sur une recherche (wrapscan) |
Smd |
Affiche en bas à droite le type d'insertion en cours ("OPEN, INSERT, APPEND MODE") |
: set novar |
Supprime une initialisation |
Abrége une chaîne de caractère en une chaîne restreinte.
:ab chaîne chaîne_longue
:ab rep repertoire
:ab
=> Donne la liste des abréviations valides.
:unab chaîne =>
supprime une abréviation.
Permet de simplifier les commandes et programmer les
touches de fonctions.
:map caractères commande
:map X 10dd =>
Le caractère X permettra la suppression de 10 lignes.
:map =>
permet de visualiser les macros définies.
:unmap caractères =>
supprime une macro.
:map ^[[20~ :set
list^M => ^[[20~ est la touche
de fonction F9 et s’obtient par la séquence clavier suivante : ctrl-v + touche de fonction F9.
map
^[[11~ :set list^M
map ^[[12~ :set nu^M
set ai
ab sys systeme de fichiers
ab rep repertoire
Note : insertion d’un raccourci clavier dans le
fichier (fic) sous “ vi ” :
Sous “ vi ”, Ctl-V + frappe en
même temps de la touche de fonction choisie (par ex. F9).
Ce qui donne quand on frappe F9, dans le fichier
(fic) : ^[[20~
% vi
demo
Déplacement et insertion de texte : :3,8d Annule lignes 3 à 8 :4,9m 12 Déplace 4 à 9 à la ligne 12 :2,5t 13 Copie 2 à 5 à la ligne 13 :5,9w file Ecrit lignes 5 à 9 dans file Sauvegarde de fichiers et sortie : :w Ecrire buffer sur disque :w newfile Ecrire buffer dans newfile :w! file Ecrire impérativement ^q Ecrire buffer et sortir :q Quitter l'éditeur :q! Quitter impérativement :e! Ré-éditer en oubliant les modifs :wq Ecrire buffer et sortir Contrôle de l'édition : :set nu Afficher les numéros de lignes :set nonu Oter une option set ail Montrer les options set list Afficher les car. invisibles set wm=5 Garder 5 espaces de marge de droite |
Déplacement d'écran/de ligne : j, k, h, 1 et touches fléchées 0 Au début de la ligne $ A la fin de la ligne % A la parenthèse / accolade correspondante G A la dernière ligne 3G A la ligne 3 Déplacement
de mots : w En avant d'un mot 3w En avant de 3 mots b En arrière d'un mot 3b En arrière de 3 mots Fonctions de recherche : n Répéter recherche précédente N Inverser
recherche précédente Effacement de texte : X
Efface un caractère dw Efface un mot dd Efface une ligne D Efface jusqu'à la fin de la ligne d0 Efface jusqu' au début ligne dG Efface jusqu'à la fin de fichier 4dd Efface
4 lignes Annulation de fonction d'édition : u Défaire dernière modification . Faire la dernière modification à nouveau Copie et insertion de texte : Y Sélectionne une ligne 5Y Sélectionne 5 lignes p Dépose la sélection après curseur P Dépose la sélection avant curseur Fonctions de traitement de texte : J Union de la ligne suivante avec la courante 4J Union de 4 lignes avec la courante xp Transpose 2 caractères Fonctions de recherche : /exp En avant pour exp ?exp En arrière pour exp |
Ajout de texte : a Ajout après le curseur A Ajout à la fin de la ligne i Insère avant le curseur 5i Insère le texte 5 fois I Insère au début de la ligne Ajout de nouvelles lignes : o Ouvre une ligne après curseur 0 Ouvre une ligne avant curseur Modification de texte : cw Modifie un mot 3cw Modifie 3 mots C Modifie une ligne r Remplace un caractère R
Remplace/ retape une ligne |
Les commandes les plus portables et employées dans le
monde Unix : tar et cpio
Rappel : nom du répertoire des fichiers de type device
bande : /dev/rmt
Dans ce dernier répertoire, on y trouve des noms de
device bande :
0cbn : avec
0 : n° d’instance du lecteur de bande
c : indique que la bande est compressée
b : format permettant une compatibilité BSD (Unix
Berkeley)
n : la bande n’est pas rembobinée en fin de lecture
(de cassette)
0[hm]bn : avec “ hm ”
u : ultra
h : high
m : medium
l : low density
Voir
en annexe : le tableau des Noms
des fichiers spéciaux liés à des unités de bandes.
mt : mt -f device : définit quel fichier
spécial (device) utilisé pour la commande “ mt ”
mt [option] : avec option
fsf n : saute n enregistrement => vers l’avant.
bsf n : saute n enregistrement => en arrière.
rewind : rembobinage de la bande
eom : on va en fin de la bande.
status : affiche l’état de la bande (le lecteur est
actif, en panne, quelle bande est montée …)
erase : effacement de la bande
·
“ tar ”
n’est pas multi-volumes.
·
La
commande “ tar ” sert à concaténer des fichiers sur le disque
ou sur bande.
·
Elle
sert aussi à visualiser le contenu d’un fichier archive de type “ tar ” :
tar tvf fic
tar option fichier_ou_ensemble_de_fichiers
fic_archive_tar avec option :
c : création d’un / des enregistrement(s) ou
fichier(s)
x : lecture / extraction d’un / des
enregistrement(s) ou fichier(s)
v : affichage de plus d’information (mode
“ verbeux ” _ “ verbose ”),
f : précise le device,
t : liste les fichiers lus ou copiés,
p : lorsqu’on extrait le fichier, on conserve ses
permissions (owner, mode …) (important)
Exemples :
tar cvf /dev/dsk/floppy0 ./sauvegarde
cd /tmp ; tar xvf /dev/dsk/floppy0
tar cvf sauve.tar ./sauvegarde
tar cvf /dev/rmt/0n ./sauvegarde
cd ; tar cvf /dev/rmt/0n .
·
“ cpio ”
est multi-volumes.
·
“ cpio ”
n’est pas compatible avec “ tar ” (on ne peut pas lire une bande
“ tar ” avec “ cpio ” et réciproquement).
cpio
–i -[vcBd …] < fic_special ou cpio –i -[vcBd …] << fic_special
cpio –o
–[vcB …] > fic_special
ou cpio –o –[vcB …]
>> fic_special
avec option :
-t : liste contenu d’un enregistrement,
-v : verbeux
-c : écrit un entête ASCII pour la portabilité
(d’un Unix à l’autre)
-B : transfert par bloc de 5120 bytes (octets),
-d : création des sous-répertoires si nécessaire
(important).
Exemples :
ls
| cpio –ovcB > /dev/dsk/floppy0
·
“ pax ”
est multi-volume :
·
“ pax ”
peut aussi lire des fichiers au format “ tar ” (USTAR) qu’au format
“ cpio ”
·
(“ pax ”
sert de “ pont ” entre la commande “ cpio ” et la commande
“ tar ”).
·
Les
fichiers sauvegardés peuvent être enregistrés en absolu ou en relatif.
·
La
commande “ pax ” n’est pas disponible sur toutes les plateformes mais
est disponible sur Solaris, AIX, Ultrix (Digital Unix), FreeBSD, …
pax [-v] [-s chaîne] -f fichier_spécial
pax [-v] [-x format] [-s chaîne] -f fichier_spécial
pax –r [-vi] [-x format] [-s chaîne] -f
fichier_spécial
avec comme options pour la commande pax :
aucune option : liste le contenu d’une archive
(liste le contenu de la table des symboles)
-w : écrit (sauvegarde)
-r : restauration
-f : indiquer le device choisi c’est à dire le
fichier de sortie (par exemple /dev/rmt/0hn)
-s : substitution de caractères (dans un nom de
fichier)
-i : mode interactif
-v : verbeux (verbose)
-x : format de la sauvegarde : “ tar ”
(USTAR) ou “ cpio ”.
Par défaut,
le format est de type “ tar ” (USTAR).
Exemples :
pax –w –v –f fic.pax .
pax –v –f fic.pax
pax –r –v –f fic.pax
pax –r –v –s ‘/.$/&_1/’ –f fic.pax fic_cible : ici
on remplace dans tous les noms de fichiers “ le_nom_du ”fichier par
le ‘nom_du_fichier_1’.
pax –r
–v –i –f fic.pax fic_cible
·
“ jar ”
génère un fichier au format compressé “ ZIP ” portable.
·
“ jar ”
crée une archive sauvegardée uniquement en relatif.
·
La
syntaxe de la commande “ jar ” est la même que la commande “ tar ”
·
Elle
est supportée sur un bon nombre de plateformes Unix.
jar [options]
fic.jar [fic | rep]
avec options :
c : créée nouvel enregistrement
x : extrait un enregistrement à partir de l’archive
t : indique le device utilisé
t : liste le contenu d’un enregistrement
exemples :
jar cvf fic.jar *
jar xvf fic.jar
jar xvf fic.jar fic_a_extraire : on extrait de l’archive
“ fic.jar ” que le fichier à extraire, ici
“ fic_a_extraire ”.
jar tvf fic.jar : visualisation du contenu du fichier “ fic.jar ”
sous la forme d’une liste de fichier.
LAN (local area network) : réseau local,
WAN (wide area network) : réseau distant,
Bus : long câble central, sur lesquelles les
machines reliés (avantage : rapidité,
inconvénient : faibles distance).
Ethernet : protocole réseau proche du niveau physique.
·
Interconnexion
# ordinateurs, imprimantes réseau, autres équipements bureautiques …
·
Sur
paire torsadée, câble coaxial, fibre optique
·
Débit
du 10 à 100 Mo (100 Mo pour câble coaxial)
·
Topologie
bus et accès CSMA/CD
CSMA/CD : Carrier Sense, Multiple-Access, Collision
Detection.
Pour créer réseau, il faut : câbles coaxial, câbles
de transmission (drop câble), nœud de connexion (transceiver), Multiplexeur
(MUX), hub, interface Ethernet sur le PC (carte réseau).
Type interface (terminologie unix) :
le0 : type Lance 10 Mb/s
hme0 : type high media 100 Mb/s
drop cable : connecte contrôleur au nœud de connexion
du câble coaxial ou à un MUX (~50 m max).
Nœud de connexion (transceiver) : adaptateur
entre câble coaxial et câble de transmission
MUX : permet rattachement 8 ou N drop cables sur le
nœud de connexion (transceiver).
Hub : permet raccordement de paires torsadées.
7. Applications |
22.4 Rsh rcp telnet rlogin ftp NFS NIS+ tftp |
6. Présentation |
22.5
[XDR]
|
5.
Session |
RCP (Remote Procedure Call) |
4. Transport |
TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol) |
3. Réseau |
IP (Internet Protocole) |
2. Liaison |
Ethernet |
1. Physique |
Ethernet |
Note : Attention ! , une adresse Internet / IP
(logique) n’est pas une Adresse Ethernet (physique).
·
Standalone (autonome) (en local : root, swap, usr et
autres répertoires usagers …).
·
Dataless
(stations sans données, en local : root, swap, les
répertoire usagers venant par le réseau),
·
Diskless
(station sans disques, tout vient par le réseau par NFS : root,
swap, usr et autres répertoires …)
·
Notes :
une machine peut-être à la foi, cliente et serveur.
·
Il
y a des serveurs NFS (serveurs de fichiers), NIS etc …
hosts : contient liste des machines accessibles sur le
réseau, avec leur adresse IP (adresse internet).
Sur
SUN : /etc/inet/hosts
Il en existe d’autres :
/etc/mnttab (tables des montages dont les montages NFS)
/etc/vfstab (table des montages NFS)
/etc/nodename (contient le nom logique de la machine)
/etc/nsswitch.conf (contient les type d’accès IP
sur certaines ressources : services, sendmails …)
/etc/inet/inetd.conf (permet de re paramétrer le
fonctionnement du démon de gestion TCP/IP inetd ).
/etc/inet/netmasks (configure le masque IP
d’accès au réseau IP. Positionne une certaine classe d’accès à IP).
/etc/inet/protocols (associe à un protocole _ tcp
.. _ un numéro et une valeur symbolique)
/etc/inet/services (associe un n° de port à un
service IP _ exemple 21 pour “ ftp ”. Fichier important.
Permet de rajouter de
nouveaux services. Il est important de ne pas modifier les n° de
Ports existants).
….
(sorte de fichier serveur hosts partagée entre
différentes machines) :
Nom de machines et leur adresse IP dans la base de
données NIS du serveur NIS.
ping : ping [ -s ] [ nom_de_machine | adresse_IP ] ( /usr/sbin/ping
)
exemples :
ping MOZART
ping 192.60.124.2
ping –s SAMBA
telnet : permet d’ouvrir une cession sur une machine
distante (qui peut ne pas fonctionner sous Unix).
telnet machine
Exemple :
telnet RUMBA
…
login : foucard
password :
*****
…
RUMBA% ls
…
RUMBA% exit
$
ftp : utilisé pour échanger des fichiers entre systèmes
(qui peuvent ne pas fonctionner nécessairement sous Unix). Installé dès que
TCP/IP est installé sur la machine (ftp = File Transfert Protocol).
ftp machine
Exemple :
ftp MOZART
…
Name :
foucard
password :
*****
…
ftp>
get /etc/printcap /tmp/printcap
…
ftp>
put /etc/inet/hosts /tmp/hosts
…
ftp>
close MOZART
ftp>
quit
$
ruser : liste de toutes les personnes travaillant sur le
réseau,
rwall nom_machine(s) : envoie d’un message à toutes les
personnes des machines indiquées dans la commande rwall
exemple :
rwall MOZART SAMBA RUMBA
Arrêt de la machine SAMBA dans 5 mn
Veuillez vous Déconnecter. Merci.
L’administrateur système
^D
rdate : permet de synchroniser l’horloge de sa station
de travail avec sa machine distante
(il
faut être “ root ” pour utiliser “ rdate ”).
rlogin [-l nom_usager ] nom_machine : établit une
cession sur une machine distante.
Exemple : rlogin SAMBA –l foucard
rcp [-p] [machine1:]fic_source [machine1:]fic_cible
Exemple : rcp MOZART:menu_adm1.sh
/tmp
rsh [ -l nom_usager ] nom_machine commande
Exemple : rsh MOZART “ ps –ef | grep
cron ”
/etc/default/login :
/etc/passwd : vérifie les logins entrants.
/etc/hosts.equiv : 1) permet d’éviter une nouvelle demande de
mot de passe
2) accepte utilisation
“ rcp ” et “ rsh ” à conditions que les ressources
ou commandes remotes touchées
soient autorisées
$HOME/.rhosts : idem
Notes :
·
“ .rhosts ”
doit appartenir à l’utilisateur qui tente l’accès à distance.
·
Avec
“ .rhosts ”, lors de l’exécution de la commande rlogin -l nom_usager nom_machine
·
C’est
l’identité de la personne qui tape la commande qui est prise en compte, pas
celle de “ nom_usager ”.
Si l’on veut permettre à l’utilisateur
“ foucard ” puisse se connecter sur notre machine, sans avoir donner
de mot de passe avec “ rlogin ”, il faut rajouter le nom
“ fourcard ” dans votre fichier “ .rhosts ” (qui est
située dans votre HOME Directory _ votre répertoire d’accueil quand vous vous
loguer. Celui dans lequel vous arrivez quand vous venez juste de vous loguer).
But : dès que le nombre de machines dépasse 10,
centraliser, sur une seule machine, la gestion de :
a)
/etc/passwd
b)
/etc/group
(à vérifier)
c)
/etc/inet/hosts
Définitions :
Domaine : ensemble des machines utilisant la base de
données NIS+ présente sur un serveur NIS+.
Exemple organisation NIS+ :
Domaine.com. : root serveur
Gestion.Domaine.com. : master serveur
Compta.Gestion.Domaine.com. : sous master
serveur
DRH.Domaine.com. : master serveur
Formation.DRH.Domaine.com. : sous master serveur
NFS (Network File System) : est un service réseau,
permettant aux applications et usagers, d’avoir un accès transparent à des
fichiers et répertoires, quelque soit leur emplacement (quelque soit l’endroit
de la ressource disque) sur le réseau.
1.
Possède
un disque en local
2.
Autorise
l’utilisation de ses ressources disques aux machines de son choix selon les
contraintes désirées.
3.
Il
ne fournir aucune informations sur le statut des fichiers ouverts par ses
clients
4.
Peut
servir d’autres clients d’autres serveurs ou peut-être lui-même un client NFS.
Côté serveur :
/etc/dfs/dfstab : fichier dans lequel le serveur détermine
ce qu’il accepte de partager.
Côté client :
/etc/vfstab : fichier indiquant les montages à
effectuer.
Exemple de lignes dans le fichier “ vfstab ” :
#
device device mount FS fsck mount mount
# to
mount to fsck point type pass at boot
options
/proc - /proc
proc - no -
fd - /dev/fd fd - no -
swap - /tmp
tmpds - yes -
/dev/dsk/c0t0d0s1
/dev/rdsk/c0t0d0s1 / ufs 1 no -
Côté serveur :
/usr/lib/nfs/nfsd :
/usr/lib/nfs/mountd : répond aux requêtes
client “ mount ” de montage NFS.
Côté client :
Rien.
Côté serveur :
/etc/init.d/nfs.server start : commande de lancement
des démons NFS (sur Solaris).
share : commande pour valider ses modification dans le
fichier “ dfstab ” (voir ci-avant).
share : la commande “ share ” sans
option, affiche tous les systèmes de fichiers ou les répertoires
partagés.
share [ -F
nfs ] [ -o options ] ressource_fic_ou_rep avec options :
-F :
spécifie le type de montage désiré (ici nfs)
-o :
spécifie les options de montage :
ro :
read only (permet de lire uniquement la ressource)
rw :
read/write (permet de lire et d’écrire dans la ressource)
Cette commande
avec option permet de partager un répertoire sans éditer le fichier “ dfstab ”
Exemple :
share
–F nfs –o rw /soft
shareall : partage tout ce qui est indiqué dans le fichier
“ dfstab ” (il faut être “ root ”).
Côté client :
mount : la commande “ mount ” sans
argument donne la liste des montages effectués (dans /usr/sbin)
mount [ -F nfs ] [ -o options ] machine_distante:rep_point_montage
ressource_fic_ou_rep avec :
-F : spécifie le type de montage désiré (ici nfs)
-o : spécifie les options de
montage :
ro :
read only (permet de lire uniquement la ressource)
hard :
persévérer tant que le serveur NFS sollicité ne répond pas.
Exemples :
mount
–F nfs –o hard,ro MOZART:/usr/foucard/photos /usr/lisan/photos
dfsmount machine_distante : affiche la liste des ressources
partagées par cette machine machine_distante , ainsi que les clients utilisant
ces ressources.
ifconfig : configure les paramètres de l’interface réseau.
Commande très importante.
Process |
Fonctions |
sched |
Gestion des processus. C’est le sheduler qui
alloue alternativement du temps CPU à tous les process actifs (selon
éventuellement des priorités prédéfinies). |
24.2 init |
Initialisation du système pendant la phase du
démarrage (lance les process “ sac ” etc …) |
sac |
(Service Access Controller) Configuration au login de
chaque terminal. Il génère un processus ttymon pour chaque /E/ déclaré
sur le système. Si un usager se connecte, le processus ttymon se
transforme en process login qui affiche à l’écran “ login ” pour
l’utilisateur. A la fin de la cession, un nouveau processus ttymon est
réactivé. |
pageout |
Contrôle des pages mémoires (gère le “ sawpage ”,
le transfert sur disque des pages d’un process, quand il n’y a pas assez de
place en mémoire). |
fsflush |
Contrôle la synchronisation des systèmes de fichier.
Il s’occupe de réactualiser les superblocs copiés en mémoire et les
superblocs des partitions disques montées |
Dormant -- réveillé --> Prêt
^ |
| |
bloqué |
| V
Exécuté <--
Lancé ---+
PID : n° identifiant du process.
Le processus père de tout est le processus “ init ”
et il a pour PID = 1.
Les 1er n° PID sont réservés par le système.
Chaque processus possède un n° d’identification de son
“ géniteur ” (c’est le PID du
processus père ou “ Parent Process ID ”).
Si un processus est devenu orphelin de son père, il est
rattaché au processus “ init ”.
Un processus Defunct ou Zombie est un
processus d’un fils mort qui attend sa destruction (par l’OS).
C’est un processus père (ayant oublié de faire un
“ wait ” _ voir plus loin pour le “ wait ”) et a perdu les
références de son fils (dans la table de gestion des processus).
Note : on ne peut supprimer ce dernier, qu’en
rebootant la machine (même la commande “ kill ” ne peut le
tuer. Voir plus loin pour cette dernière commande).
Un utilisateur ne peut contrôleur un processus que s’il
en est le propriétaire ou “ root ”.
Appel |
Fonctions |
fork() |
Création d’un nouveau processus |
exit() |
Fin d’un processus |
wait() |
Attente de la fin d’un processus fin (si le processus
père ne fait pas de wait, le processus fils devient zombi) |
exec() |
Chargement et exécution d’un programme (d’un code) |
Section de l’Espace |
Fonctions |
U_area |
Entête d’un processus (identifiant utilisateur,
groupe, processus parent, priorité et autres informations dynamiques du
système). Descripteur de chaque fichier ouvert. Variables d’environnement |
Stack |
Pile : les arguments d’appels, l’adresse de
retour, les variables locales des routines (sous-programmes) appelées. |
Free space |
Espace libre pour l’allocation dynamique ou des
structures de pile |
Heap |
Structures d’allocation dynamique de mémoire |
Bss |
Données non initialisées |
Data |
Données initialisées |
Texte |
Instructions du programme |
Un programme sur station SUN peut adresser jusqu’à
4 Go de mémoire.
Le processus lors de sa “ montée ” en mémoire
est découpé en pages (paging).
Si process demande page non chargée en mémoire (car
swapée), la page est en fault et est alors chargée.
MMU (Memory management Unit) : système faisant la
translation entre la mémoire logique et physique.
Si risque saturation mémoire RAM centrale, pageout prend
le processus le plus endormi et le stocke en zone de swap sur disque.
Le noyau n’est jamais swapé.
Limite absolue mémoire : taille mémoire RAM + taille de la zone de swap.
L’utilitaire swap
permet d’ajouter, de supprimer et de
superviser la zone de swap.
Syntaxe : /usr/sbin/swap
-a swapname [ swaplow ] [ swaplen ] : ajout de mémoire à la swap.
/usr/sbin/swap -d swapname
[ swaplow ] : suppression de la swap ayant pour nom «swapname ».
/usr/sbin/swap -l : affichage de la swap.
/usr/sbin/swap -s : idem
La commande “ ps ” permet de retrouver toutes
les informations utiles sur un processus.
Syntaxe : ps [ options ] avec options :
-e : indique le statut de tous les processus (exec,
wait, defunct … user id différents ?)
-f : tous les informations possibles sur les
processus actifs
-t : affiche les processus actifs liés à un terminal
-u : affiche les processus actifs liés à un
utilisateur.
Informations ramenés par / résultat d’un
“ ps ” :
Nom de la Colonne |
Description |
UID |
Uid (n° d’identifiant) de l’utilisateur |
PID |
N° d’identification du processus |
PIDP |
N° d’identification du processus père |
C |
Utilisation du processeur pour le sheduler |
STIME |
Instant de démarrage du processus (en heures, minutes
et secondes). Si le processus a plus de 24 h, il est donné en mois
et jours |
TTY |
Terminal de contrôle du processus |
TIME |
Temps CPU utilisé en secondes |
COMD |
Ligne de commande |
D’autres commandes peuvent ramener des informations sur
les processus et la charge machine :
top : ramène la liste des processus classés par ceux
les plus “ gourmands ” en ressources.
sar :
wmstat : statistiques sur l’occupation de la mémoire et
mémoire virtuelle.
Ce genre de statistiques existent aussi en sortie
graphique (outils payants SUN Solstice, …).
Envoi un signal à un processus ou à un ensemble de
processus (identifiés par leur PID).
Kill [-n°_de_signal ] pid [pid2 …] avec comme n°_de_signal :
N° de signal |
SYMBOLE |
Description |
15 ou sans n° de signal |
SIGTERM |
demande au processus de se terminer (“ kill ”
“ doux ”). |
9 |
SIGKILL |
Force la fin du processus (“ kill ”
“ brutal ”). |
Etc … |
|
|
·
Certains
processus ne peuvent être tués et certaines renaissent quand on cherche à les
supprimer.
·
Pour
obtenir la liste des “ n° de signaux ” possible, 3 solutions :
Ø
A) man kill
Ø
B) man –s5 signal
Ø
C)
kill –l n°_de_signal
·
Conseil :
tuer le processus d’abord par “ kill –15 no_processus ” avant,
si vous n’arrivez pas à le tuer, de le faire par “ kill –9
no_processus ” (avec no_processus : n° du processus à tuer).
Exemple d’une commande pour tuer un processus d’un nom
donné :
Kill –9 `ps –ef | grep process |grep –v grep| nawk
‘{print $2}’`
Voir aussi chapitre suivant.
Commande |
Action sur le processus |
& |
Lance le processus en arrière-plan (en background).
“ & ” à mettre à la fin de la commande |
fg |
Ramène le job courant de l’arrière-plan à l’avant-plan |
bg |
Relance un job stoppé et le place en arrière-plan |
Ctl-c |
Termine le processus en/au premier plan |
Ctl-z |
stoppe l’exécution du processus en cours en/au premier
plan |
jobs |
Liste les jobs stoppés ou/et passés en arrière-plan |
kill
%no_job |
Terminer un job en arrière-plan en indiquant son n° de
job : no_job |
kill
%+ |
Terminer
le job courant |
kill %- |
Terminer le job précédent |
Exemple :
sort –r fic > fic_trie &
ls –lR / > liste &
fg %2 : fg place le
job %2 en premier plan. On peut ensuite le stopper par Ctl-z ou
le tuer par Ctl-c
bg %2
jobs
Information concernée |
Bourne shell |
Korn shell |
Fichier “ profile ” pour tous les
utilisateurs |
/etc/profile |
/etc/profile |
Fichier “ .profile ” de l’utilisateur :
caractéristique du terminal et variables d’environnement (lues une seule
fois) |
$HOME/.profile |
$HOME/.profile |
Fichier “ .kshrc ” des variables
locales du Korn shell et alias du Korn shell |
|
$HOME/.kshrc |
Variables d’environnement pré-définie |
$HOME |
$HOME ENV=$HOME/.kshrc |
. .fic :
execution d’un fichier caché (en premier plan).
Commande |
Signification |
VARIABLE=valeur |
déclare la valeur |
export VARIABLE |
export une valeur (pour les shell fils crées par un
script shell ou un utilisateur) |
echo $VARIABLE |
affiche contenu de la variable |
env |
affiche toutes les variables dans le shell appelant
(shell père) (variables
d’environnement) |
set |
affiche toutes les variables dans le shell appelé
(shell fils) (variables
locales) |
unset VARIABLE |
supprime une variable |
set -x |
Met en le shell en mode débuggage (équivant à sh –x
commande). |
Variable |
Usage |
HOME |
Contient chemin du répertoire d’accueil de l’utilisateur |
LOGNAME |
Nom (login) de l’utilisateur |
PATH |
Chemins vers les répertoires par défaut (ceux pour lesquels si l’on
trouve la commande dans ce chemin, on n’a pas à ressaisir toute le
chemin de la commande pour exécuter la commande). Exemple : PATH=/usr/bin:/usr/sbin |
SHELL |
Type de shell initialisé pour l’utilisateur (exemple : SHELL=/bin/sh
) |
TERM |
Type de teminal (utilisé par “ vi ”, par “ dtpad ”
etc …) (exemple : TERM=ddtterm ou TERM=vt220) |
PWD |
Représente le chemin au répertoire courant (celui sur lequel on est à
l’instant) |
PS1 |
Prompt de 1er niveau (par défaut : $. Sauf pour
l’utilisateur “ root ” : “ # ”). |
PS2 |
Prompt de 2ème
niveau (par défaut : > ). |
Un “ alias ” est nom symbolique donné à une commande UNIX, un
script, un programme, par l’utilisateur (uniquement en Korn shell
alias : sans argument, donne la liste de tous
les alias défini dans le shell courant.
alias nom_alias=’définition’ :
créer un alias ayant comme texte
‘définition’
Exemple : alias
lpmoz=’lp –d MOZART’
unalias nom_alias : supprime l’alias “ nom_alias ”
·
L’alias “ history ”
affiche les 16 dernières commandes passées, chaque commande passée étant
affichée précédée d’un numéro “ num_ordre_historique ”.
·
Ces commandes
passées sont stockées dans le fichier “ .sh_history ” passé
dans le répertoire de l’utilisateur d’accueil “HOME ”,
·
La variable HISTFILE
placé dans un des fichiers d’initialisation de l’environnement d’accueil de
l’utilisateur permet de changer le nom de ce fichier historique,
·
La variable HISTSIZE
placé dans un des fichiers d’initialisation de l’environnement d’accueil de
l’utilisateur permet de changer le nombre de commandes visibles dans
l’historique,
·
On peut rappeler la
commande déjà passé, par la commande “ r
num_ordre_historique ” (voir ci-dessus).
·
La commande
“ fc ” permet d’éditer une commande passé, puis d’exécuter cette
commande modifiée :
Ø
fc [ - e éditeur ] num_ordre_history exemple : fc –e vi 14
·
Un solution plus
simple est de lancer le Korn shell en mode “ vi ” (par
exemple : “ ksh –o vi ” ou bien “ ksh ; set
–o vi ”).
·
La commande “ set
[+-] [drapeau] ” permet d’activer ou de désactiver un
“ drapeau ” reconnu par le Korn shell.
·
Exemple de “ drapeaux ” :
Ø
“ vi ” :
Initialise le mode insertion “ vi ” pour la ligne de commande,
tant que la touche Esc n’est pas enfoncée.
Ø
“ noclobber ” : protège les fichiers existant contre les
redirections “ > ”. Pour
contourner ce verrou, il faut utiliser le mécanisme de redirection “ >| ”.
Exemple : set –o
noclobber ; commande >| fic
Ø
“ ignoreeof ” :
inhibe la possibilité de quitter son shell avec Ctl-D
·
“ set –o ”
sans argument liste les “ drapeaux ” positionnés.
Exemple de script :
# !/usr/dt/bin/dtksh
XtInitialize TOPLEVEL
RADIO radio Radio ‘’$0’’
XtCreateManagedWidget ROW
raw XmRowColumn $STOPLEVEL
XmCreateRadioBox RADIO
$ROW Radio
XtCreateManagedWidget
RADIO1 radio1 XmToggleButton $RADIO labelString : “ Ouie FM ”
XtCreateManagedWidget
RADIO2 radio2 XmToggleButton $RADIO labelString : “ Europe 2 ”
XtCreateManagedWidget
RADIO3 radio3 XmToggleButton $RADIO labelString : “ Fun Radio ”
XtManageChild $RADIO
XtRealizeWidget $TOPLEVEL
XtmainLoop
Exemple de script :
# !/bin/sh
# Note :cette première ligne permet de ’’setter’’ l’environnement
shell en cas d’exécution de ce script
# par le processus “ cron ” (qui lui par défaut, ne
’’sette’’ aucun environnement shell à l’exécution d’un script shell)
# Note : attention, les accentués ne marchent pas toujours dans les
scripts shell
# Cela dépend du type de terminal (i.e. du type de vt ).
# exemple d’initialisation de variable en début du script
var1=A
var2=B
var3=C
# on peut créer une nouvelles= variable, concaténant le résultat des
variables précédentes :
vartot=$var1$var2$var3
# on peut aussi concaténer le contenu d’une variable avec une chaîne de
caractère :
vartot2=${var1}tion
vartot2=${var1}’’tion : ’’
Syntaxe |
traitement |
${var :=valeur_par_defaut} |
Si la variable est déjà initialisée, on substitue son contenu, sinon on
substitue par la valeur par défaut. |
${var :-valeur_par_defaut} |
Si la variable est déjà initialisée et non nulle, on substitue
son contenu, sinon on substitue par la valeur par défaut. |
${var : ?valeur_par_defaut} |
Si la variable existe et non nulle, on substitue son contenu,
sinon on substitue par le nom de la variable suivi du message. Si le message est vide, on obtient le message “ parameter null or
not set ” par défaut. Exemple : ${var : ?’’texte message’’} |
Elle permet de mettre chaque chaîne résultat d’une commande dans les
variables standard du Bourne shell : $1 $2 $3 …
Exemple : set `date`
par exemple : $1 contient
Wed $2 contient Jun etc. ..
Elle déplace à gauche tous les contenus des variables standards shell $1
$2 $3 …
La 1ère valeur de $1 est éliminé, et le contenu de $2
transféré à $1 et devient le
contenu de $1 et ainsi de suite.
(même mécanisme pour $2 et
$3 …).
Le compteur du nombre d’argument de $# est décrémenté de 1.
Syntaxe |
Signification |
$* |
Contient tout les paramètres passés au script shell |
$@ |
Donne la liste de tous les paramètres passés à un script shell |
$# |
Nombre de paramètres passés à un script shell |
$? |
Code retour de l’exécution du script shell ou de la commande que l’on
vient juste d’exécuter ( 0 : exécution correcte , > 0 : défaillance, erreur
…) |
$0 |
Nom du script shell invoqué (celui en cours d’exécution) |
$1 |
1er paramètre passé au script shell |
… |
… |
$9 |
9° paramètre passé au script shell |
Attention, il ne peut y
avoir plus de 9 paramètres passés à un script shell
Astuce : passer un paramètre, sous la forme d’une chaîne, contenant
elle-même plusieurs valeurs séparées par des blancs et entourées par des
doubles cotes.
Exemple :
test_param A1 B2 C3 D4 E5 F6 G7 H8 “I9 J10 K11”
3 syntaxes :
1) test expression_condition
commande
2) if [expression_condition ]
then
commande ; commande …
[ else
commande ; commande … ]
fi
c) if test expression_condition
then
commande ; commande …
[ else
commande ; commande … ]
fi
3) avec “ elif ”
if condition
then
commande ; commande
…
[ elif condition
then
commande ; commande … ]
[ else
commande ; commande … ]
fi
Note : il est préférable d’utilisateur l’instruction “ case ” :
case variable in
valeur1 ) commande11
[ ; commande12 …] ; ;
valeur2 ) commande21
[ ; commande22 …] ; ;
…
valeurN ) commandeN1
[ ; commandeN2 …] ; ;
* ) commandex1 [ ; commandex2
…] ; ; # tous les
valeurs non citées dans la liste de valeurs ci-avant
esac
for variable in liste # pour la liste de valeurs,
on exécute les commandes ci-dessous
do
commandes ;
done
while condition # tant que la condition est
vérifiée, on exécute les commandes ci-dessous
do
commandes ;
done
Opérateur de test |
Type pour |
Signification (retourne 0 si la condition
ci-dessous est vérifiée) |
Str1 = Str2 |
Chaînes |
égalité entre Str1 et Str2 |
!= |
Chaînes |
inégalité entre Str1 et Str2 |
Str1 |
Chaînes |
si la chaîne Str1 n’est pas la chaîne vide |
-n Str1 |
Chaînes |
si chaîne Str1 n’est pas nulle (sa taille n’est pas égale à zéro) |
-z Str1 |
Chaînes |
si chaîne Str1 est nulle (sa taille est égale à zéro) |
Int1 -eq Int2 |
Entiers |
Si Int1 est égal à Int2 |
Int1 -ne Int2 |
Entiers |
Si Int1 n’est pas égal à Int2 |
Int1 -ge Int2 |
Entiers |
Si Int1 est supérieur ou égal à Int2 |
Int1 –gt Int2 |
Entiers |
Si Int1 est supérieur à Int2 |
Int1 –le Int2 |
Entiers |
Si Int1 est inférieur ou égal à Int2 |
Int1 –lt Int2 |
Entiers |
Si Int1 est inférieur à Int2 |
-d fichier |
Fichier |
Si fichier est un répertoire |
-f fichier |
Fichier |
Si fichier est un fichier ordinaire |
-r fichier |
Fichier |
Si fichier est un fichier qui peut être lu (read), par le processus |
-w fichier |
Fichier |
Si fichier est un fichier qui peut être écrit (write), par le processus |
-s fichier |
Fichier |
Si fichier est un fichier de longueur non nulle |
-x fichier |
Fichier |
Si fichier est un fichier exécutable |
! expression |
Opérateur unaire |
Si l’expression est FALSE |
Expression1 –a Expression2 |
Opérateur unaire |
Les 2 expressions sont TRUE |
Expression1 –o Expression2 |
Opérateur unaire |
L’une des 2 expressions (ou les 2) est TRUE |
Syntaxe : expr var1 operateur_expr var2
Opérations possible avec la commande “ expr ”
Opérateur pour la commande “ expr ” |
Son action |
+ |
Addition |
- |
Soustraction |
\* |
Multiplication |
/ |
Division |
% |
Modulo |
Exemple : a=0 ;
echo `expr $a + 100`
Notes :
a) Attention ! , toutes les variables doivent être
initialisées dans la commande “ expr ”.
b) Il faut toujours séparer opérandes et opérateurs par un espace.
Exemple :
# !/bin/sh
a=1
while [ $a != 10 ]
do
echo $a’’ \c’’
a=`expr $a + 1`
done
read var1 : Elle lit
ce que vous avez saisi sur votre clavier, dans la variable “ var1 ”.
Exemple de script :
# !/bin/sh
lcd ()
{ cd $1
PS1=’’`hostname` : `pwd` $ ‘’ ;
export $PS1
}
lcd $2
l) la commande “ exec ” :
exec fd> fic
exec fd< fic
exec < fic
exec > fic
exec > /dev/tty
exec 2> /dev/tty
Contrôleur |
Unité |
Taille |
Type |
Format |
Pistes |
Raw Device |
Xylogics® 472 |
Fujitsu M2444 |
1/2-inch |
Réel |
1600 bpi |
9 |
/dev/rmt/Om |
1/2-inch |
Réel |
6250 bpi |
9 |
/dev/rmt/Oh |
||
SCSIfront-loaded |
HP |
1/2-inch |
Réel |
800 bpi |
9 |
/dev/rmt/Om |
6250 bpi |
9 |
/dev/rmt/Oh |
||||
SCSI |
Sysgen® |
1/4-inch |
Cartridge |
QIC-11 |
4 |
/dev/rmt/01 |
QIC-24 |
4 |
/dev/rmt/Om |
||||
QIC-11 |
9 |
/dev/rmt/01 |
||||
QIC-24 |
9 |
/dev/rmt/Om |
||||
Emulex® MT-02 |
1/4-inch |
Cartridge |
QIC-11 |
4 |
/dev/rmt/01 |
|
QIC-24 |
4 |
/dev/rmt/Om |
||||
QIC-11 |
9 |
/dev/rmt/01 |
||||
QIC-24 |
9 |
/dev/rmt/Om |
||||
Archive® QIC-150 |
1/4-inch |
Cartridge |
QIC-150 |
18 |
/dev/rmt/Oh |
|
Wangtek'™' QIC-150 |
1/4-inch |
Cartridge |
QIC-150 |
18 |
/dev/rmt/Oh |
|
Desktop Backup Pack |
1/4-inch |
Cartridge |
QIC-150 |
18 |
/dev/rmt/Oh |
|
Exabyte® 8200 (2.3 GB) |
8nim |
Cartridge |
8mm |
Helical Scan |
/dev/rmt/Om |
|
Exabyte 8500 (2.3 GB) |
8mm |
Cartridge |
8mm |
Helical Scan |
/dev/rmt/01 |
|
Exabyte 8500 (5 GB) |
8mni |
Cartridge |
8mm |
Helical Scan |
/dev/rmt/Om |
|
Archive® Python |
4mm |
Cartridge |
4mm |
Helical Scan |
/dev/rmt/0 |
UNIX est doté d'une messagerie électronique et d'un courrier électronique, qui peut correspondre avec Internet.
Elles permettent de communiquer simplement entre utilisateurs.
write nom_utilisateur : commande de messagerie électronique, permet d'envoyer un message à un utilisateur connecté de nom « nom_utilisateur ». Le message est envoyé ligne par ligne jusqu'à un caractère de fin de fichier et apparaît sur le terminal de l'utilisateur. Exemple :
write belgique
le texte du message
Ctrl-D
wall : le super-utilisateur « root » a la possibilité d'envoyer le même message à tous les utilisateurs connectés. Pour cela , il utilise wall à la place de write.
mesg [-n] [-y] : Il est possible d'ôter la possibilité de recevoir des messages envoyés par write en utilisant la commande mesg. Par défaut la permission est accordée.
mail [nom_utilisateur] : Envoi d'un message (un mail) vers la boîte aux lettres d’un ou plusieurs utilisateurs. Les messages sont conservés dans les boîtes (contrairement aux messages par write qui sont éphémères).
Le mail va dans la boîte de l'usager _ un fichier ayant en général comme nom : /usr/spool/mail/nom_utilisateur
L'utilisateur peut envoyer, consulter, détruire des messages.
Quand de nouveaux messages sont arrivés depuis la dernière consultation de la boîte à lettre, l'utilisateur reçoit le message suivant sur son terminal : « You have mail » . Ce message apparaît :
- à la réception d'un message
- à la connexion
- de façon périodique ( la période est déterminée par l'intermédiaire d'une variable; ex : MAILCHECK).
Syntaxe : mail nom_utilisateur
le texte du message
Ctl-D
mail permet de lire sa boîte à lettres. Cet utilitaire affiche un prompt et attend les directives listées ci-après :
RC, +, n message suivant
-n message précédent
p réaffiche le message courant
d détruit le message courant
dn détruit le message n
n affiche le message numéro n
s [nom_fichier] sauve le message dans le fichier de nom "nom_fichier" s'il est fourni , sinon le message est sauvé dans la mail box
w [nom_fichier] sauve le message dans le fichier de nom "nom_fichier" s'il est fourni , sinon le message est sauvé dans la mail box
q, Ctl-D sort de mail
? liste des directives
mailx -s objet_message adresse_email <
fic : avec :
objec_message : l’objet du
message,
adresse_email :
l’adresse email (exemple : rh@soria.fr)
ou une adresse IP.
Fic :
le fichier contenenant le texte du message à envoyer.
Cette
commande permet à un script shell, d’envoyer un message à un utilisateur donné,
durant son exécution.
Exemples : a) mailx
-s "$HOST `whoami`" $MAIL_ADDR << %%
$msg
%%
b) mailx -s
"$HOST pb_securite" $MAIL_ADDR < $DIR_LOG/cmp_drt_fic_sys2
Sans « DiskSuite » ou « Volume manager » qui sont des
outils payants, les outils d’administration sur SUN sont limités.
Il reste alors « admintool » (un outil X-windows),
« sysdef » et « prtdiag »
(les 2 derniers, pour voir toute la configuration matérielle de la machine).
Lancement “admintool” : 17465ksh# admintool
Administration des utilisateurs
Liste des softwares
17476ksh# ./platform/sun4u/sbin/prtdiag
System Configuration: Sun Microsystems sun4u Sun Fire 280R (2 X UltraSPARC-III+)
System clock frequency: 150 MHz
Memory size: 2048 Megabytes
========================= CPUs ============================================
Run E$ CPU
CPU
Brd
CPU MHz MB
Impl. Mask
--- --- ---- ----
------- ----
A 0 900
8.0 US-III+ 2.2
B 1 900
8.0 US-III+ 2.2
========================= Memory
Configuration ============================
Logical Logical Logical
MC Bank Bank
Bank DIMM Interleave Interleaved
Brd ID num
size Status Size
Factor with
----
--- ---- ------
----------- ------ ----------
-----------
CA 0 0
1024MB no_status 512MB
2-way 0
CA 0
2 1024MB no_status 512MB 2-way 0
========================= IO Cards
=========================
Bus
Max
IO Port Bus Freq Bus Dev,
Brd
Type ID Side Slot MHz Freq Func State Name Model
---- ---- ---- ---- ---- ---- ---- ----
----- ------------ -------------
I/O
PCI 8 B 2 33
33 3,0 ok SUNW,m64B SUNW,370-4362
root@canam:/usr
17477ksh#
Ecran d’introduction :
Cas de la panne de SMC :
smc ne se lance pas. On a l’erreur : toolbox :http://nom_machine :898/toolboxes/smc.tbx
could not be loaded
Ce sont les erreurs s’affichant dans la fenêtre de « smc » : « console events ».
C’est parce que le serveur smc est tombé (ou n’est pas lancé).
Quand on lance smc est que le serveur est lancé, on doit avoir les processus suivants, en mémoire :
root
8941 8923 0 14:23:55 pts/3 0:15 /usr/java/bin/java
-Djava.security.policy=/usr/sadm/lib/smc/policy/smcconsole.p
root 8923 8788 0 14:23:55 pts/3 0:00 /bin/ksh /usr/sadm/lib/smc/bin/smc <= ce processus est la console « smc » qu’on vient de lancer.
Cette panne peut survenir quand on tente de consulter l’écrans des disques et qu’on n’obtient pas de réponses :
Dans ce cas, il faut arrêter le processus serveur « sms » (s’il n’est pas arrêté), par la commande :
/etc/init.d/init.wbem stop
(si le serveur « smc » est déjà arrêté, on
obtient un message d’erreur. Ce n’est pas grave). Puis il faut relancer
par : /etc/init.d/init.wbem
start
Il doit y avoir alors 2 processus suivant (dont l’un est le fils de l’autre ) : /usr/sadm/lib/smc/bin/smcboot
Lorsqu’on lance « smc », on doit avoir la séquence suivante :
Starting SMC server version 2.0.0.
endpoint created: :898
prop dir: /usr/sadm/lib/wbem
log dir: /var/sadm/wbem/logr
SMC server is ready.
On peut aussi avoir l’erreur suivante dans l’écran du « log viewer » (voir page suivante) :
Visualisation
de l’erreur dans la « console events » :
Gestion
des comptes utilisateurs avec « smc » :
Ajout
d’un utilisateur :
Informations matérielles sur la machine :
Administration des tâches planifiées : (voir aussi, plus haut, la « crontab » ).
Adminstration des
processus :
Administration des disques :
Montages
et partages des disques :
Gestion
de volumes :
hardware
devices