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..
La commande de base * NIX comprend trois composants:
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
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..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.
Il existe trois commandes principales pour naviguer dans l’arborescence de fichiers:
pwd
imprimer le nom du répertoire de travail en coursCD
changer de répertoirels
pour lister le contenu du répertoireVoici 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 /
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.
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 fichiermkdir
faire des annuairescp
copier des fichiers et des répertoiresmv
déplacer ou renommer des fichiers et des répertoiresrm
supprimer des fichiers et des dossiersL'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
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
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..
Si vous souhaitez modifier des fichiers texte en mode console, vous pouvez utiliser l'un des trois éditeurs de texte les plus populaires:
Comparez-les et faites votre choix:
nano /var/log/apache2/error.log vim /var/log/apache2/error.log mcedit /var/log/apache2/error.log
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
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.
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
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'
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..