112 votes

Meilleures pratiques et astuces pour la ligne de commande Linux ?

J'aimerais ouvrir une discussion qui permettrait d'accumuler vos meilleures pratiques et astuces en matière de ligne de commande Linux (CLI).

J'ai cherché une telle discussion pour partager le commentaire ci-dessous mais je n'en ai pas trouvé, d'où ce post.

J'espère que nous pourrons tous en tirer des leçons.

Vous êtes invités à partager vos astuces Bash, grep, sed, AWK, /proc et toutes les autres pratiques d'administration système Linux/Unix, Shell et de programmation pour le bénéfice de tous.

111voto

Utilisez écran , un multiplexeur de terminal libre développé par le projet GNU qui vous permettra d'avoir plusieurs terminaux en un.

Vous pouvez démarrer une session et vos terminaux seront sauvegardés même en cas de perte de connexion, de sorte que vous pourrez reprendre plus tard ou depuis chez vous.

101voto

Bill K Points 1189

SSH !
SSH est la commande divine - je pense que c'est la commande générale la plus utile à apprendre. Les options peuvent être assez décourageantes, mais il semble que j'apprenne constamment à utiliser de nouvelles options de ligne de commande pour SSH que je n'aurais jamais cru nécessaires. Je les ai peut-être toutes utilisées à ce stade.

Plus vous l'utilisez, plus vous en apprenez sur lui. Vous pouvez l'utiliser pour faire des choses extraordinaires.

Remarque : TOUTES ces opérations peuvent être effectuées à distance sans aucune installation sur votre serveur, à l'exception de l'exécution du serveur ssh.

Monter un système de fichiers sur Internet

recherchez le SSHFS sur Internet

Commandes en avant .

Le protocole SVN+SSH est Subversion d'un client distant vers un serveur sur lequel ne tourne PAS DEAMON ! La commande SVN démarre le serveur à travers le ssh Shell et passe l'info dans les deux sens à travers le pipe existant. Le programme rsync fait la même chose, fonctionne contre un serveur sans rsync deamon en en démarrant un lui-même via SSH. Il est facile d'écrire vos propres fichiers bash pour faire des trucs similaires.

Chaîne pour passer à travers les pare-feu

Je l'utilise tout le temps pour passer de mon serveur linux à la maison à mon mac.

Ports de transfert :
Cela ne semble que modérément utile jusqu'à ce que vous réalisiez que vous pouvez passer à travers le pare-feu de votre maison et configurer votre routeur à la maison depuis le travail comme si vous le faisiez depuis votre réseau domestique).

Transférer les demandes X :

C'est une autre incroyable. Avec ou sans serveur X sur votre système distant, vous pouvez exécuter un programme x-Windows et la fenêtre apparaîtra sur votre écran local. Il suffit d'utiliser le commutateur -X, c'est tout !

Puisque vous n'avez pas besoin de faire tourner un serveur X sur votre serveur distant, l'impact du CPU sur votre serveur est minime, vous pouvez avoir un PETIT serveur Linux qui sert d'énormes applications à votre puissant PC de jeu fonctionnant sous Windows et cygwin/X.

Bien sûr, VI et EMACS fonctionnent via SSH, mais lorsque je travaille à la maison, je veux parfois plus. J'utilise ssh -X pour démarrer une copie d'Eclipse ! Si votre serveur est plus puissant que votre ordinateur portable, vous avez l'interface graphique sur votre ordinateur portable, mais les compilations sont effectuées sur votre serveur, donc ne vous inquiétez pas de la charge du système.

Exécution dans des fichiers batch

(c'est-à-dire exécuter un fichier batch local qui "fait des trucs" sur d'autres systèmes) :

Deux choses se combinent pour rendre celui-ci cool. La première est que vous pouvez éliminer les invites de mot de passe en utilisant des clés de cryptage (plus sûres). La seconde est que vous pouvez spécifier une commande sur le CLI SSH. J'ai utilisé cette fonction de manière intéressante, par exemple lorsqu'une compilation échoue sur le serveur distant, j'ai demandé au serveur de se connecter à mon ordinateur et de jouer un fichier son.)

N'oubliez pas que vous pouvez rediriger la sortie de la commande distante et l'utiliser dans votre fichier batch local, de sorte que vous pouvez également suivre localement une compilation en cours sur votre serveur.

Intégré au Mac

Le serveur et le client sont tous deux intégrés dans Mac et Linux. Dans le cas du Mac et d'Ubuntu, activer un serveur est aussi simple que de trouver la bonne case à cocher.

Sur un PC, installez cygwin ou cygwin/X (cygwin/X vous permettra de transférer la sortie x-window de votre machine Linux vers votre PC Windows - il installe un serveur X).

Conseils importants/fichier de configuration

N'utilisez jamais le port 22 sur votre pare-feu. Vous recevrez de nombreuses tentatives de piratage et cela n'en vaut pas la peine. Faites simplement en sorte que votre pare-feu transfère un autre port à votre serveur.

Il existe de nombreuses options de configuration qui vous permettent de simplifier considérablement vos commandes ssh. Voici un exemple de la mienne au travail :

Host home
    hostname billshome.hopto.org
    Port=12345
    user=bill
    LocalForward=localhost:1025 mac:22

Lorsque je tape "ssh home" (rien d'autre), il agit comme si j'avais tapé :

ssh -p 12345 bill@billshome.hopto.org

et fait ensuite suivre mon port local 1025 à mon système "mac" à la maison. La raison en est que j'ai une autre entrée dans mon fichier :

Host mac
    hostname localhost
    port=1025

de sorte qu'une fois que j'ai effectué un "ssh home" et que la fenêtre est toujours ouverte, je peux taper "ssh mac" et l'ordinateur du bureau essaiera de se connecter à son propre port 1025 qui a été transféré à "mac:22" par l'autre commande, de sorte qu'il se connectera à mon Mac à la maison à travers le pare-feu.

Edit--cool script !

J'ai déterré un vieux script que j'adore - je devais revenir et le poster pour tous ceux qui pourraient être intéressés. Le script s'appelle "authMe".

#!/bin/bash
if [ ! -f ~/.ssh/id_dsa.pub ]
then
    echo 'id_dsa.pub does not exist, creating'
    ssh-keygen -tdsa
fi
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub

Si vous avez ce script dans votre répertoire personnel et qu'il y a un hôte auquel vous pouvez vous connecter (via ssh), alors vous pouvez taper "./authMe hostName".

Si nécessaire, il créera une paire de clés publique/privée pour vous, puis il se connectera à l'autre machine et copiera votre clé publique (la commande ssh vous demandera un mot de passe...).

Après cela, la commande SSH ne devrait plus demander votre mot de passe lors de la connexion à ce système distant, elle utilisera la paire de clés publique/privée.

Si votre ordinateur distant n'est pas toujours sécurisé, vous devriez envisager de définir une "phrase de passe" lorsque vous y êtes invité.

Vous pouvez également configurer le serveur ssh de l'extrémité distante pour qu'il n'autorise pas les mots de passe texte (uniquement les clés) pour une sécurité supplémentaire.

73voto

diyism Points 111

J'aime utiliser

cd -

pour passer au répertoire précédent. Très utile !

69voto

Craig Points 2871

J'ai récemment découvert le pv (pipe viewer) qui est comme cat mais avec des détails de transfert.

Ainsi, au lieu de

$ gzip -c access.log > access.log.gz

Vous pouvez utiliser

$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=>      ] 15% ETA 0:00:59

Ainsi, au lieu de ne pas savoir quand votre opération se terminera, vous le saurez désormais !

Avec l'aimable autorisation de Peteris Krumins

53voto

kinokijuf Points 384
sudo !!

Ré-exécutez la commande précédente en tant que root.

[La commande principale actuelle sur le site http://www.commandlinefu.com un site dont le thème s'inspire de cette question].

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X