Recursos ocultos do Linux

64

Seguindo o espírito de Recursos ocultos do PowerShell e vários outros no Stack Overflow, quais comandos ou combinações de comandos do Linux você considera essenciais em seu trabalho?

Consulte também:
Recursos ocultos do MySQL
Recursos ocultos do PowerShell
Recursos ocultos do banco de dados Oracle
Recursos ocultos do Windows 2008
Recursos ocultos do Solaris / OpenSolaris
Recursos ocultos do SQL Server
Recursos ocultos do IIS (6.0 / 7.0)

Andy
fonte

Respostas:

52

Para começar a bola, acho a tela essencial:

Quando a tela é chamada, ela cria uma única janela com um shell (ou o comando especificado) e sai do seu caminho para que você possa usar o programa como faria normalmente. Em seguida, a qualquer momento, você pode criar novas janelas (em tela cheia) com outros programas (incluindo mais shells), eliminar a janela atual, exibir uma lista das janelas ativas, ativar e desativar o log de saída, copiar texto entre janelas, visualizar o histórico de rolagem, alternar entre janelas, etc. Todas as janelas executam seus programas completamente independentes umas das outras. Os programas continuam em execução quando a janela não está visível no momento e mesmo quando a sessão de tela inteira é desanexada do terminal do usuário.

Chris Bunch
fonte
Alguém tem algo a dizer sobre os perfis de tela lançados com o Ubuntu 9.04? Eu olhei para eles um pouco, mas não lhes deu tempo suficiente para ser capaz de dizer se eles são realmente útil ou apenas uma boa aparência
xkcd150
12
AMD! tela de novo?
Setatakahashi 13/05/09
@ xkcd150, eles são bem parecidos, mas a maior vitória é a linha de status. Ele mostra todas as suas janelas, além de várias coisas sobre a máquina.
Staticsan
E se você quiser uma boa versão de uso tmux tela;)
Boa Pessoa
45

Talvez eu não os use todos os dias, mas os uso com frequência:

  • strace Confira quais arquivos são carregados pelo processo.
  • htop Um top melhor.
  • mtr ping + traceroute combinado
  • lynx / links / w3m Caso você precise navegar pelo console
  • ettercap Ótimo sniffer de rede (eu prefiro o wireshark)
  • script bash Todo administrador do * nix deve saber disso.
  • Uma linguagem de programação. Para coisas mais complexas, fique longe do script do bash e use algo como python / perl / ruby ​​/ tcl / ... (eu uso o Lisp)
  • Midnight Commander pode ser ótimo para pessoas que gostaram de norton commander.
  • irssi Você nunca sabe quando só quer perguntar algo no IRC.
  • wget / curl Baixe material da linha de comando.
  • scp Copia coisas sobre ssh
  • lftp / ncftp Bons clientes de FTP do console (com script).
  • iotop Verifique o que está estressando seus discos
  • bom scanner de porta nmap
Gert M
fonte
Gostaria de adicionar no topo também
PiL
Ambos os documentos do TLDP bash são muito ruins.
adaptr
33

Fiquei surpreso ao descobrir que você pode executar aplicativos GUI remotos através de SSH, usando o parâmetro "-X". Por exemplo:

# on my machine
$ ssh -X linuxserver
# on remote machine
$ gedit /etc/my.cnf &

A janela do gedit aparece na minha máquina local, editando o arquivo "my.cnf" no servidor.

Suponho que isso funcione apenas se a sua máquina cliente tiver um ambiente X - em outras palavras, não no Windows. Mas funciona muito bem no meu Mac!

Matt Solnit
fonte
9
usando o xming sourceforge.net/projects/xming, você também pode funcionar no Windows!
Xkcd150 02/05/2009
3
O encaminhamento SSH faz criptografia, o que atrasa tudo. Se você estiver em uma LAN segura, basta enviar programas de uma área de trabalho Linux para outra sessão X de computadores Linux. Muito conveniente. Eu costumava rodar filmes via mplayer como aquele na minha área de trabalho principal, que estava conectada ao estéreo em uma extremidade da sala de estar. O áudio do mplayer sairia em estéreo, mas a imagem chegaria ao meu laptop (via Ethernet) na outra extremidade da sala de estar, conectada ao projetor de dados. Incribilidade de filmes caseiros.
530 Gareth
5
Em vez de adicionar o -X a cada vez, você pode atualizar seu ssh_config com uma linha de host que corresponda aos hosts internos e ao espaço de endereço 'Host .domain.org 192.168. . * 'e ative a opção' ForwardX11 yes ''
Zoredache
Eu me acostumei a -Y, mas nunca aprendi a diferença.
Notmyfault
-Y é encaminhamento X11 confiável. É muito mais seguro que -X (encaminhamento simples do X11). Entre muitas configurações padrão do sshd, não será permitido -X agora, apenas -Y. Se você usar -X, encontrar erros estranhos, os aplicativos serão fechados com erros "MIT MAGIC COOKIE" e use -Y. Conclusão: não use -X, apenas -Y
wazoox 26/06/09
33

Muitas vezes é ignorado, é uma ferramenta muito útil. lsof permite visualizar uma lista de todos os arquivos abertos no sistema, quem / o que o está usando, etc.

Por exemplo:

root@tower:~ # umount /mnt/hardy
umount: /mnt/hardy: device is busy
umount: /mnt/hardy: device is busy
root@tower:~ # lsof | grep /mnt/hardy
bash       5966       root  cwd       DIR      253,2     1024          2 /mnt/hardy
root@tower:~ #

Agora vejo que estou logado no shell em outro terminal e / mnt / hardy é o meu diretório de trabalho atual. Portanto, eu posso matar esse shell ou ir para o outro terminal e sair desse diretório para que possa ser desmontado.

Esse é realmente um exemplo trivial, é muito útil para limpar ocasionalmente a infestação de 'bot'. As opções são amplas, consulte man lsof para mais.

Tim Post
fonte
2
O fusor é outro truque interessante, se você estiver interessado apenas em um arquivo ou um ponto de montagem.
5609 bdonlan #
11
Escondido com certeza. Eu tenho procurado por esse recurso há muito tempo. (Eu sou um noob, no entanto) #
1312
Isof é verdadeiramente maravilhoso. Combinado com a idéia do UNIX de tudo (bem, quase) ser um arquivo, ele pode fazer coisas incríveis. Muitas coisas que a princípio parecem impossíveis ou difíceis de fazer acabam sendo solucionáveis ​​com um oneliner, graças a algumas das opções de lsof.
Ptman 23/05
31

Para mudar para o último diretório em que você estava:

cd -
dkaylor
fonte
Eu uso isso o tempo todo.
MathewC
26

A pilha de rede pode ser deixada em execução após uma parada do sistema. Não sei se isso é atual na série 2.6.x de kernels, mas em versões mais antigas, você pode configurar o firewall / roteamento e interromper o sistema sem um desligamento , deixando apenas a pilha de rede em execução. Isso permitiria que você criasse um firewall barato (embora estático) que "não possa ser invadido" - porque não há nada para invadir, pois não há programas ou serviços, apenas a parte da pilha de rede do kernel que passa pacotes para frente e para trás. ..

Avery Payne
fonte
Uau. Realmente legal! +1 Eu certamente testarei isso em um kernel 2.6 quando tiver algum tempo livre.
wzzrd
Isso é incrível, mas como é infalível? O kernel ainda não precisa estar em execução? Ou é um núcleo mínimo?
Cdeszaq 29/05/09
7
"Núcleo"? O que é esse "Kernel" de que você fala? Quando entra nesse modo, o único código em execução é a / network stack /. Sem agendamento de tarefas, sem APIs, código, serviços, espaço do usuário, nada, zip, nada ... apenas o som fraco de pacotes ecoando pela Ethernet ... Pense nisso como mais um dispositivo incorporado com duas funções na vida - aceite e envie pacotes. Suponho que você possa "hackear" isso no sentido de poder tentar furtar pacotes, mas não há nada que você possa / diretamente / ataque na própria pilha.
Avery Payne
24

Eu gosto de "localizar" - uma maneira muito mais fácil de encontrar arquivos do que o "encontrar. -Name xxxx -print". Observe que você precisa usar o comando updatedb para um índice do seu arquivo atualizado; veja as páginas de manual para detalhes.

gareth_bowles
fonte
4
Felizmente, muitas distribuições Linux incluem updatedb no cron.daily :-).
5119 Matt Solnit
11
Também é muito, muito mais rápido que encontrar.
Cgp
Deve-se ressaltar que algumas pessoas vêem a localização como um risco de segurança. Dito isto, eu usá-lo o tempo todo :-)
baudtack
As versões recentes de localização têm a opção -i para ignorar maiúsculas e minúsculas, muito útil.
NiXar 23/09/09
E quanto à segurança, existem versões de localização segura, que permitem "encontrar" apenas os arquivos que o usuário conectado pode realmente ver.
Jürgen A. Erhard
19

Acho que o "ngrep" é realmente útil para depurar o código de rede em servidores remotos sem ter que exibir arquivos tcpdump:

ngrep -d any -W byline port 80

por exemplo, mostrará solicitações e respostas HTTP ativas.

Outra coisa que achei útil com frequência é a opção "-e" para rastrear:

strace -p <pid> -e trace=open

mostrará todos os syscalls abertos () para um determinado pid e

strace -p <pid> -e trace=\!rt_sigprocmask

excluirá todas as chamadas para rt_sigprocmask () da saída (útil para depurar o código RoR, que parece fazer muitas dessas chamadas quando criadas para usar pthreads).

Jon Topper
fonte
Agora eu realmente estou começando a amar linux. :)
2010
17
apropos

DESCRIÇÃO Cada página de manual possui uma breve descrição disponível. apropos pesquisa nas descrições por instâncias da palavra-chave.

gyaresu@debian:~/bin$ apropos ettercap
etter.conf (5)       - Ettercap configuration file
ettercap (8)         - (unknown subject)
ettercap_curses (8)  - (unknown subject)
ettercap_plugins (8) - (unknown subject)
Gareth
fonte
Eu sempre uso, man -kmas estou com problemas de ortografia.
Mctylr 11/03/10
15

Felizmente, eu só precisei algumas vezes, mas a chave Magic SysRq ainda permanece um dos meus recursos ocultos favoritos de todos os tempos.

Alt + SysRq + RSEIUB

gharper
fonte
11
+1 Magic SysRQ é dourado. Lembre-se de que “criar elefantes é tão chato” como uma dica de qual ordem usar as teclas, embora a ordem não seja imutável. É por isso que o RSEIUB é usado acima: ele sincroniza os dados no disco antes de fornecer os comandos 'terminar' e 'matar', em vez do contrário. A ordem correta é discutível.
Wzzrd 27/05/2009
Outro auxiliar de memória: BUSIER (soletrado para trás).
Mei
13
NAME
 units -- conversion program

DESCRIPTION
 The units program converts quantities expressed in various scales to their 
equivalents in other scales.  The units program can only handle multiplicative
scale changes.  It cannot convert Celsius to Fahrenheit, for example.
It works interactively by prompting the user for input:

     You have: meters
     You want: feet
             * 3.2808399
             / 0.3048

     You have: cm^3
     You want: gallons
             * 0.00026417205
             / 3785.4118

     You have: meters/s
     You want: furlongs/fortnight
             * 6012.8848
             / 0.00016630952

     You have: 1|2 inch
     You want: cm
             * 1.27
             / 0.78740157
Gareth
fonte
12

Não é realmente tão oculto, mas pode ser assim para quem não tem experiência, mas eu realmente gosto de poder dar listas e deixar o bash expandi-las como em:

cp arq{,.bak}

que é o mesmo que digitar

cp arq arq.bak

Também uso os atalhos do histórico (não acho que seja o termo certo, mas ...) como

!! 

repetir o último comando ou

^foo^bar 

substituir foo por bar no último comando

Flávio Amieiro
fonte
12

ssh-copy-id para transferir chaves ssh. O jeito antigo era colocar a chave sobre o ssh e ainda mais antigo era usar a chave e depois a chave. Se você estiver usando uma porta ssh não padrão, isso fará o truque para você.

ssh-copy-id -i / path / to / key '-p nome de host não padrão do porto'

De outra forma..

ssh-copy-id -i / caminho / para / nome da máquina principal

bobbyrcox
fonte
11

Consoles virtuais. A maioria das pessoas sabe como usar (Ctrl-) Alt-F1 para chegar ao primeiro console etc., mas e se você tiver mais de 12 anos? Você pode usar Alt-Esquerda e Alt-Direita para percorrer o restante deles. :-D

Chris Jester-Young
fonte
uau, cara, nesse ponto, basta usar a tela. hehe :) eu tenho isso no meu .screenrc para mostrar uma barra de tarefas na parte inferior, informando que as telas estão abertas #
Roy Rico
e qual id o 12º console está executando em um ambiente de desktop (por exemplo, gnome)?
23411 Behrooz
11

Eu gosto do pacote debian-goodies:

Descrição: Pequenos utilitários no estilo caixa de ferramentas para sistemas Debian
 Esses programas foram projetados para integrar-se às ferramentas shell padrão,
 estendendo-os para operar no sistema de empacotamento Debian.
 .
  dgrep - Pesquise todos os arquivos em pacotes especificados para um regex
  dglob - Gere uma lista de nomes de pacotes que correspondem a um padrão
 .
 Estes também estão incluídos, porque são úteis e não justificam
 seus próprios pacotes:
 .
  debget - busca um .deb para um pacote no banco de dados do APT
  dpigs - Mostra quais pacotes instalados ocupam mais espaço
  debman - exibe facilmente as páginas de manual de um .deb binário sem extrair
  debmany - Seleciona páginas de manual de pacotes instalados ou desinstalados
  checkrestart - Ajuda para encontrar e reiniciar processos que estão usando antigos
                 versões de arquivos atualizados (como bibliotecas)
  popbugs - Exibe uma lista personalizada de erros críticos ao lançamento, com base em
                 pacotes que você usa (usando dados de concursos de popularidade)

e também moreutils, que são basicamente ferramentas de tubo impressionantes sobre rodas:

Descrição: utilitários unix adicionais
 Esta é uma coleção crescente de ferramentas unix que ninguém pensou
 para escrever há trinta anos.
 .
 Até o momento, inclui os seguintes utilitários:
  - esponja: absorve a entrada padrão e grave em um arquivo
  - ifdata: obtém informações da interface de rede sem analisar a saída ifconfig
  - ifne: executa um programa se a entrada padrão não estiver vazia
  - vidir: edite um diretório no seu editor de texto
  - vipe: insere um editor de texto em um pipe
  - ts: entrada padrão de carimbo de data / hora
  - combinar: combina as linhas em dois arquivos usando operações booleanas
  - xixi: entrada padrão tee para tubos
  - zrun: descompacta automaticamente argumentos para comandar
  - mispipe: canalize dois comandos, retornando o status de saída do primeiro
  - isutf8: verifica se um arquivo ou entrada padrão é utf-8
  - lckdo: executa um programa com um bloqueio mantido
Página inicial: http://kitenet.net/~joey/code/moreutils/
jldugger
fonte
8

Um ótimo "recurso" que eu uso todos os dias no trabalho: a capacidade de ouvir o SSH na porta 443 para criar um túnel que ignora meu firewall de trabalho, permitindo que eu execute um proxy SOCKS local em túnel através do SSH para o servidor Linux voltado para a Internet .

Eu posso ignorar completamente meu firewall corporativo.

WerkkreW
fonte
3
Sempre me faz rir rir das pessoas que acreditam que você pode "bloquear" uma rede. Se deixar uma única porta para o tráfego sair, você está ferrado.
22009 baudtack
e se eles virem 3 GB de dados fluindo pela porta 443 do seu computador?
Wadih M.
Adicione saca-rolhas ao nix, e até os proxies https não são um problema!
Niall Donegan
@ Wadih.M: este é o caminho: ssh a 443, envie de volta um pacote udp da máquina remota para outra porta com o netcat. Envie outro pacote udp de onde você está para o machine.congrats remoto. A porta é perfurada.
Behrooz
8

Eu sempre gostei de "man hier" por ajudar as pessoas que são novas no sistema.

Matt Simmons
fonte
8

Talvez um dos grandes recursos do Linux, ao contrário do Windows, seja o fato de não haver quase nenhum recurso oculto por design. Felizmente, se algum recurso não documentado for importante o suficiente para saber sobre a comunidade, ele faz seu trabalho.

Andrew H
fonte
7

Aqui estão alguns que eu usei regularmente:

  • sar - mostra a atividade do sistema
  • vmstat - estatísticas de memória virtual
  • iostat - estatísticas io
  • pkill- como pgrepmas permite matar o ID do processo retornado
  • xargs -I<string> - permite substituir strings por dados canalizados
  • at - agendar uma tarefa
  • tkdiff- diffutilidade gráfica

Estes provavelmente não estão "ocultos", mas acho-os extremamente úteis:

  • df -hk - mostra o uso do disco em formato legível por humanos
  • ls -ltr - lista os arquivos classificados por data
  • while :; do...done- Substituição (Bash), watchse indisponível
  • perl -e- execute um Perltrecho na linha de comando
  • free -kt - mostra informações de memória (kilobytes w / total)
bedwyr
fonte
Eu acho que é mais fácil escrever do while true; do ...quewhile [ 1 ]; do ...
ptman
6

Comece com este artigo com alguns ótimos truques do Linux. O meu favorito é pstree, que exibe seus processos em um formato de árvore para que você possa ver qual processo gerou qual.

curl supera o wget para praticamente tudo o que você usaria.

O zgrep e o zless são ótimos para pesquisar arquivos de log compactados com gzip, para que você não precise canalizá-los através do gunzip ou deixar coisas não compactadas em / var / log.

Magus
fonte
Sinopse, para os preguiçosos ;-) 1.pgrep (como o ps encontra o grep) 2.pstree (lista os processos em um formato de árvore) 3.bc (uma linguagem arbitrária da calculadora de precisão) 4.split (divide arquivos grandes em partes) 5 .nl (linhas de números) 6.mkfifo (faça dois comandos se comunicarem por meio de um pipe nomeado) 7.ldd (imprime dependências de bibliotecas compartilhadas) 8.col (retira os feeds de linha) 9.xmlwf (verifica se um documento XML está bem formado) 10.lsof (listas de arquivos abertos)
nome de usuário
(GNU) ps tem sinalizadores para imprimir uma árvore. Existe algo além de ser mais fácil lembrar-se de pstree?
Ptman 23/05
Por que enrolar seria melhor que o wget? E: zgrep e zless são apenas o começo; há também zcat e zmore.
Mei
6

ESC + .

'Cola' o último parâmetro da linha anterior no prompt atual

por exemplo

ls -l /home/someuser/somedir/somefile

Seguido por

rm ESC + .

traduz para

rm /home/someuser/somedir/somefile
Bryan
fonte
Fantástico. Não sabia disso.
Andrew Taylor
5

Eu vejo o yescomando muito bom:

yes | do_you_agree

Na página do manual:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION
FerranB
fonte
5

O conceito é que tudo no Linux é um arquivo .

Todas as configurações estão em arquivos de texto e tudo no Linux é tratado como um arquivo. Essa é uma abordagem muito mais simples, que facilita muito a mudança de coisas no Linux. No Linux, mesmo o seu sistema de arquivos pode ser visto como um arquivo.

ecleel
fonte
Se você gosta desse conceito básico do Unix, vai gostar do Plan9 OS.
wazoox
4

É de código aberto. Nada é "escondido" se você se importa em olhar.

Paul Tomblin
fonte
Infelizmente, o código aberto tende a dificultar bastante as coisas "ocultas".
Spoike
5
Eu teria argumentado o contrário - se um recurso estiver oculto em um aplicativo de código fechado, cabe à loja de desenvolvedores divulgá-lo. Em um aplicativo de código aberto, o recurso está disponível para todo mundo ver. Além disso, o número de pessoas em desenvolvimento ativo é geralmente muito maior (mais pessoas conhecem e falam sobre recursos "ocultos"). Por fim, o desenvolvimento de código aberto é amplamente orientado para a comunidade, de modo que as pessoas geralmente se falam sobre recursos ocultos.
6266 Tom Wright
Não estou seguindo o raciocínio de @ Spoike. Sim, há mais para ver, mas o que você vê é o que recebe.
Paul Tomblin
Eu acho que você está discutindo sobre semântica. Que tal mudar o nome para "Recursos ofuscados do linux?"
Spoulson 05/05
Eu argumentaria parcialmente a favor de Spoike que talvez as coisas estejam "ocultas" devido à falta geral de documentação atualizada . Para não dizer que esta afirmação é válida para todos os projetos, no entanto, existem muitos projetos em que a documentação completa (e não quero dizer apenas os manuais de instruções) está faltando. Os recursos administrativos do KDE, especialmente no que diz respeito ao gerenciamento de configurações nos arquivos rc e aos efeitos reais de definir um campo específico imutável, é um exemplo perfeito. Em muitos casos, eu me vi procurando no código fonte para descobrir como as coisas são tratadas.
Jason Mock
4

O recurso oculto é que não há recursos ocultos. O sistema fornece uma quantidade enorme de energia à qual você tem acesso completo. Você precisa entender cada parte dela e todas as ferramentas disponíveis para saber qual é o poder ao seu alcance.

Você deve começar entendendo todos os comandos em / bin, / sbin, / usr / bin, / usr / sbin e todos os arquivos virtuais em / proc. Leia as páginas de manual, outra documentação e fonte, conforme necessário.

Se você não se sente confortável lendo uma página de manual ou lendo a fonte, esse é seu recurso oculto.

Carlito
fonte
3

grep , awk e sed

topo

Brent
fonte
12
Aqueles não são muito ocultos #
2177 jayrdub
3
  • od- despejar arquivos em octal e outros formatos. Útil para verificar, por exemplo, se há alguma porcaria de lista técnica no início do arquivo
  • file - qual pode ser o tipo de arquivo do arquivo fornecido?
  • lshw, lsusb, lspci- hardware lista
  • tracepath - estamos lidando com o problema da MTU aqui?
  • netwox contém mais de 200 ferramentas relacionadas à rede
  • ip - para configuração de rede / informações
  • sysctl - sistema de arquivos / rede / informações do kernel
  • ebtables - iptables para bridge
  • vconfig - configuração de VLAN
  • brctl - Configuração da ponte
  • socat- netcatem esteróides
  • ipgrab- tcpdumputilitário semelhante que imprime informações detalhadas do cabeçalho
  • dig - O que há com o servidor DNS agora?
raspi
fonte
3

teeé incrível. Saída para tela e arquivo de log? Verifica.

nwahmaet
fonte
3

Apenas encontrei este hoje:

dmidecode : informa
informações sobre o hardware do seu sistema, conforme descrito no BIOS do sistema, de acordo com o padrão SMBIOS / DMI. Essas informações normalmente incluem o fabricante do sistema, o nome do modelo, o número de série, a versão do BIOS, a etiqueta do ativo, além de muitos outros detalhes de diferentes níveis de interesse e confiabilidade, dependendo do fabricante. Isso geralmente inclui o status de uso dos soquetes da CPU, slots de expansão (por exemplo, AGP, PCI, ISA) e slots do módulo de memória e a lista de portas de E / S (por exemplo, serial, paralela, USB).

Definitivamente, fica muito mais fácil responder a perguntas sobre somerandomserver27 nas instalações do colo!

gharper
fonte
Você vai gostar lspci, lsscsi, lsusb também :)
wazoox
Sim, eu uso os ls comandos * em uma base regular - Eu só não sabia que havia alguma coisa que poderia puxar BIOS informações nível :)
gharper
3

Não é realmente uma coisa do Linux, mais uma coisa do Bash: substituição de processo,

diff some_local_file <(ssh somehost "cat some_remote_file")

Isso difere um arquivo local e um remoto recuperados via SSH em uma linha.

Rog
fonte