Date de première publication : 2014/09/11
" Le web, aujourd'hui, tu découvriras "
--- Un petit bonhomme vert
Avant de commencer, êtes-vous sûr d'avoir vidé le fichier crontab écrit hier ???
Gérer son espace de stockage
Voici la commande qui permet d'afficher l'espace disque occupé par le répertoire courant :
$ du -hs .
Vous pourrez ainsi repérer les répertoires à problème
La commande find
permet de trouver des fichiers d'une certaine taille ou d'un certain âge et de coupler le résultat avec une action : archivage, effacement.
La commande df
permet d'avoir des informations sur les partitions disque disponibles et en particulier leur remplissage (c'est super pratique pour savoir si on doit rajouter un disque) !
Trouver des fichiers suivant certains critères
Avec la commande find
, on peut trouver tous les fichiers de taille nulle, tous les fichiers se terminant par un ~ (fichiers temporaires d'édition)
et les effacer directement.
Le script suivant va générer une arborescence aléatoire avec des fichiers de noms et de tailles aléatoires. Si le fichier s'appelle alea.sh, voici ce qu'il faut faire :
chmod +x alea.sh
./alea.sh
#!/bin/bash
# Created by Ben Okopnik on Wed Jul 16 18:04:33 EDT 2008
# Modified by Loic to meet our needs on find command examples
######## User settings ############
MAXDIRS=5
MAXDEPTH=2
MAXFILES=100
MAXSIZE=1000
######## End of user settings ############
# How deep in the file system are we now?
mkdir temptree
cd temptree
TOP=`pwd|tr -cd '/'|wc -c`
populate() {
cd $1
curdir=$PWD
files=$(($RANDOM*$MAXFILES/32767))
for n in `seq $files`
do
f=`mktemp XXXXXX`
size=$(($RANDOM*$MAXSIZE/32767))
if [ $size -gt 500 ]
then
head -c $size /dev/urandom > $f
else
touch $f
fi
done
depth=`pwd|tr -cd '/'|wc -c`
if [ $(($depth-$TOP)) -ge $MAXDEPTH ]
then
return
fi
unset dirlist
dirs=$(($RANDOM*$MAXDIRS/32767))
for n in `seq $dirs`
do
d=`mktemp -d XXXXXX`
dirlist="$dirlist${dirlist:+ }$PWD/$d"
done
for dir in $dirlist
do
populate "$dir"
done
}
populate $PWD
Vous pouvez maintenant chercher tous les fichiers de taille nulle. Yoda, un peu d'aide ?
"Do or do not. There is no try ! En fait si ! Les fichiers de taille nulle ou vides (empty).
Compresser des fichiers
Pour transférer des fichiers (ou les sauvegarder), il vaut mieux avoir un gros fichier que plein de petits. Le gros fichier peut être obtenu par un utilitaire comme tar
et être éventuellement compressé.
$ tar cvf archive.tar /usr/include/X11
# lire X onze
$ tar tvf archive.tar
$ tar xvf archive.tar
Plusieurs utilitaires existent pour compresser(Zipper) : compress (uncompress), gzip (gunzip)voire gzip2. tar sur certains systèmes accepte l'option z
$ gzip -9 archive.tar
$ gunzip archive.tar.zip
Réseau
La machine distante est tp-sftpserver.local.isima.fr
. L'identifiant/login est celui de l'UCA.
ssh
Nous allons nous connecter à machine pour préparer la copie
$ ssh [login]@nom_machine_ou_adresse_IP
machine> Créer un répertoire "sauv"
machine> exit
$
Préciser le login est inutile si c'est le même entre la machine locale et la machine distante.
sftp
On va transférer le fichier tar/zip sur la machine distante pour le "sauvegarder".
$ sftp [login]@nom_machine_ou_adresse_IP
Comme précédemment, préciser le login est inutile si c'est le même entre la machine locale et la machine distante.
Pour changer de répertoire, cd
le fait sur l'hôte distant, lcd
sur la machine locale.
Mettez-vous dans le répertoire que vous avez créé ! Puis copiez le fichier.
Les commandes put
et get
permettent respectivement d'envoyer ou de récupérer un fichier.
Une fois le fichier transféré, il faut se déconnecter...
sftp> quit
# OU
sftp> bye
scp
La commande scp
peut sembler plus intuitive :
$ scp archive.tar login@machine:.
Il faudra bien entendu saisir son mot de passe sauf si on sait l'éviter...
ssh
Nous allons nous connecter à la machine distante pour vérifier le transfert et décompresser le fichier
$ ssh login@machine
machine> faire ce qu'il faut avec le fichier ...
machine> exit
$
Ne pas oublier de tout nettoyer avant de quitter machine et de nettoyer aussi la machine locale que vous avez utilisée.
Imaginons maintenant que vous êtes chez vous et que vous voulez valider vos TPs ou travailler sur nightmare ou ada. Ces serveurs sont protégés de l'extérieur par VPN. Pour y accéder, il faut tout d'abord lancer correctement le VPN.
$ hostname
$ ssh -Y login@nightmare
etud> hostname
...
etud> exit
$
La commande hostname
permet de savoir à quel serveur on est connecté. C'est pratique si le prompt n'est pas bavard.
Les options -X
ou -Y
permettent d'activer le graphisme pour la session ssh. Bien entendu, cela ne marche pas si vous utilisez Windows
(la commande ssh n'est pas disponible non plus, il faudra utiliser un utilitaire comme putty)
Pour que tout cela marche sous Windows 10/11, vous pouvez installer le sous-système LINUX et même installer un serveur graphique X.
Si vous voulez accéder uniquement à vos données à partir de chez vous, une connexion VPN n'est pas nécessaire. Il suffit de se connecter à guacamole.isima.fr avec vos identifiants UCA.
Les fichiers de configuration
vi
Le fichier de configuration de vi se nomme .exrc
et doit se trouver dans votre $HOME si vous en voulez un. Il est lu à chaque utilisation de l'éditeur.
Pour configurer vi pour que le mode d'insertion ou commande soit affiché et que les numéros de ligne le soient aussi par défaut :
$ cat > .exrc
set nu
set showmode
CTRL+D
$
shell
Si vous voulez changer votre prompt (variables PS1 et PS2), si vous voulez ajouter des alias ou tout simplement que le shell vous dise bonjour et que ces modifications soient permanentes, il va falloir modifier le fichier de configuration du shell, c'est-à-dire .bashrc (suivant la configuration des machines, il peut également s'agir de .bash_profile ou .profile)
Le fichier est lu à chaque nouvelle session de bash. Si le fichier est modifié, pour que les modifications prennet effet immédiatement, il va falloir forcer le shell à le relire, c'est ce que l'on appelle "sourcer". Il faut donc taper l'une des commandes suivantes :
$ source .bashrc
$ . .bashrc
Alias
Quels sont les alias disponibles ?
alias
Vous pouvez constater que l'alias alias ll="ls - l"
est déjà disponible. Ajoutez en un autre dans le .bashrc.
alias cd..="cd .."
Il sert à éviter une "faute" de frappe. On peut faire un alias en utilisant le nom de la commande comme nom alias et des options fixées par défaut, mais cela pourrait perturber une autre personne qui vous verrait travailler (vous ne prêtez pas votre compte, hein !)
alias rm="rm -i"
L'alias ne vous plait plus ? On le dégage du fichier ou on applique une des méthodes suivantes :
unalias rm #desactivation temporaire
\rm #utilisation de la vraie commande
L'invite de commande
L'invite de commande est modifiable par les variables suivantes :
- PS1 : c'est celle qui nous intéresse, c'est le Prompt Statement (et pas PlayStation) interactif qui n'est pas vraiment utile par défaut.
- PS2 : c'est quand une ligne de commande longue est saisie sur plusieurs lignes (l'antislash est le caractère pour la ligne suivante)
- PS3 sert pour les boucles dans un script et PS4 pour le mode debug d'un script
# afficher la valeur de PS1
echo $PS1
# Exemple de modification de PS1 dans le .bashrc
PS1="\w> "
La politesse
Le shell peut nous souhaiter le bonjour si on en a envie ... Il suffit de placer la ligne suivante en dernier dans le fichier :
echo "Bonjour Padawan"
Solutions
Voici la solution du find :
find . -name "*~" -size 0k -exec rm {} \;
find . -name "*" -empty -delete
On peut aussi trouver tous les fichiers d'un certain âge ou avec certaines permissions, pour les déplacer ou changer les permissions.
find . -mtime +365 -exec cp {} ../asauv \;
Web
Mise en place des pages perso
L'ISIMA vous permet de disposer de votre propre page ouaib. Les adresses pour y accéder sont de la forme :
https://perso.isima.fr/~votrelogin
(Pour ma page web, j'ai un privilège qui me permet de m'affranchir du tilde.)
Pour cela, rien de plus simple, il faut créer un répertoire public_html
dans votre $HOME
$HOME/shared
et ajouter un fichier index.html
dans celui-ci.
Pour que tout roule, il faut s'assurer que les répertoires $HOME
, shared
(pas le lien, ce qui se cache derrière) et public_html
ainsi que tous les sous-répertoire de public_html
que vous voulez partager sont accessibles pour le programme qu'est le serveur web (apache ou httpd de son petit nom)
(le serveur web n'est ni vous, ni un programme de votre groupe) et tous les fichiers accessibles doivent être également accessibles en lecture...
$HOME
doit être accessible en 711 au moinspublic_html
et les fichiers depublic_html
doivent être en 755 (cela inclut le fichier caché .htacess)
et voilà le contenu minimal du fichier index.html
<!doctype html>
<html>
<head>
<title>Ma premiere page</title>
</head>
<body>
<h1>Bienvenue chez moi</h1>
<p>C'est mon premier essai</p>
</body>
</html>
La première ligne est une information pour le navigateur : on lui dit que c'est une page web avec la norme HTML5
L'entête du document (<head>
) n'est jamais affichée ou pas directement. La partie <body>
représente le contenu de la page. Dans cette page toute simple, il y a un titre de niveau le plus haut <h1>
(les titres moins importants vont de <h2>
à <h6>
et un paragraphe <p>
Si c'est votre premier essai, on va mettre premier en gras dans le paragraphe <p>
: il suffit d'entourer premier avec les balises <b>
et </b>
Si cela vous embête que le titre soit mal écrit (un mot sans accent), vous pouvez le préciser, cet accent, de deux manières "è" ou alors è
. Cette dernière forme est la plus portable.
Si les accents usuels apparaissent bizarrement sur la page, il sera nécessaire de sauvegarder le fichier html au format utf-8 et il faudra préciser ce format dans l'entête de la page
<meta charset="utf-8">
Cette balise est une balise simple, elle ne se ferme pas.
Ajout d'un peu de contenu
Si vous voulez faire une liste, utiliser les balises <ul>
(liste non ordonnée) ou <ol>
(liste ordonnée). Chaque élément de liste sera donné par <li>
<ul>
<li>apprendre quelques balises html</li>
<li>mettre du style</li>
</ul>
Si vous voulez mettre une image, utilisez la balise simple <img>
comme suit :
<img src="images/loic.png" title="tete du loic" alt="avatar">
L'attribut src
est l'emplacement de l'image, on peut mettre un chemin ou une URL. Si vous mettez un chemin, cela doit être un chemin dans public_html
. L'attribut title
permet de donner une information contextuelle et l'attribut alt
est affiché quand l'image ne l'est pas (image non trouvée ou navigateur non graphique). L'image est redimensionnable si nécessaire.
Il est temps de voir pourquoi le HTML s'appelle le HTML. Dupliquer la page index.html
et lui donner le nom deux.html
. Ajouter respectivement dans les pages un lien :
<a href="deux.html">Visiter la deuxième page</a>
<a href="index.html">Retourner à la page principale</a>
Ajouter du style
On va ajouter des informations de style aux pages web que l'on vient de créer. Les pages vont partager les mêmes informations. Pour cela, nous allons les placer dans un fichier texte nommé style.css
. Il faut dire dans l'entête des fichiers que le fichier de style doit être utilisé :
<link rel="stylesheet" href="style.css" >
Si vous voulez que les liens aient un fond jaune :
a {
background-color:yellow;
}
Pour que toute image soit centrée sur la page :
img {
display : inline-block;
margin : auto;
}
On va maintenant changer la taille de police quand un lien est survolé par la souris (hover) :
a:hover {
font-size : 120%;
}
Les informations de style peuvent aussi être placées dans une balise <style>
dans l'entête ou spécifique à une balise avec un attribut style
.
- 1
- 2
- 3
- 4