# [LIGNE DE COMMANDE] Maîtriser son OS

## idodesuke

Ce sont les commandes du système j'ai pris des notes au fur et à mesure, si ça peut aider des gens a se mettre à la ligne de commande, et si d'autres peuvent partager leurs trucs et astuces, on peut ajouter des choses. Par contre il pourrait y avoir une différence entre mes memos personnels et ceux que je poste sur le forum.

changelog

```
2082011:

J'espère que je ne suis pas trompé dans mes copier/coller sinon je reviendrai dessus plus tard. J'ai ajouté un -1

(pour des mises à jour si besoin) à la fin des noms de fichiers, je vais en faire autant sur ma machine, j'ai ajouté

la date d'aujourd'hui en début de fichier aussi.

Je ne sais pas trop comment noter les commandes, noter les choses à changer entre <> ça me parraît pas mal. Je ferai

plus attention en lisant les pages de man et je reviendrai dessus.

Je peux gérer les versions des fichiers " /home/ido/workshop/wks/prj/memo/"

Et me contenter de dater les fichiers dans "~/memo"

ido@zalem memo 17:48

$ls /home/ido/workshop/wks/prj/memo/

changelog  memomultimedia-1  memoos-1  memoosgentoocontrib-1  memoosgentooupdate-1  memoossysadmin-3  memotext-1

ido@zalem memo 17:48

$ls ~/memo

h.c_monitors           memodevcvs     memodevxml            memomultimedia   memoosadvanced        memoosgentooebuild~  memoosmemory1    memotemplate~  memotxtmiseenforme

memobrowsecode         memodevcvsad   memodevxsl            memomultimedia~  memoosadvanced~       memoosgentooupdate   memoossysadmin   memotext       memotxtmiseenforme~

memobrowsecode~        memodeverrors  memodevxslex          memonotes        memoosadvanced1       memoosgentooupdate~  memoossysadmin~  memotext~      memowww

memocharacterencoding  memodevhead    memoemacs             memonotes~       memoosgentoocontrib   memoosgentooupdate1  memoossysadmin1  memotext1      memowww~

memodevc               memodevpy      memognuplot           memoos           memoosgentoocontrib~  memoosido            memosed          memotime       memowwwhttpcodes

memodevc~              memodevpy~     memognuplot~          memoos~          memoosgentoocontrib1  memoosmemory         memotemplate     memotime~

memodevcoptimization   memodevseek    memographicspainting  memoos1          memoosgentooebuild    memoosmemory~        #memotemplate#   memotxtlatex
```

memomultimedia-1

```
#17/06/2011 v1

\033[1;31m--> Image iso\033[0m

  $mkisofs -r -o mon_image.iso mon_fichier

  $mount -t iso9660 mon_image.iso mon_fichier -o loop

----------

\033[1;31m--> Commandes pour graver DVD :\033[0m

  $dvd+rw-format -force /dev/dvd && mkisofs -r -o backup.iso backup && growisofs -Z /dev/dvd=backup.iso

  $growisofs -dvd-compat -Z /dev/dvd -R -J -pad mon_repertoire

----------

\033[1;31m--> Commandes pour graver CD :\033[0m

  $cdrecord dev=ATA -scanbus

  $cdrecord -v -dao speed=8 dev=ATAPI:x,y,z /chemin/image.iso

----------

  $mount -o rw,user /dev/sdb1 /media/usbkey

----------

\033[1;31m--> MPLAYER :\033[0m

  $gnome-terminal --geometry=70x30 --title Radio -x mplayer -af volnorm -ao alsa:noblock:device=hw=1.0 -softvol -fs -vo gl2 -playlist %q

-----------

\033[1;31m--> Limiter la vitesse de lecture du lecteur :\033[0m

  $eject -x 8 /dev/cdrom

-----------

\033[1;31m--> Lister les processus utilisant le son si le répertoire "/dev/snd" est peuplé :\033[0m

  $fuser -v /dev/snd/*

-----------

\033[1;31m--> Lancer Jack en ligne de commande :\033[0m

  $jackd -R -d alsa

-----------

\033[1;31m--> Lancer un métronome en ligne de commande :\033[0m

  $jack_metro -f 440 -a 1 --name metro -b 60 &

à la fréquence de 440

avec un son maximum (0 et le minimum, 1 le maximum),

-name est le nom du client Jack,

et -b le nombre de battements par minute (BPM).

-----------

\033[1;31m--> Enregistrer un flux audio avec Jack :\033[0m

  $jack_capture

-----------

\033[1;31m--> Enregistrer un flux audio avec arecord :\033[0m

  $arecord -f cd -D hw:1 essai1.wav

  $arecord -f cd -D plughw:1 essai1.wav

-----------

\033[1;31m--> Se connecter à un périhérique audio :\033[0m

En saisissant directement le périphérique ALSA (hw:0 ou hw:1 et ainsi de suite).

En routant le flux par alsa-lib (plughw:0,0 ou plughw:1,0 et ainsi de suite).

Il est possible de définir des périphériques virtuels dans ~/.asoundrc pour plus de contrôle.

-----------

\033[1;31m--> Configurer les expresskeys de la tablette graphique\033[0m

  $xsetwacom set Pad Button3 "core key ctrl z"

  $xsetwacom set Pad Button4 "core key ctrl y"

  $xsetwacom set Pad Button5 "core key n"

  $xsetwacom set Pad Button6 "core key p"

  $xsetwacom set Pad Button7 "core key k"

  $xsetwacom set Pad Button8 "core key shift e"

\033[1;34m##############\033[0m
```

memoos-1

```
#17/06/2011 v1

\033[1;31m--> Afficher l'espace disque occupé à l'intérieur

    d'un répertoire.\033[0m

\033[1;34mAffiche un total pour chaque paramêtre.\033[0m

  $du -hs .

----------

\033[1;31m--> Lister les processus en arrière plan.\033[0m

  $jobs

----------

\033[1;31m--> Execution en avant plan.\033[0m

  $fg

----------

\033[1;31m--> Execution en tache de fond.\033[0m

  $bg

----------

\033[1;31m--> Gérer les permissions (u)(g)(o)\033[0m

1 : droit d'exécution                   4 (SUID)

2 : droit d'écriture                    1 (Sticky)

4 : droit de lecture                    2 (SGID)

----

la lecture (r comme read)               s (SUID)      

l'écriture (w comme write)              g (SGID)         

l'exécution (x comme execute)

----------

\033[1;31m--> Envoyer un signal à un processus\033[0m

  $pidof advi

  $kill -SIGUSR1 23781

sighup, sigint, sigquit, sigill, sigtrap, sigabrt, sigiot, sigbus, sigfpe, sigkill,

sigusr1, sigsegv, sigusr2, sigpipe, sigalrm, sigterm, sigstkflt, sigchld, sigcont,

sigstop, sigtstp, sigttin, sigttou, sigurg, sigxcpu, sigxfsz, sigvtalrm, sigprof,

sigwinch, sigio, sigpoll, sigpwr, sigsys

----------

\033[1;31m--> Quelques permissions\033[0m

  $chown -R mpd:audio /home/mpd/musics && \

  $chmod -R 760 /home/mpd/musics && \

  $find /home/mpd/musics -type d -exec chmod 770 '{}' \;

----------

\033[1;31m--> Liste des repertoires sans leurs sous-repertoires.\033[0m

  $find * -type d -prune

----------

\033[1;31m--> Trouver $FICHIER dans $REPERTOIRE.\033[0m

  $find $REPERTOIRE -name "$FICHIER"

----------

\033[1;31m--> Trouver $FICHIER dans $REPERTOIRE, exclure $REP_A_EXCLURE de la recherche\033[0m

  $find $REPERTOIRE -name "$FICHIER" | egrep -vi "^(/$REP_A_EXCLURE)"

il faut échapper les antislash!

ex:

  $egrep -vi "^(\/media\/dvdrom\/ADOBEICC\/ENGLISH\/)"

----------

\033[1;31m--> Rechercher une chaine de caractère dans les fichiers

    du répertoire courant.\033[0m

  $grep -E -i 'on peut|permet' *

----------

\033[1;31m--> Compter le nombre d'occurances d'une chaine de caractère

    dans les fichiers du répertoire courant.\033[0m

  $grep -E -i ’on peut|permet’ *.tex | wc -l

----------

\033[1;31m--> Afficher les liens cassés\033[0m

  $blink [répertoire 1] [répertoire 2] ...

----------

\033[1;31m--> Afficher et supprimer les liens cassés\033[0m

  $find /usr/bin -type l ! -xtype f ! -xtype d -ok rm -f {} \;

----------

\033[1;31m--> Tester une condition rapidement en ligne de commande\033[0m

  $if [CONDITION]; then [CONDITION VERIFIEE]; else [CONDITION N EST PAS VERIFIEE]; fi

----------

\033[1;31m--> Naviguer dans les répertoires\033[0m

\033[1;34mEnregistrer le chemin de nom-rep dans la pile de répertoires et changer le répertoire courant par nom-rep.\033[0m

  $pushd nom-rep

\033[1;34mSupprimer (enlève du haut) le chemin du dernier répertoire et, en même temps, change de répertoire courant

par celui qui vient d'être récupéré dans la pile.\033[0m

  $popd 

\033[1;34mLister le contenu de la pile de répertoires (comparez ceci avec la variable $DIRSTACK). Une commande pushd

ou popd satisfaite va automatiquement appeler dirs.\033[0m

  $dirs

----------

\033[1;31m--> Configurer les expresskeys de la tablette graphique\033[0m

  $xsetwacom set Pad Button3 "core key ctrl z"

  $xsetwacom set Pad Button4 "core key ctrl y"

  $xsetwacom set Pad Button5 "core key n"

  $xsetwacom set Pad Button6 "core key p"

  $xsetwacom set Pad Button7 "core key k"

  $xsetwacom set Pad Button8 "core key shift e"

\033[1;34m##############\033[0m[/quote]

memoosadvanced-1

[quote]#17/06/2011 v1

\033[1;31m--> Réseau.\033[0m

  $scp mon_fichier username@remotebox:

  $nmap kuzutetsu -p 0-65535

----------

\033[1;31m--> Consulter le code de sortie de la dernière commande dans un shell.\033[0m

  $echo $?

Le !, qualificateur du non logique, inverse le résultat d'un test ou d'une commande et ceci affecte son code de sortie.

----------

\033[1;31m--> Lister les fichiers actuellement ouverts sur le système.\033[0m

  $lsof

----------

\033[1;31m--> Tester une condition rapidement en ligne de commande.\033[0m

  $if [CONDITION]; then [CONDITION VERIFIEE]; else [CONDITION N EST PAS VERIFIEE]; fi

----------

\033[1;31m--> Afficher les modules du noyau :\033[0m

  $find /lib/modules/<version du noyau>/ -type f -iname '*.o' -or -iname '*.ko'

-----------

\033[1;31m--> Afficher la configuration actuelle de netfilter :\033[0m

  $iptables -t filter -L --line-numbers -v

-----------

\033[1;31m--> Configurer la vitesse du processeur :\033[0m

  $cpufreq-set --freq 1800MHz

-----------

\033[1;31m--> Forcer la vérification des disques :\033[0m

  $touch /forcefsck

  $shutdown -r -F now

-----------

\033[1;31m--> Afficher la liste des pilotes installés :\033[0m

  $qlist -I -C x11-drivers/

-----------

\033[1;31m--> Configuration du clavier :\033[0m

  $setxkbmap <layout>

  $setxkbmap -model pc105 -layout fr -variant latin9,winkeys

  $gnome-keyboard-properties

-----------

\033[1;31m--> ARGYLL\033[0m

  $dispcal -v -q l -y c viewsonic-calib

  $targen -v -d3 -f250 viewsonic-calib

  $dispread -v -y c -k viewsonic-calib.cal viewsonic-calib

  $colprof -v -A "ViewSonic" -M "VP2250wb" -D "Aug 062009-2252" -q m -as viewsonic-calib

  $su -c "cp /home/ido/calib/viewsonic-calib.icc /etc/calib/"

  $xcalib /etc/calib/viewsonic-calib.icc

-----------

\033[1;31m--> Here's how to run date on four machines named gentoo-box-1, gentoo-box-2, and so on:\033[0m

  $pdsh -w $(echo gentoo-box-`seq -s ",gentoo-box-" 4`) "date"

-----------

\033[1;31m--> Afficher la liste de l'ensemble des utilisateurs enregistrés du systeme\033[0m

  $awk 'BEGIN{FS=":"}{print $1}' < /etc/passwd

-----------

\033[1;31m--> Repérer le PID d'un processus\033[0m

  $ps ax | awk '/\/usr\/bin\/firefox/ { print $1 }'

-----------

  $realpath

\033[1;34m##############\033[0m
```

memoosgentoocontrib-1

```
#17/06/2011 v1

\033[0mhttp://www.gentoo.org/proj/fr/devrel/handbook/handbook.xml?part=2&chap=1

# Comment contribuer au projet gentoo

\033[1;31m--> Rechercher un ebuild\033[0m

  # Allez sur bugs.gentoo.org, choisissez query et sélectionnez Advanced Search.

  #Pour le produit, prenez Gentoo Linux et comme composant, ebuilds. Dans le champ réservé

  #à la recherche écrivez le nom de l'ebuild, puis comme statut, selectionnez \033[1;34mNEW\033[0m, \033[1;34mASSIGNED\033[0m,

  #\033[1;34mREOPENED\033[0m et \033[1;34mRESOLVED\033[0m (RESOLVED est important ici), puis envoyez la requête.

-----------

\033[1;31m--> Télécharger un ebuild :\033[0m

  $wget http://bugs.gentoo.org/attachment.cgi?id=166742 -O phatch-0.1.5.ebuild

-----------

\033[1;31m--> Usage de eix et de portage:\033[0m

  $eix -I overlay

  $eix -I --in-overlay OVERLAY

-----------

\033[1;31m--> Ajouter un overlay:\033[0m

 \033[1;34mLister les overlay\033[0m

  $layman -L

 \033[1;34mAjouter un overlay\033[0m

  $layman --add <name>

\033[1;31m--> Syncroniser un overlay:\033[0m

 \033[1;34mIndividually:\033[0m

  $layman --sync <name>

 \033[1;34mOr all added overlays:\033[0m

  $layman -S

\033[1;31m--> Supprimer un package d'un overlay:\033[0m

 \033[1;34mCheck what you have installed\033[0m

  $eix-sync

  $eix -I --in-overlay <OVERLAY_NAME>

 \033[1;34mSupprimer un package d'un overlay\033[0m

  $emerge -uDvN world

  $emerge --depclean world

  $emerge -Cav <PACKAGES_FROM_THE_OVERLAY>

  $eix-sync && eix -I --in-overlay <OVERLAY_NAME>

\033[1;31m--> Supprimer un overlay avec Layman (portage):\033[0m

 \033[1;34mFinally, remove the overlay:\033[0m

  $layman -d <OVERLAY_NAME>

 \033[1;34mCheck that no dependencies are broken.\033[0m

  $emerge -uDavN world

-----------

\033[1;31m--> Profile\033[0m

  $ls -FGg /etc/make.profile

-----------

\033[1;31m--> Changer de profile\033[0m

  $ln -snf /usr/portage/profiles/<nom du profil> /etc/make.profile

\033[1;34m##############\033[0m
```

memoosgentooupdate-1

```
#17/06/2011 v1

\033[1;31m--> Liste des commandes de mises à jour\033[0m

  $ido-backup

\033[1;31m--> Mettre à jour l'env (variables d'env)\033[0m

\033[1;34mCommande root uniquement\033[0m

  $env-update

\033[1;34mCommandes utilisateur\033[0m

  $source /etc/profile

  $source /etc/bash/bashrc && source ~/.bashrc

  $source ~/.bashrc

\033[1;34m##############\033[0m
```

memoossysadmin-3

(Ce n'est apparemment pas possible de détruire les données contenues dans la ram sans arrêter la machine, mais j'imagine que cela pourrait être utile pour des raisons de bugs ou de sécurité, autrement le noyau gère la mémoire vive de lui même.)

```
#11/07/2011 v3

\033[1;31m--> Le noyau :\033[0m

\033[1;34mAfficher les modules du noyau :\033[0m

  $find /lib/modules/<version du noyau>/ -type f -iname '*.o' -or -iname '*.ko'

\033[1;34mRechercher un module du noyau :\033[0m

  $find /lib/modules/<version du noyau>/ -iname "ip_conntrack_*"

-----------

\033[1;31m--> Afficher la configuration actuelle de netfilter :\033[0m

  $iptables -t filter -L --line-numbers -v

ou

  $netfilterconfig

-----------

\033[1;31m--> Configurer la vitesse du processeur :\033[0m

  $cpufreq-set --freq 1800MHz

-----------

\033[1;31m--> Forcer la vérification des disques :\033[0m

  $touch /forcefsck

  $shutdown -r -F now

-----------

\033[1;31m--> Memory :\033[0m

Un programme alloue de la mémoire par la fonction "malloc" et la libère

avec la fonction "free".

\033[1;34mDétruire les données de la mémoire virtuelle en la remplissant de zéros (non-recommandé):\033[0m

  $swapoff /dev/<partition de swap>

  $dd if=/dev/zero of=/dev/<partition de swap>

\033[1;34mCréation d'une signature de mémoire virtuelle\033[0m

  $mkswap /dev/<partition de swap>

\033[1;34mActivation de la partition de mémoire virtuelle\033[0m

  $swapon /dev/<partition de swap>

\033[1;34mAfficher des infos sur l'usage de la mémoire :\033[0m

  $free -m

\033[1;34mAfficher des infos sur l'usage de la swap :\033[0m

  $swapon -s

-----------

\033[1;31m--> Afficher la liste des pilotes installés :\033[0m

  $qlist -I -C x11-drivers/

-----------

\033[1;31m--> Configuration du clavier :\033[0m

  $setxkbmap <layout>

  $setxkbmap -model pc105 -layout fr -variant latin9,winkeys

  $gnome-keyboard-properties

-----------

\033[1;31m--> ARGYLL\033[0m

  $dispcal -v -q l -y c viewsonic-calib

  $targen -v -d3 -f250 viewsonic-calib

  $dispread -v -y c -k viewsonic-calib.cal viewsonic-calib

  $colprof -v -A "ViewSonic" -M "VP2250wb" -D "Aug 062009-2252" -q m -as viewsonic-calib

  $su -c "cp /home/ido/calib/viewsonic-calib.icc /etc/calib/"

  $xcalib /etc/calib/viewsonic-calib.icc

-----------

\033[1;31m--> Here's how to run date on four machines named gentoo-box-1, gentoo-box-2, and so on:\033[0m

  $pdsh -w $(echo gentoo-box-`seq -s ",gentoo-box-" 4`) "date"

-----------

\033[1;31m--> Ajouter un utilisateur au système\033[0m

  $useradd -m -G users,wheel,audio -s /bin/bash john

  $passwd john

-----------

\033[1;31m--> Afficher la liste de l'ensemble des utilisateurs enregistrés du systeme\033[0m

  $awk 'BEGIN{FS=":"}{print $1}' < /etc/passwd

-----------

\033[1;31m--> Repérer le PID d'un processus\033[0m

  $ps ax | awk '/\/usr\/bin\/firefox/ { print $1 }'

-----------

\033[1;31m--> Utilisation de Portage, Layman, etc... (gentoo)\033[0m

\033[1;34mvoir memogentoocontrib\033[0m 

-----------

\033[1;31m--> Je m'interroge sur les commandes suivantes:\033[0m

  $realpath

\033[1;34m##############\033[0m
```

memotext-1

```
#17/06/2011 v1

\033[1;31m### ACTION SUR DU TEXTE ###\033[0m

\033[1;31m--> Afficher un fichier de configuration sans les commentaires.\033[0m

  $egrep -v '^(#|$)'

-- ou --

  $awk '! (/^ *#/ || /^$/) { print $0 }' /etc/make.conf

----------

\033[1;31m--> Afficher les différences entre deux fichiers textes.\033[0m

  $cmp -b nom_fichier_1 nom_fichier_2 [décalage1] [décalage2]

----------

\033[1;31m--> Afficher les différences entre stdin et un fichier.\033[0m

  $cmp -b - nom_fichier [décalage1] [décalage2]

----------

\033[1;31m--> Séparer une ligne d'entrée en champs.\033[0m

  $echo un deux | awk '{print $1}'

  $awk '{print $1 $5 $6}' $nomfichier # Fonctionne sur chaque ligne du fichier

-----------

\033[1;31m--> Séparer une ligne (chaque ligne d'1 fichier) en champs et afficher

le champ $CHAMP ($1 ou $5, etc...).\033[0m

  $awk 'BEGIN{FS="$SEPARATEUR"}{print $CHAMP}' < $UN_FICHIER

exemple:

SEPARATEUR=:

CHAMP=$1

UN_FICHIER=/etc/passwd

-----------

\033[1;31m--> Convertir les majuscules en minuscule.\033[0m

echo "HELLO" | tr A-Z a-z

-----------

\033[1;31m--> Ajouter une ligne a un fichier\033[0m

ex :

  $echo "=x11-drivers/linuxwacom-0.8.3_p2" >> /etc/portage/package.keywords

-----------

\033[1;31m--> Rechercher une chaine de caractère dans les fichiers

du répertoire courant.\033[0m

  $grep -E -i 'on peut|permet' *

\033[1;34m##############\033[0m
```

Last edited by idodesuke on Mon Aug 22, 2011 4:03 pm; edited 2 times in total

----------

## idodesuke

tiens je suis en train de lire un truc sur les ipc

ça me saute aux yeux

http://fr.wikipedia.org/wiki/Communication_inter-processus

 *Quote:*   

> La mémoire (principale) d'un système peut aussi être utilisée pour des échanges de données. Suivant le type de processus, les outils utilisés ne sont pas les mêmes.
> 
>     * Dans le cas des processus « classiques », l'espace mémoire du processus n'est pas partagé. On utilise alors des mécanismes de mémoire partagée, comme les segments de mémoire partagée pour Unix.
> 
>     * Dans le cas des processus légers l'espace mémoire est partagé, la mémoire peut donc être utilisée directement.
> ...

 

 *Quote:*   

> Quelle que soit la méthode utilisée pour partager les données, ce type de communication pose le problème des sections critiques : le moment où les processus accédent aux données partagées. En effet si deux processus accédent « en même temps » à une ressource, il peut se produire différents cas :
> 
>     * les données ne sont plus cohérentes
> 
>     * un ou plusieurs des processus concernés "plantent"
> ...

 

----------

## idodesuke

 *Quote:*   

> Les signaux sont à l'origine destinés à tuer (terminer) un processus dans certaines conditions, par exemple le signal SIGSEGV tue un processus qui effectue un accès à une zone de mémoire qu'il n'a pas allouée. Les signaux peuvent cependant être déroutés vers d'autres fonctions. Le blocage d'un processus se fait alors en demandant l'attente de l'arrivée d'un signal et le déblocage consiste à envoyer un message au processus.

 

avant de faire une SIGKILL ça peut permettre de mieux cerner le problème

y'a d'autres à lire aussi

----------

