107 votes

Que doit savoir un utilisateur de longue date de Windows lorsqu'il commence à utiliser Linux ?

Nous avons enfin déplacé nos sites web vers un endroit décent. hôte et pour la première fois nous avons l'accès Shell.

Je sais très peu de choses sur l'utilisation de Linux, je peux naviguer dans le système de fichiers, lire les fichiers avec Vim et je suis conscient de la commande man, et j'ai été capable de trouver des solutions aux problèmes lorsqu'ils se présentent (éventuellement), mais je sais que j'ignore beaucoup de choses.

Edit : Nous n'utilisons actuellement l'hôte que pour héberger nos sites en direct, je suis sûr que nous pouvons l'utiliser plus efficacement, mais je ne sais pas par où commencer.

Donc avec le développement web en tête :

  • Quelles sont les commandes essentielles que tout utilisateur de Linux devrait connaître ?
  • Quelles sont les commandes les plus utiles que je devrais examiner ?

131voto

Justin Standard Points 15312

Si vous n'avez qu'un accès shell à votre hôte, un certain nombre de problèmes sont déjà réglés pour vous (vous n'avez pas à assurer vous-même la maintenance du système).

Les commandes utiles dépendent de ce que vous voulez principalement faire, comme interagir avec votre système de contrôle de source via la ligne de commande ( vous utilisez le contrôle de la source, n'est-ce pas ? ) Vous savez déjà comment utiliser vim et naviguer dans le système de fichiers en utilisant cd y ls C'est donc un bon début.

Commandes les plus utiles :

  • ls

    • liste les fichiers dans le répertoire courant (comme Windows dir )
  • cd

    • changer de répertoire
  • cp

    • copie de fichier(s)
    • exemple :

      $> cp {file1} {file2}
      $> cp /home/jms/file1.txt /home/jms/file1-copy.txt
  • mv

    • déplacer ou renommer un ou plusieurs fichiers

    • exemple - renommer fichier1.txt :

      $> mv {file1} {file2}
      $> mv /home/jms/file1.txt /home/jms/file_1_new_name.txt
    • exemple - déplacer fichier1.txt :

      $> mv /home/jms/file1.txt /home/jms/myfiles/file1.txt 
  • homme

    • voir les pages du manuel pour une commande
    • exemple :

      $> man woman
      $> Segmentation fault (core dumped)
  • trouver

    • recherche récursive dans les répertoires (et éventuellement exécution d'une action pour chaque correspondance)
  • grep

    • recherche de correspondances de motifs
  • wc

    • nombre de mots / nombre de caractères / nombre de lignes

    • exemple : compter les fichiers dans un répertoire courant (utilise ls et wc)

      $> ls | wc -l
    • exemple : compter les fichiers qui contiennent .txt dans votre répertoire personnel (utilise find, grep, et wc)

      $> find /home/jms | grep *.txt | wc -l
  • moins

    • visionneuse de fichiers légère
  • tête

    • voir les premières lignes d'un fichier
  • queue

    • voir les dernières lignes d'un fichier (utile pour la journalisation en temps réel)
    • exemple : surveiller un fichier journal au fur et à mesure que la journalisation se produit pendant l'exécution d'une application.

      $> tail -f /var/log/somelogfile.log
  • passwd

    • changer votre mot de passe

    • exemple : agira sur l'utilisateur actuel et demandera l'ancien/nouveau mot de passe

      $> passwd
    • exemple : va changer le mot de passe de l'utilisateur nommé someuser

      $> passwd someuser
  • ssh

    • un shell sécurisé pour se connecter à des systèmes distants
  • touchez

    • fixe l'heure de la "dernière modification" du fichier à maintenant (crée un nouveau fichier si aucun n'existe)
  • rm

    • supprimer un fichier
    • peut également supprimer des fichiers et des répertoires de manière récursive
  • mkdir / rmdir

    • créer ou supprimer un répertoire
  • df

    • vérifier l'espace disque libre sur les volumes
  • du

    • vérifier l'espace disque utilisé sur un répertoire (de manière récursive)
  • ln

    • créer un nouveau fichier/répertoire qui est un "lien" vers un autre (tel qu'un lien symbolique)
    • exemple (lien symbolique) : $> ln -s /path/to/destination
  • tuer

    • tuer/arrêter un processus en cours
  • chmod , chown

    • modifier les permissions / la propriété des fichiers.
  • sudo

    • exécuter une commande avec les privilèges de superutilisateur (c'est-à-dire "Root")
    • votre hébergeur peut ne pas vous donner la permission de le faire
  • vi

    • un éditeur de texte inclus dans chaque installation linux

Pour un certain nombre de ces éléments, il vous sera plus facile d'apprendre par l'expérimentation.

Un très guide complet des scripts bash pourrait également être utile.

42voto

Brendan Points 7674

Puisqu'il semble s'agir d'un hébergeur web, vous voudrez probablement savoir :

  • Comment démarrer/arrêter/redémarrer le serveur Web ? (Dépendant de la distribution et du serveur. Essayez /etc/init.d/apache restart pour redémarrer.)
  • Comment vérifier les journaux (Dépendant de la distribution et du serveur. Essayez less /var/www/apache.log )
  • Comment accéder directement à MySQL ( mysql -u myusername -p y mysqladmin )
  • Comment charger/télécharger des fichiers (Probablement en utilisant SFTP du côté client)
  • Comment modifier la configuration du serveur web (Probablement nano /etc/apache2/httpd.conf )
  • Comment vérifier/modifier les permissions et la propriété sous UNIX ? ( ls -l pour vérifier et chmod XXXX files y chown newowner.newgroup files à changer)

Tout ceci est basé sur des suppositions quant à l'emplacement des fichiers, etc. et suppose que vous utilisez Apache. Un peu de recherche est probablement nécessaire pour votre configuration particulière.

Une mention spéciale est accordée aux permissions. Elles sont à l'origine d'une grande partie des maux de tête liés à l'exécution des CGI et à la sécurité. Vous trouverez ci-dessous un guide approximatif des permissions à définir.

  • Fichiers PHP : lisibles par le serveur web ( chmod 640 filename.php )
  • Scripts CGI : exécutables par le serveur web ( chmod 750 filename.cgi )
  • Fichiers web statiques : lisibles par le serveur web ( chmod 640 filename.html )
  • Répertoires : exécutable par le serveur web ( chmod 750 directoryname )

Ces paramètres supposent que le processus du serveur web s'exécute en tant qu'utilisateur appartenant au même groupe que les fichiers du serveur web (c'est probablement la configuration sur un hôte géré).

Un dernier casse-tête qui peut causer des problèmes est que Linux est sensible à la casse. Lorsque vous servez des fichiers statiques à partir d'Apache, vous devrez inclure par défaut toute majuscule bizarre. Il est généralement préférable de s'en tenir aux minuscules et aux traits de soulignement/hyphènes pour nommer les répertoires et les fichiers.

14voto

Sam Merrell Points 1206

En tant qu'utilisateur relativement nouveau de Linux, il existe quelques commandes et outils sur lesquels j'ai appris à compter.

Trouvez - Je l'utilise tous les jours avec xargs . Find est très flexible et il est utile de commencer petit et de commencer à construire par dessus. En utilisant xargs et find, vous pouvez exécuter des commandes sur les fichiers que vous avez trouvés. Je l'utilise souvent pour compresser des fichiers que j'ai récemment modifiés ou pour rechercher des fichiers à l'aide de l'outil suivant que je vous suggère.

grep - J'utilise grep pour effectuer des recherches dans les fichiers journaux et le code principalement. Grep est un outil très puissant et peut être utilisé avec Expressions régulières pour une recherche très puissante. Grep est très puissant et assez facile à utiliser pour commencer. Une fois que vous êtes à l'aise avec lui, continuez à ajouter des recherches plus complexes/spécifiques pour vous aider à mieux utiliser Grep.

Cron - Cron est un service de planification puissant qui vous permet d'exécuter des commandes, des scripts, des programmes à des moments spécifiques, à des intervalles, etc. Cron est utilisé pour faire tourner les journaux, exécuter des sauvegardes, etc. Si vous voulez exécuter quelque chose régulièrement, apprenez à utiliser cron.

Un solide éditeur de texte - J'utilise Vim comme éditeur de texte, mais c'est plutôt une question de choix. Je vous suggère d'en essayer plusieurs, d'en trouver un que vous aimez le plus et de vous y tenir. Je trouve que c'est plus facile de sauter les éditeurs les plus simples et d'utiliser les plus puissants afin de pouvoir évoluer et apprendre les fonctionnalités plus avancées au fur et à mesure que vous vous améliorez.

Il est également utile d'apprendre quelques notions de base scripting shell et avoir une compréhension de base de votre distribution. système de fichiers .

11voto

Jerub Points 17488

Il existe de nombreuses réponses, mais aucune n'inclut l'outil incroyablement utile dont je ne peux tout simplement pas me passer :

strace

Je ne compte plus le nombre de fois où j'ai exécuté un programme qui s'est arrêté pour une raison obscure ou qui a donné un message d'erreur obscur, et où j'ai été capable de déterminer le problème immédiatement et de le résoudre.

Voici un exemple concret : on m'a demandé de découvrir pourquoi, après une mise à jour, php avait commencé à ignorer sa configuration sur le serveur web. Peu importe les paramètres mis dans le fichier de configuration, ils n'étaient pas respectés et le site web était en panne.

J'ai donc lancé 'php', je n'ai vu aucune erreur, j'ai vérifié qu'il regardait le bon fichier de configuration en utilisant 'phpinfo()', et j'ai décidé de "voir ce qu'il fait réellement".

$ strace -e open php 2>&1 | grep php.ini
open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = -1 EACCES (Permission denied)

En faisant un rapide ls -la, on résout le mystère :

$ ls -la /etc/php.ini
-rw------- 1 root root 44990 2008-05-09 00:26 /etc/php.ini

Le fichier php.ini n'était pas lisible par l'utilisateur du serveur web. Ses permissions avaient été modifiées lors de la mise à jour.

Je ne l'aurais jamais découvert sans utiliser strace .

7voto

Marie Fischer Points 611

Mc ( commandant de minuit ) est très utile - c'est un clone de Norton Commander en mode texte, utile pour obtenir une vue d'ensemble du système de fichiers, copier/déplacer des fichiers, il possède un visualiseur/éditeur de texte intégré qui est un peu plus convivial que vi et bien plus encore. Il n'est pas installé par défaut sur tous les systèmes, cependant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X