Commandes utiles * NIX Shell pour les développeurs Web

Alors, pourquoi * NIX et pourquoi faut-il aller à la console??

Selon les statistiques de W3Techs, Unix est utilisé par 68% des sites Web dont ils connaissent le système d'exploitation. Cela signifie que si vous êtes développeur Web, votre code est probablement exécuté sur un serveur Linux. Et au moins, vous devez savoir comment configurer et déboguer votre code sur les systèmes Unix et Linux. Découvrons ce que vous devez savoir pour vous sentir à l'aise dans la ligne de commande..

Les bases

La commande de base * NIX comprend trois composants:

  • commander ou programme à courir
  • options pour modifier ou spécifier le comportement de la commande
  • arguments ou les données d'entrée nécessaires à l'exécution de la commande   

Par exemple, si vous devez obtenir une liste de fichiers dans le répertoire / var / www, vous devez exécuter la commande ls avec l'argument / var / www. Pour ajouter la taille des fichiers à la sortie, vous devez ajouter le -s option, et la commande finale ressemblera à ceci:

ls -s / var / www

Redirections et pipelines d'E / S

De nombreuses commandes * NIX utilisent la saisie et la sortie de texte avec lesquelles vous pouvez travailler. La grande particularité de cette commande est que vous pouvez envoyer les résultats de la commande à un fichier en utilisant la redirection, ou même transmettre la sortie d'une commande à l'entrée de une autre commande utilisant les pipelines. Par exemple, nous pouvons exporter la commande de l'exemple précédent dans un fichier:

ls -s / var / www> /var/www/files.txt

Cette commande va créer ou effacer le fichier /var/www/files.txt et sortir une liste de fichiers dans le / var / www annuaire. Voici une liste de redirections et de pipelines d'E / S standard:

  • > Rediriger la sortie d'une commande vers un fichier sur le disque. Le fichier sera effacé et écrasé.
  • >> La même redirection, mais en ajoutant le fichier de sortie.
  • < Obtenir une entrée pour commander à partir d'un fichier.
  • | Passer la sortie d'une commande à l'entrée d'une autre commande.
  • tee Les deux redirigent la sortie vers un fichier et le transmettent à la commande suivante du pipeline..

Les commandes principales

Pour obtenir des pages de manuel pour une commande, exécutez homme. Les pages de manuel suivent une présentation commune et peuvent inclure un nom, un résumé, une description et des exemples d'utilisation. Ceci affichera la documentation pour le chmod commander:

homme chmod

Pour exécuter des commandes telles que la sauvegarde de configurations ou le redémarrage de processus, vous devez les exécuter en tant que super utilisateur. Pour ce faire, vous devez prévoir sudo à votre commande:

utilisateur @ serveur: / var / www $ chmod 777 log chmod: modification des autorisations de 'log': opération non autorisée utilisateur @ serveur: / var / www $ sudo chmod 777 log sudo chmod 777 log

Si vous devez exécuter plusieurs commandes en tant que super utilisateur, vous pouvez utiliser su, ou changer de commande utilisateur.

utilisateur @ serveur: / var / www $ su Mot de passe: racine @ serveur: / var / www #

Remarque: Pour enregistrer la couche de sécurité et éviter l’exécution accidentelle de commandes indésirables, n’utilisez pas sudo et su sans but.

Dans le monde réel

Navigation de base

Il existe trois commandes principales pour naviguer dans l’arborescence de fichiers:

  • pwd imprimer le nom du répertoire de travail en cours
  • CD changer de répertoire
  • ls pour lister le contenu du répertoire

Voici un exemple d'utilisation de ces commandes avec la sortie du terminal:

utilisateur @ serveur: ~ $ pwd / accueil / utilisateur utilisateur @ serveur: ~ $ cd / var / www utilisateur @ serveur: / var / www $ ls -alF total 16 drwxr-xr-x 5 racine racine 4096 22 janvier Jan 09:45 ./ drwxr-xr-x 14 racine 4096 22 janvier 09: 38… / drwxr-xr-x 2 racine racine 4096 22 janvier 09h45 html / drwxr-xr-x 3 racine racine 4096 22 janvier 09 09h45 journal / drwxrwxrwx 1 utilisateur utilisateur 442 24 mars 12:22 testing /

Recherche de fichiers

Il y a le trouver commande pour rechercher des fichiers dans une hiérarchie de répertoires. Cette commande est très puissante et permet de rechercher des fichiers et des répertoires par nom, autorisations d'accès, date et taille..

Trouvez tous les répertoires avec le nom "logs" dans le répertoire / var / www répertoire en utilisant le -type option:

recherche les journaux / var / www -type d-name

Pour rechercher des fichiers PHP dans le répertoire actuel, ajoutez le -prénom option:

trouver . -type f -name "* .php"

Rechercher des fichiers avec des autorisations définies à l’aide de la touche -permanente option:

trouver . -type f -perm 0777 -print

Recherchez tous les fichiers dont la taille est supérieure à 500 Mo:

trouver / -size + 500M

Bien sûr, vous pouvez combiner toutes ces options en une seule commande, et ce ne sont que les bases de la trouver commande, qui est un outil très puissant pour la recherche de fichiers. Utilisez les pages de manuel pour obtenir plus d'informations.

Manipulation de fichiers et de dossiers

Il existe cinq commandes principales pour manipuler des fichiers et des dossiers dans le système * NIX:

  • toucher est utilisé pour changer les horodatages des fichiers et des répertoires existants, mais c'est aussi le moyen le plus simple de créer un nouveau fichier
  • mkdir faire des annuaires
  • cp copier des fichiers et des répertoires
  • mv déplacer ou renommer des fichiers et des répertoires
  • rm supprimer des fichiers et des dossiers

L'exemple suivant va créer un fichier index.html, copier ce fichier dans le nouveau répertoire dans / var / www, et supprimez le fichier source.

root @ localserver: ~ # touch index.html root @ localserver: ~ # mkdir / var / www / newdir racine @ localserver: ~ # cp index.html / var / www / newdir / racine @ localserver: ~ # rm index.html

Une autre grande commande est dans, qui est conçu pour faire des liens entre les fichiers. La commande dans est souvent utilisé pour créer un lien symbolique permettant d'activer un hôte virtuel:

sudo ln -s /etc/apache2/sites-available/newvirtualhost.com.conf / etc / apache / sites-enabled / newvirtualhost.com.conf

Modifier les autorisations d'accès

Pour changer le propriétaire et le groupe du fichier, utilisez chown. N'oubliez pas de donner la propriété à l'utilisateur apache lorsque vous créez un nouvel hôte virtuel de votre application Web:

sudo chown -R www-data: www-data /var/www/newvirtualhost.com

Parfois, les répertoires de cache ou de journal de votre application doivent être accessibles en écriture pour tous les utilisateurs. Vous devez donc modifier les modes d'accès en 777 avec le paramètre suivant. chmod commander. Ajouter le -R option pour ajouter l'autorisation à tous les fichiers et dossiers imbriqués.

sudo chmod -R 777 / var / www / private / cache

Si vous voulez juste créer un fichier exécutable, utilisez chmod avec le +X option.

sudo chmod + x /var/www/private/backup.sh

Lecture de fichier

Pour afficher les fichiers dans la console, vous pouvez utiliser le chat commander. Avec chat, vous pouvez concaténer le contenu des fichiers en utilisant des paramètres supplémentaires, et vous pouvez également utiliser un masque dans les noms de fichiers.

cat /etc/apache2/apache2.conf cat /etc/apache2/apache2.conf /etc/apache2/ports.conf cat / etc / apache2 / mods-enabled / *

Mais le chat Cette commande vous rendra très vite confus, car elle affiche la sortie au format brut sans pagination - il est donc peu pratique de l’utiliser avec la sortie du journal. Pour obtenir un filtre de recherche de texte, écran par écran, vous devez utiliser le plus ou Moins commandes, qui sont beaucoup d'une grande quantité.

less /etc/apache2/apache2.conf cat / etc / apache2 / mods-enabled / * | Moins

Une autre commande utile est queue, qui est créé pour sortir la dernière partie des fichiers. Cette commande est parfaite pour parcourir l'historique des journaux. Par défaut, cette commande tail imprime les 10 dernières lignes. Vous pouvez modifier ce nombre à l’aide des touches -n paramètre.

tail /var/log/apache2/error.log tail -n 25 /var/log/apache2/error.log

Mais si vous avez, par exemple, un groupe de fichiers journaux, vous avez besoin de quelque chose de plus puissant pour effectuer une recherche appropriée. Quelque chose comme grep-un programme qui lit à partir d'une entrée standard, teste chaque ligne par rapport à un modèle et écrit dans une sortie standard les lignes correspondant à ce modèle. En l'utilisant en combinaison avec chat et les pipelines, vous obtiendrez ce que vous voulez.

Si vous voulez filtrer les lignes de texte de la sortie, vous pouvez utiliser le grep commander:

grep remarque /var/log/apache2/error.log cat /var/log/apache2/*.log | grep "fermeture"

Comme vous pouvez le voir, grep est bon pour l'utilisation dans les pipelines. Dans cet exemple, la dernière commande affichera toutes les lignes contenant la chaîne «shutdown down» à partir de fichiers journaux..

Edition de fichier

Si vous souhaitez modifier des fichiers texte en mode console, vous pouvez utiliser l'un des trois éditeurs de texte les plus populaires:

  • GNU nano, un petit éditeur de texte convivial par défaut, idéal pour les tâches de base
  • Vim, un éditeur de texte amélioré pour les programmeurs, très puissant, mais complexe pour les débutants
  • medit, un éditeur fenêtré complet de Midnight Commander, facile à utiliser mais non installé par défaut sur les systèmes * NIX

Comparez-les et faites votre choix:

nano /var/log/apache2/error.log vim /var/log/apache2/error.log mcedit /var/log/apache2/error.log

Archivage

Parfois, vous devez sauvegarder ou compresser des données sur votre serveur..

Les utilitaires d'archivage les plus courants sont le goudron et Zip *: français. Notez que le Zip *: français commande peut ne pas être installée sur votre serveur par défaut.

Vous pouvez créer une archive avec les commandes suivantes:

tar -zcvf nom-archive.tar.gz nom-répertoire ou nom de fichier tar -jcvf nom-archive.tbz2 nom-répertoire ou fichier zip nom-archive.zip nom-répertoire ou fichier

Si vous voulez seulement voir une liste de fichiers dans les archives, vous pouvez utiliser le -l option pour les deux le goudron et décompresser:

tar -ztvf nom_archive.tar.gz tar -jtvf nom_archive.tbz2 unzip -l nom_archive.zip

Ou extraire des fichiers sources:

tar -zxvf nom-archive.tar.gz tar -jxvf nom-archive.tbz2 zip nom_archive.zip

Planifier des tâches

Si vous souhaitez planifier l'exécution périodique de vos scripts, vous devez utiliser l'utilitaire Cron, piloté par un fichier de configuration cron table, qui spécifie les commandes shell à exécuter périodiquement selon une planification donnée. Et la commande pour maintenir les tables cron est crontab.

Appel de crontab avec option -l montrera votre table cron.

Également -vous Une option est fournie pour spécifier le nom de l'utilisateur dont la crontab est utilisée. Si vous allez exécuter des tâches de votre application Web, il est préférable de modifier crontab pour l'utilisateur www-data..

utilisateur @ serveur: ~ $ sudo crontab -lu www-data # mh commande mon dow * / 5 * * * * php5 / var / www / yii do / tasks >> /var/www/tasks.log 00 15 * * 1-5 /var/www/backuper.sh

Dans cette sortie, vous pouvez regarder un exemple de table cron. Comme vous pouvez le constater, chaque ligne est programmée par minute, heure, jour du mois, mois et jour de la semaine. Chaque champ peut être un astérisque, ce qui signifie chaque valeur du champ. Vous pouvez également utiliser des ensembles et des plages en utilisant des virgules et des traits d'union. Suivre une plage avec une barre oblique spécifie les sauts de la valeur du nombre à travers la plage. Dans cet exemple, la première commande sera exécutée toutes les cinq minutes et la deuxième du lundi au vendredi à 15 heures..

Pour éditer cette liste, lancez crontab avec le -e clé au lieu de -l. La liste cron sera ouverte dans votre éditeur par défaut. Utilisez le -r option pour effacer la liste de cron.

Suivi de la performance

Commander Haut affiche les informations de synthèse du système et fournit une vue dynamique en temps réel des processus système en cours d'exécution. presse Maj-M trier les processus en fonction de l'utilisation de la mémoire, ou Shift-P trier par utilisation du processeur.

top - 21:33:02 jusqu'à 308 jours, 21:24, 1 utilisateur, charge moyenne: 0.00, 0.01, 0.05 Tâches: 87 au total, 1 en cours d'exécution, 86 en sommeil, 0 arrêtée, 0 zombi% du Cpu (s): 0.3 us , 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 501800 total, 471348 utilisé, 30452 gratuit, 49672 tampons KiB Swap: 4194300 total, 56192 utilisé, 4138108 gratuit. 149488 Mémoire PID mémorisée PID UTILISATEUR NI NI VIRT RES SHR S% CPU% MEM TEMPS + COMMAND 16269 www-data 20 0 348592 38884 12044 S 0.0 7,7 0: 02,42 php5 26533 www-data 20 0 409516 38488 24312 S 0,0 7,7 1: 00,04 php5- fpm 1076 mysql 20 0 887824 32748 1616 S 0.0 6,5 276: 46,59 mysqld 862 syslog 20 0 256612 31428 368 S 0,0 6,3 32: 45,88 rsyslogd 18901 root 20 0 105632 4316 3248 S 0.0 0 0 0 0 00 00 ssd 25 035356 4312 1564 S 0.0 0.9 4: 46.92 nginx 27846 memcache 20 0 328464 3828 252 S 0.0 0.8 1: 04.30 memcached 

Pour afficher la quantité de mémoire libre et utilisée dans le système, utilisez la commande libre commander. Ajouter le -h possibilité d'afficher les champs de sortie dans un format lisible par l'homme.

utilisateur @ serveur: ~ $ total -h total utilisé tampons partagés gratuits disponibles Mem: 490M 453M 36M 23M 46M 140M - / + tampons / cache: 265M 224M Permutation: 4.0G 54M 3.9G

Une autre commande utile est df, qui est une commande pour signaler l'utilisation de l'espace disque du système de fichiers. Vous pouvez l'appeler avec le -une possibilité d'afficher tous les systèmes de fichiers de votre serveur. De plus, n'oubliez pas d'ajouter le -h option pour le format lisible par l'homme.

utilisateur @ serveur: ~ $ df -ah Taille du système de fichiers utilisée Utilisée Utilisation% Monté sur / dev / vda1 20G 6.3G 13G 34% / udev 235M 4.0K 235M 1% / dev tmpfs 50M 344K 49M 1% / run

Historique de ligne de commande

Vous pouvez utiliser le !! commande pour répéter la commande précédente, ou utilisez sudo !! si vous avez oublié de lancer une commande avec sudo.

utilisateur @ serveur: / var / www $ chmod 777 journal chmod: modification des autorisations de 'journal': opération non autorisée utilisateur @ serveur: / var / www $ sudo !! journal sudo chmod 777

Si vous avez oublié la syntaxe des commandes ou si vous ne vous sentez pas en mesure de saisir une requête de commande volumineuse, vous pouvez utiliser l'histoire pour afficher l'historique de vos commandes. Il est bon de combiner cette commande avec des commandes de filtrage de chaînes telles que grep, queue et d'autres pour trouver exactement ce que vous voulez.

histoire | histoire de queue | l'histoire de grep crontab | egrep -i 'ssh | ftp'

Conclusion

Utiliser la console n’est pas sorcier. Les systèmes Unix et Linux sont faciles à comprendre et à utiliser en raison de leur conception simple et de leur bonne documentation. J'espère que cet article vous familiarisera avec la ligne de commande et vous amènera au niveau supérieur de gestion de vos applications Web avec la ligne de commande..

Si vous avez des questions ou si vous souhaitez partager vos commandes de console préférées, n'hésitez pas à laisser un commentaire sous l'article..

Lectures complémentaires

  • Répertoire des commandes Linux
  • Guide Bash pour les débutants
  • Utiliser le terminal
  • Comment apprendre rapidement les commandes de terminal?
  • La ligne de commande est votre meilleur ami