samedi 7 septembre 2013

Petit pense bête de commande linux

Voici un petit florilège de commande vraiment pratique lorsque l'on se retrouve en ligne de commande que j'ai repris du wiki de lutece.

permet de chercher dans l'historique de la ligne de commande. (Esc pour en sortir)

"Ctrl + r"

On peut avoir toutes les lignes avec

history | grep 'marecherche'


Tuer tous les processus Java :
killall java
 
Quels processus écoutent sur le port 8080 :
lsof -i :8080
 
Quels processus sont associés à tomcat :
ps aux | grep -i tomcat
 
Supprimer le processus 21456 :
kill -9 21456
 
Suivre ce qui se passe dans le fichier de log "catalina.out" :
tail -f logs/catalina.out
 
Programmer la sauvegarde automatique de la base Mysql dans le cron linux (contab -e)
* */2 * * * mysqldump -uroot -pmotdepasse mabase -rdump`date +%Y%m%d`.sql > sauvegarde.log

Suivre l'utilisation du serveur par les processus (les touches z et c permettent de changer le mode de visualisation) :
top
 
Autres :

pgrep -u$LOGINNAME mysqld
strace -p20687 -f -c -q

Commandes Linux utiles

Utilisateurs

Ajouter un utilisateur
$ sudo useradd -m nom_utilisateur -s /bin/bash
 
Ajouter un utilisateur sudoer
$ sudo useradd -m nom_utilisateur -s /bin/bash -G admin
 
Supprimer un utilisateur
$ sudo userdel nom_utilisateur

Puis supprimer le dossier de l'utilisateur qui est probablement dans /home
$ rm -rf /home/nom_utilisateur

Gestion des fichiers

Convertir une arborescence de noms de fichiers d'un encoding à un autre :
convmv -f iso-8859-15 -t UTF-8 -r --nosmart --notest .
 
Convertir une arborescence de contenus de fichiers d'un encoding à un autre :
$ find . -name *.html -type f | (while read file; do iconv -f UTF-8 -t ISO-8859-15 "$file" > "${file%.html}.htmlnew"; done)
$ find . -name "*.htmlnew" -type f | (while read file; do mv $file `echo $file | sed 's/\(.*\.\)htmlnew/\1html/'` ; done

Synchroniser un dossier avec rsync
$ rsync -avz -e ssh username@xxx.xxx.xxx.xxx:/home/username/folder/backup_srcp/mountmd2/srcp_prod/* .
 Cette commande synchronise le dossier courant avec le dossier distant /home/username/folder/backup_srcp/mountmd2/srcp_prod/ sur la machine xxx.xxx.xxx.xxx

Faire une recherche récursive d'un texte sur l'ensemble des fichiers du répertoire

$ grep -Ri le_texte_a_rechercher * 

Remplacer une chaîne de caractères récursivement dans un dossier :

$ find /some/dir -type f | xargs sed -i 's|chaine_a_trouver|chaine_a_remplacer|' 

Avec du REGEX :
$ grep -rlE "^regexhere$" /some/dir | xargs sed -i 's|string1|string2|'

Infos mémoire et espace disque

infos io
iostat > iostat.txt
 
infos memoire
$ cat /proc/meminfo > meminfo.txt
 $ vmstat > vmstat.txt
usage disque
$ df -h > df.txt
usage disque par dossier :
$ du -h
usage disque du dossier courant : du -sh * * vitesse du disque - pour celle-ci, remplacer sdxX par les disques réellement utilisés :
$ hdparm -tT /dev/sdxX > hd_sdxX.txt
activités systèmes
$ sar -A > sar.txt
info matériel
dmidecode > dmidecode.txt
Vérifier les ports d'écoutes :
$ netstat -l

Commandes VIM

Aller à la fin d'un fichier avec Vim :
MAJ + G
Aller au début d'un fichier avec Vim :
1 puis G
Aller à la ligne XXX d'un fichier avec Vim :
XXX puis G

MySQL

Lister les tables d'une base MySql :
mysql -uroot -pmotdepasse -Dlutece -e"show tables"
Sauvegarder une base de donnée du nom de "lutece" dans "dump.sql" :
mysqldump -uroot -pmotdepasse lutece -rdump.sql
Jouer le script "dump.sql" dans la base "lutece" :
mysql -uroot -pmotdepasse -Dlutece -e"source dump.sql"

Apache sur Ubuntu


Voir la liste des modules disponibles d'Apache :
$ ll /etc/apache2/mods-available

Ajouter un nouveau module Apache :
$ sudo a2enmod
$ sudo service apache2 restart 

Retirer un module Apache :
$ sudo a2dismod
$ sudo service apache2 restart 


Ajouter un site :
$ sudo a2ensite
$ sudo service apache2 restart