Webmaster / Développeur Web

Linux

Snippets
|

Linux


AngularJSPHPLinuxMySQLGitHubApache2Sublime TextWeb DesignCSSHTML5RéseauxPythonJavascriptOpen Source Data

ScrapySupervisordCrontabCurlPoeditFtpTelnetTailonFail2banPrerenderRedisSerposcopeGoAccessBrowser
Acces direct aux rubriques :

Système

Trouver la version de votre machine
lsb_release -sc
Trouver les procecuss zombie
ps aux | awk '"[Zz]" ~ $8 { printf("%s, PID = %d\n", $8, $2); }'

Fichiers

Vider un fichier
cat /dev/null > myfile.txt
Recherche texte dans les fichiers d'un répertoire :
find /arborescence -type f -exec grep -H 'chaine' {} \;
Recherche du nom d'un fichier :
find /home/hugo/ -name *.mo
Afficher le poids des répertoires du répertoire courant
du -sh *
Trouver les 10 plus gros fichiers et répertoires sur le système
sudo du -a / | sort -n -r | head -n 10
Trouver les fichiers
find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
Trouver les fichiers et répertoire dont le poids est compris entre 10 et 12Mo
find / -size +10M -size -12M -ls
Trouver les fichiers de plus de 50Mo
find / -type f -size +50M -exec du -h {} \; | sort -n
Rechercher les fichiers de plus de 100Mo
find / -xdev -type f -size +100M
Supprimer beaucoup de fichiers (erreur rm -R : argument list too long)
find . -maxdepth 1 -name "*.svg" -print0 | xargs -0 rm
Remplacer les espaces dans les noms de fichier :
rename 's/\s+/_/g' *
Trouver un processus actif :
ps -ef | grep NOM_DU_PROCESSUS
Trouver processus zombie
ps aux | grep 'Z'
	pstree -p -s ZOMBIE_PID
Rechercher dans les logs
sed 's^\[.*\]^^g' error.log | sed 's^\, referer: [^\n]*^^g' | sort | uniq -c | sort -n
	sed 's^\[.*\]^^g' error_log | sort | uniq -c > error_log-unique
encode/decode base64
echo -n 'hugo:boss' | base64
	echo YWRtaW46cGFzc3dvcmQ= | base64 -d
Display directory files and directories size
du -sh *
Générer la documentation php :
phpdoc run -d /var/www/wine-trip.git/ -t /var/www/wine-trip.git/doc/

SSH

SSH (doc complète)
ssh user@XXX.XXX.XXX.XXX
Transfert fichier via SSH
scp /home/me/phantomjs-1.9.7-linux-i686.tar.bz2
	hugo@XXX.XXX.XXX.XXX:/var/www/api
Trandfert répertoire via SSH (ajouter un . pour copier les fichiers cachés)
scp -r /var/www/app/. hugo@XXX.XXX.XXX.XXX:/var/www/app
Meilleure solution, utiliser rsync
rsync -avz /chemin user@newsystem:/home/user/
Vérifier l'existence de clé SSH Lister les fichiers du répertoire .ssh de votre utilisateur
ls -al ~/.ssh
Créer une nouvelle paire de clés publique/privée, en utilisant votre email.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Démarrer ssh-agent en arrière plan
eval "$(ssh-agent -s)"
Ajouter votre clé SSH à ssh-agent. Si vous utilisiez une clé existante plutôt que d'en génerer une nouvelle, vous devez remplacer id_rsa dans la commande avec le nom de votre privée existante.
ssh-add ~/.ssh/id_rsa
Ajouter la clé SSH à votre compte GitHub.

Video

Redimensionner une vidéo
sudo apt-get install libav-tools
	avconv -i input.mp4 -s 640x480 output.mp4
Changer l'encodage
ffmpeg -i movie.mov -f mp4 -vcodec copy -acodec copy output.mp4
Redimensionner une vidéo
ffmpeg -i output.mp4 -vf scale=480:270 output2.mp4
Pour utiliser le tag HTML5 video au mieux, il faut proposer 3 formats:
OGG/Theora
ffmpeg -i input.mov -acodec libvorbis -ac 2 -ab 96k -ar 44100 -b 345k -s 640x360 output.ogv
WebM/vp8
ffmpeg -i input.mov -acodec libvorbis -ac 2 -ab 96k -ar 44100 -b 345k -s 640x360 output.webm
MP4/h264
ffmpeg -i input.mov -acodec libfaac -ab 96k -vcodec libx264 -vpre slower -vpre main -level 21 -refs 2 -b 345k -bt 345k -threads 0 -s 640x360 output.mp4

Compression

Compresser
tar -zcvf my-archive.tar.gz /path/to/my-directory
Décompresser
tar -zxvf my-archive.tar.gz

Packages

Mettre à jour la liste des paquets disponibles
sudo apt-get update
Mettre à jour les packages déjà installés
sudo apt-get upgrade
Installer les nouveaux paquets
sudo apt-get dist-upgrade
Ajouter un dépôt (repository) qui n'est pas officel
sudo add-apt-repository ppa:vendor/package
Supprimer un dépôt
sudo add-apt-repository ppa:vendor/package --remove
Lister les packages installés sur le système
dpkg -l
Vérifier si un paquet (ex : php5-sqlite) est installé :
dpkg -l | grep packagename
Obtenir le statut d'un paquet
dpkg-query -W -f='${Status} ${Version}\n' packagename
Vérifier si un paquet peut être installé
apt-cache search packagename
Installer un paquet :
sudo apt-get install packagename
Mettre à jour un UNIQUE paquet

	sudo apt-get install --only-upgrade 
Redémarrer le server
sudo reboot
	sudo shutdown -h now
Sauvegarder la liste des paquets installés
dpkg --get-selections > backup_installed_packages.txt
Restaurer la liste des paquets installés
dpkg --set-selections < backup_installed_packages.txt
Si des erreurs surviennent
aptitude install dselect
	dselect
	dpkg --set-selections < backup_installed_packages.txt
	
puis
apt-get dselect-upgrade

Utilisateurs

Create user
adduser toto
Give user sudo privileges
gpasswd -a toto sudo
Create group
groupadd titi
Add user to group
usermod -a -G titi toto

Réseau

Faire une requête CURL derrière un proxy
curl -x http://PROXY_IP:PROXY_PORT --proxy-user PROXY_USER:PROXY_PASSWORD -L http://www.website.com
Voir tous les ports ouverts
netstat -ntlp | grep LISTEN
?
netstat - anp
?
netstat -tulpen
Firewall ufw (uncomplicated firewall) Voir l'état du firewall
sudo ufw status verbose
Ouvrir un port
sudo ufw allow 80/tcp
	sudo ufw show added
	sudo ufw enable
	
Régle d'exclusion fail2ban pour ufw
sudo ufw insert 1 deny from [ip address]
	sudo ufw delete allow from [ip address]
Intérroger le fichier de zone avec mxlookup
nslookup -type=mx port25.com
Server:		127.0.1.1
	Address:	127.0.1.1#53

	Non-authoritative answer:
	port25.com	mail exchanger = 50 ALT4.ASPMX.L.GOOGLE.com.
	port25.com	mail exchanger = 50 ALT3.ASPMX.L.GOOGLE.com.
	port25.com	mail exchanger = 10 ASPMX.L.GOOGLE.com.
	port25.com	mail exchanger = 30 ALT1.ASPMX.L.GOOGLE.com.
	port25.com	mail exchanger = 30 ALT2.ASPMX.L.GOOGLE.com.

	Authoritative answers can be found from:
	port25.com	nameserver = ns1.p10.dynect.net.
	port25.com	nameserver = ns3.p10.dynect.net.
	port25.com	nameserver = ns2.p10.dynect.net.
	port25.com	nameserver = ns4.p10.dynect.net.

Time

Afficher la date
date
Voir la timezone
cat /etc/timezone
Formater la date
date +'%:z %Z'
?
find /usr/share/zoneinfo/ -type f| xargs md5sum | grep $(md5sum /etc/localtime | cut -d' ' -f1)
Modifier la timezone
sudo dpkg-reconfigure tzdata

Serveur

Générer une clé de cryptage (clé publique + clé privée)
ssh-keygen
Copier sa clé ssh locale pour pouvoir se connecter sans taper son mot de passe à chaque fois
cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
ou en utilisant la commande ssh-copy-id
ssh-copy-id user@remote_host
Supprimer un hôte du fichier known_host (quand son adresse IP a changé par exemple)
ssh-keygen -R hostname
Démarrer ssh-agent (pour l'utilisateur www-data)
sudo -u www-data ssh-agent sh -c 'ssh-add && echo Do some stuff here.'

Libérer de l'espace disque

Trouver la taille du cache APT
du -sh /var/cache/apt/archives
Vider le cache APT
sudo apt-get clean
Supprimer les anciens kernels qui ne sont plus nécessaires
sudo apt-get autoremove --purge
Supprimer les paquets et dépendances qui ne sont plus nécessaires
sudo apt-get autoremove
Vide le répertoire /var/cache/apt/archives qui contient les paquets téléchargés
sudo apt-get autoclean
Utilisez la commande dpkg-query pour trouver et supprimer les paquets les plus volumineux dont vous ne vous serez pas.
dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'
Supprimer les kernels inutilisés 1. Quel kernel est utilisé actuellement ?
uname -r
2. Quels sont les kernels installés sur ma machine ?
dpkg --list | grep linux-image
3. Supprimer les kernels qui ont une version inférieure au kernel actuel
sudo apt-get purge linux-image-x.x.x.x-generic

Made in

Narbonne

. © 2016