Características ocultas de Linux

64

Siguiendo el espíritu de las características ocultas de PowerShell y varios otros en Stack Overflow, ¿qué comandos de Linux o combinaciones de comandos encuentra esenciales en su trabajo?

Consulte también:
Características ocultas de MySQL
Características ocultas de PowerShell
Características ocultas de Oracle Database
Características ocultas de Windows 2008
Características ocultas de Solaris / OpenSolaris
Características ocultas de SQL Server
Características ocultas de IIS (6.0 / 7.0)

Andy
fuente

Respuestas:

52

Para poner en marcha la pelota, creo que la pantalla es esencial:

Cuando se llama a la pantalla, crea una sola ventana con un shell (o el comando especificado) y luego se sale de su camino para que pueda usar el programa como lo haría normalmente. Luego, en cualquier momento, puede crear ventanas nuevas (pantalla completa) con otros programas (incluyendo más shells), cerrar la ventana actual, ver una lista de las ventanas activas, activar y desactivar el registro de salida, copiar texto entre ventanas, ver el historial de desplazamiento hacia atrás, alternar entre ventanas, etc. Todas las ventanas ejecutan sus programas completamente independientes entre sí. Los programas continúan ejecutándose cuando su ventana no está visible actualmente e incluso cuando toda la sesión de pantalla está separada del terminal de los usuarios.

Chris Bunch
fuente
¿Alguien tiene algo que decir sobre el despliegue de los perfiles de pantalla con ubuntu 9.04? Los miré por un momento, pero no les di el tiempo suficiente para poder decir si realmente son útiles o simplemente se ven bien
xkcd150
12
¡DIOS MIO! pantalla de nuevo?
setatakahashi
@ xkcd150, son bastante similares, pero la mayor victoria es la línea de estado. Muestra todas sus ventanas más un montón de cosas sobre la máquina.
staticsan
Y si quieres una buena versión de pantalla, usa tmux;)
Good Person
45

Tal vez no los uso todos los días, pero los uso con frecuencia:

  • strace Vea qué archivos son cargados por el proceso.
  • htop Un mejor top.
  • mtr ping + traceroute combinado
  • lynx / links / w3m En caso de que necesite navegar por la consola
  • ettercap Gran sniffer de red (lo prefiero sobre wireshark)
  • scripting bash Todos los administradores de * nix deberían saber esto.
  • Un lenguaje de programación. Para las cosas más complejas, manténgase alejado de las secuencias de comandos bash y use algo como python / perl / ruby ​​/ tcl / ... (uso Lisp)
  • Midnight Commander puede ser excelente para las personas a las que les gustaba Norton Commander .
  • irssi Nunca se sabe cuándo solo quieres ir a preguntar algo en IRC.
  • wget / curl Descargar cosas desde la línea de comandos.
  • scp Copiar cosas sobre ssh
  • lftp / ncftp Clientes FTP de consola buenos (programables).
  • iotop Comprueba lo que estresa a tus discos
  • nmap buen escáner de puertos
Gert M
fuente
Yo también agregaría encima
PiL
Ambos documentos bash de TLDP son muy malos.
Adaptr
33

Me sorprendió descubrir que puede ejecutar aplicaciones GUI remotas a través de SSH, utilizando el parámetro "-X". Por ejemplo:

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

La ventana gedit aparece en mi máquina local, editando el archivo "my.cnf" en el servidor.

Supongo que esto solo funciona si su máquina cliente tiene un entorno X, en otras palabras, no en Windows. ¡Pero funciona muy bien en mi Mac!

Matt Solnit
fuente
99
¡usando xming sourceforge.net/projects/xming también puede hacer que funcione en Windows!
xkcd150
3
El reenvío SSH realiza el cifrado, lo que ralentiza todo. Si está en una LAN segura, puede enviar programas desde un escritorio Linux a otra sesión X de computadoras Linux. Muy útil. Solía ​​ejecutar películas a través de mplayer como ese en mi escritorio principal que estaba conectado al stero en un extremo de la sala de estar. El audio de mplayer saldría del estéreo, pero la imagen llegaría a mi computadora portátil (a través de Ethernet) en el otro extremo de la sala de estar que estaba conectada al proyector de datos. Película casera genialidad.
Gareth
55
En lugar de agregar -X cada vez, puede actualizar su ssh_config con una línea de host que coincida con sus hosts internos y el espacio de direcciones 'Host .domain.org 192.168. . * 'y habilite la opción' ForwardX11 yes '
Zoredache
Me he acostumbrado a -Y, sin embargo, nunca aprendí la diferencia.
Notmyfault
-Y es confiable reenvío X11. Es mucho más seguro que -X (reenvío X11 simple). Por cierto, muchas configuraciones sshd predeterminadas no permitirán -X ahora, solo -Y. Si usa -X, encuentra errores extraños, las aplicaciones que se cierran con errores "MIT MAGIC COOKIE", luego use -Y. Conclusión: no use -X, solo -Y
wazoox
33

A menudo se ignora lsof, es una herramienta muy útil. lsof le permite ver una lista de cada archivo abierto en el sistema, quién / qué lo está usando, etc.

Por ejemplo:

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:~ #

Ahora veo que he iniciado sesión en un shell en otra terminal, y / mnt / hardy es mi directorio de trabajo actual. Entonces puedo matar ese shell o ir a la otra terminal y salir de ese directorio para que pueda desmontarse.

Ese es realmente un ejemplo trivial, es muy útil para limpiar la infestación ocasional de 'bot' también. Las opciones son extensas, vea man lsof para más información.

Tim Post
fuente
2
El fusor es otro buen truco, si solo le interesa un archivo o un punto de montaje.
bdonlan 05 de
1
Oculto a ciencia cierta. He estado buscando esta característica por años. (Soy un novato)
cgp
Isof es realmente maravilloso. Combinado con la idea de UNIX de que todo (bueno, casi) es un archivo, puede hacer cosas increíbles. Muchas de las cosas que al principio parecen imposibles o difíciles de hacer resultan solucionables con un revestimiento de línea gracias a algunas de las opciones de lsof.
ptman
31

Para cambiar al último directorio en el que estuvo:

cd -
dkaylor
fuente
Uso esto todo el tiempo.
MathewC
26

La pila de red puede dejarse en ejecución después de una detención del sistema. No sé si esto es actual con la serie 2.6.x de núcleos, pero en versiones anteriores, puede configurar el firewall / enrutamiento, luego detener el sistema sin apagar , dejando solo la pila de red en funcionamiento. Esto le permitiría crear un cortafuegos barato (aunque estático) que "no se puede hackear", porque no hay nada que piratear, ya que no hay programas o servicios, solo la parte de la pila de red del núcleo que pasa paquetes de un lado a otro. ..

Avery Payne
fuente
Guau. ¡Realmente genial! +1 Ciertamente voy a probar esto en un kernel 2.6 cuando tenga algo de tiempo libre.
wzzrd
Eso es increíble, pero ¿cómo es inquebrantable? ¿El kernel todavía no tiene que estar ejecutándose? ¿O es un núcleo mínimo?
cdeszaq
77
"Núcleo"? ¿De qué habla este "núcleo"? Cuando entra en este modo, el único código que se ejecuta es / network stack /. Sin programación de tareas, sin API, código, servicios, espacio de usuario, nada, zip, nada ... solo el débil sonido de los paquetes haciendo eco a través de Ethernet ... Piense en ello como más como un dispositivo integrado con dos funciones en la vida: aceptar y enviar paquetes. Supongo que podría "piratear" esto en el sentido de que puede intentar pasar los paquetes, pero no hay nada que pueda / directamente / atacar en la pila en sí.
Avery Payne
24

Me gusta "localizar", una forma mucho más fácil de encontrar archivos que el retorcido "find. -Name xxxx -print". Tenga en cuenta que debe usar el comando updatedb con él para actualizar el índice de su archivo; Vea las páginas del manual para más detalles.

gareth_bowles
fuente
44
Afortunadamente, muchas distribuciones de Linux incluyen updatedb en cron.daily :-).
Matt Solnit
1
También es mucho, mucho más rápido que encontrar.
cgp
Cabe señalar que algunas personas ven la ubicación como un riesgo de seguridad. Dicho esto, lo uso todo el tiempo :-)
baudtack
Las versiones recientes de localizar tienen el interruptor -i para ignorar mayúsculas y minúsculas, muy útil.
niXar
Y en cuanto a la seguridad, hay versiones seguras de localización, que le permiten "encontrar" solo aquellos archivos que el usuario conectado puede ver.
Jürgen A. Erhard
19

Encuentro "ngrep" realmente útil para depurar código de red en servidores remotos sin tener que punt tcpdump archivos alrededor:

ngrep -d any -W byline port 80

por ejemplo, le mostrará solicitudes y respuestas HTTP en vivo.

Otra cosa que he encontrado útil con frecuencia es el interruptor "-e" a strace:

strace -p <pid> -e trace=open

mostrará todas las llamadas al sistema abiertas () para un pid dado, y

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

excluirá todas las llamadas a rt_sigprocmask () de la salida (útil para depurar el código RoR, que parece hacer una gran cantidad de esas llamadas cuando está construido para usar pthreads).

Jon Topper
fuente
Ahora realmente estoy empezando a amar a Linux. :)
EL
17
apropos

DESCRIPCIÓN Cada página del manual tiene una breve descripción disponible. apropos busca en las descripciones instancias de palabras clave.

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
fuente
Siempre uso man -ken su lugar, pero tengo problemas de ortografía.
mctylr
15

Afortunadamente, solo lo he necesitado un par de veces, pero la tecla Magic SysRq sigue siendo una de mis funciones ocultas favoritas de todos los tiempos.

Alt + SysRq + RSEIUB

gharper
fuente
1
+1 Magic SysRQ es dorado. Recuerde 'Criar elefantes es tan aburrido' como una pista en la que se deben usar las teclas, aunque el orden no está escrito en piedra. Es por eso que RSEIUB se usa anteriormente: sincroniza los datos en el disco antes de dar los comandos 'terminar' y 'matar' en lugar de al revés. El orden correcto es discutible.
wzzrd
Otra ayuda de memoria: BUSIER (deletreado al revé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
fuente
12

No está realmente tan oculto, pero puede serlo para aquellos sin experiencia, pero realmente me gusta poder dar listas y dejar que bash las expanda como en:

cp arq{,.bak}

que es lo mismo que escribir

cp arq arq.bak

También uso los accesos directos del historial (no creo que sea el término correcto, pero ...) como

!! 

para repetir el último comando, o

^foo^bar 

reemplazar foo por barra en el último comando

Flávio Amieiro
fuente
12

ssh-copy-id para transferir claves ssh. La forma antigua era atrapar la llave sobre ssh y aún más antigua era buscar la llave y luego atrapar la llave. Si está utilizando un puerto ssh no estándar, este será el truco para usted.

ssh-copy-id -i / ruta / a / clave '-p nombre de host de puerto no estándar'

Otro sabio ..

ssh-copy-id -i / ruta / a / key hostname

bobbyrcox
fuente
11

Consolas virtuales La mayoría de la gente sabe cómo usar (Ctrl-) Alt-F1 para llegar a la primera consola, etc., pero ¿qué pasa si tiene más de 12? Puede usar Alt-Izquierda y Alt-Derecha para recorrer el resto de ellas. :-RE

Chris Jester-Young
fuente
wow, amigo, en ese momento, solo usa la pantalla. jeje :) lo tengo en mi .screenrc para mostrar una barra de tareas en la parte inferior que me permite saber que las pantallas están abiertas
Roy Rico
¿Y qué identificación tiene la 12ª consola con un entorno de escritorio (por ejemplo, gnome)?
Behrooz el
11

Me gusta el paquete debian-goodies:

Descripción: pequeñas utilidades tipo caja de herramientas para sistemas Debian
 Estos programas están diseñados para integrarse con herramientas de shell estándar,
 extendiéndolos para operar en el sistema de empaquetado Debian.
 .
  dgrep: busca una expresión regular en todos los archivos en paquetes especificados
  dglob: genera una lista de nombres de paquetes que coinciden con un patrón
 .
 Estos también están incluidos, porque son útiles y no justifican
 sus propios paquetes:
 .
  debget - Obtener un .deb para un paquete en la base de datos de APT
  dpigs: muestra qué paquetes instalados ocupan más espacio
  debman: vea fácilmente páginas de manual desde un archivo binario sin extraer
  debmany - Seleccione páginas de manual de paquetes instalados o desinstalados
  checkrestart - Ayuda para encontrar y reiniciar procesos que usan viejos
                 versiones de archivos actualizados (como bibliotecas)
  popbugs: muestra una lista personalizada de errores críticos de lanzamiento basada en
                 paquetes que usa (usando datos de popularidad-concurso)

y también moreutils, que es básicamente una increíble herramienta para tuberías sobre ruedas:

Descripción: utilidades adicionales de Unix
 Esta es una colección cada vez mayor de las herramientas de Unix que nadie pensó
 para escribir hace treinta años.
 .
 Hasta ahora, incluye las siguientes utilidades:
  - esponja: absorba la entrada estándar y escriba en un archivo
  - ifdata: obtiene información de la interfaz de red sin analizar la salida ifconfig
  - ifne: ejecuta un programa si la entrada estándar no está vacía
  - vidir: edita un directorio en tu editor de texto
  - vipe: inserte un editor de texto en una tubería
  - ts: entrada estándar de marca de tiempo
  - Combinar: combina las líneas en dos archivos usando operaciones booleanas
  - pipí: entrada estándar en T a las tuberías
  - zrun: descomprime automáticamente los argumentos para ordenar
  - mispipe: canaliza dos comandos, devolviendo el estado de salida del primero
  - isutf8: verifica si un archivo o entrada estándar es utf-8
  - lckdo: ejecuta un programa con un bloqueo retenido
Página de inicio: http://kitenet.net/~joey/code/moreutils/
jldugger
fuente
8

Una gran "característica" que uso todos los días en el trabajo: la capacidad de hacer que SSH escuche en el puerto 443 para poder crear un túnel que omita mi firewall de trabajo, lo que me permite ejecutar un proxy SOCKS local tunelizado a través de SSH a mi servidor Linux frente a Internet .

Puedo ignorar por completo mi firewall corporativo.

WerkkreW
fuente
3
Siempre me hace reír pensar en las personas que creen que puedes "bloquear" una red. Si deja un solo puerto para que salga el tráfico, está jodido.
baudtack
¿Qué pasa si ven 3 GB de datos que fluyen a través del puerto 443 desde su computadora?
Wadih M.
¡Agregue sacacorchos al nix, e incluso los proxies https no son un problema!
Niall Donegan
@ Wadih.M: esta es la forma: ssh a través de 443, envíe un paquete udp desde la máquina remota a otro puerto con netcat. Envíe otro paquete udp desde donde se encuentra a la máquina remota.congrats.el puerto está perforado.
Behrooz el
8

Siempre me ha gustado "man hier" por ayudar a las personas que son nuevas en el sistema.

Matt Simmons
fuente
8

Quizás una de las grandes características de Linux, a diferencia de Windows, es que prácticamente no hay características ocultas por diseño. Con suerte, si alguna característica no documentada es lo suficientemente importante como para saber sobre la comunidad, hace su trabajo.

Andrew H
fuente
7

Aquí hay algunos que he usado regularmente:

  • sar - muestra la actividad del sistema
  • vmstat - estadísticas de memoria virtual
  • iostat - estadísticas io
  • pkill- Me gusta pgreppero le permite matar la ID del proceso devuelto
  • xargs -I<string> - permite reemplazar cadenas con datos canalizados
  • at - programar una tarea
  • tkdiff- diffutilidad gráfica

Probablemente no estén "ocultos", pero los encuentro extremadamente útiles:

  • df -hk - muestra el uso del disco en formato legible para humanos
  • ls -ltr - lista de archivos ordenados por fecha
  • while :; do...done- Reemplazo (Bash) watchsi no está disponible
  • perl -e- ejecuta un Perlfragmento en la línea de comandos
  • free -kt - muestra información de la memoria (kilobytes con total)
bedwyr
fuente
Creo que es más fácil de escribir while true; do ...quewhile [ 1 ]; do ...
ptman
6

Comience con este artículo con algunos trucos geniales de Linux. Mi favorito es pstree, que muestra sus procesos en un formato de árbol para que pueda ver qué proceso generó cuál.

curl late muchísimo fuera de wget para casi cualquier cosa para la que usarías wget.

zgrep y zless son excelentes para buscar archivos de registro comprimidos para que no tenga que canalizarlos a través de gunzip o dejar cosas sin comprimir en / var / log.

Magus
fuente
Sinopsis, para los perezosos ;-) 1.pgrep (como ps cumple grep) 2.pstree (enumera los procesos en un formato de árbol) 3.bc (un lenguaje de calculador de precisión arbitrario) 4.split (divide archivos grandes en fragmentos) 5 .nl (líneas de números) 6.mkfifo (hace que dos comandos se comuniquen a través de una tubería con nombre) 7.ldd (imprime las dependencias de la biblioteca compartida) 8.col (elimina los avances de línea) 9.xmlwf (comprueba si un documento XML está bien formado) 10.lsof (lista de archivos abiertos)
nombre de usuario
(GNU) ps tiene banderas para imprimir un árbol. ¿Hay algo más que ser más fácil de recordar para pstree?
ptman
¿Por qué sería mejor el rizo que el wget? Y: zgrep y zless son solo el comienzo; También hay zcat y zmore.
Mei
6

ESC + .

'Pega' el último parámetro de la línea anterior en el indicador actual

p.ej

ls -l /home/someuser/somedir/somefile

seguido por

rm ESC + .

se traduce en

rm /home/someuser/somedir/somefile
Bryan
fuente
Eso es genial. No lo sabia.
Andrew Taylor
5

Veo el yescomando muy agradable:

yes | do_you_agree

Desde la página del manual:

NAME
       yes - output a string repeatedly until killed

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

El concepto es que todo en Linux es un archivo .

Todas las configuraciones están en archivos de texto, y todo en Linux se trata como un archivo. Este es un enfoque mucho más simple que hace que sea muy fácil cambiar las cosas en Linux. En Linux, incluso su propio sistema de archivos puede verse como un archivo.

ecleel
fuente
Si te gusta este concepto básico de Unix, te gustará Plan9 OS.
wazoox
4

Es de código abierto. Nada está "oculto" si te molestas en mirar.

Paul Tomblin
fuente
Lamentablemente, el código abierto tiende a hacer que las cosas "ocultas" sean bastante difíciles de ver.
Spoike
55
Habría argumentado lo contrario: si una función está oculta en una aplicación de código cerrado, depende de la tienda de desarrolladores revelarla. En una aplicación de código abierto, la función está ahí para que todos la vean. Además, el número de personas que se desarrollan activamente es generalmente mucho mayor (más personas conocen y hablan sobre características 'ocultas'). Por último, el desarrollo de código abierto está orientado en gran medida a la comunidad, por lo que las personas generalmente se cuentan entre sí sobre características ocultas.
Tom Wright
No estoy siguiendo el razonamiento de @ Spoike en absoluto. Sí, hay más para ver, pero lo que ves es lo que obtienes.
Paul Tomblin
Creo que estás discutiendo sobre la semántica. ¿Qué tal si cambiamos el nombre a "Características ofuscadas de Linux"?
spoulson
Me parcialmente argumentar a favor de Spoike que tal vez las cosas están 'ocultos' debido a la falta general de la buena al día la documentación. Sin decir que esta afirmación es válida para todos los proyectos, sin embargo, hay una gran cantidad de proyectos en los que falta documentación completa (y no me refiero solo a las guías prácticas). Las características administrativas de KDE, especialmente en lo que respecta a la gestión de la configuración dentro de los archivos rc y los efectos reales de establecer un campo específico inmutable es un ejemplo perfecto. En muchos casos me he encontrado buscando en el código fuente para averiguar cómo se manejan las cosas.
Jason Mock
4

La característica oculta es que no hay características ocultas. El sistema proporciona una enorme cantidad de energía a la que tiene acceso completo. Tienes que entender cada pieza y cada herramienta disponible para saber qué poder tienes a tu alcance.

Debe comenzar entendiendo cada comando en / bin, / sbin, / usr / bin, / usr / sbin, y cada archivo virtual en / proc. Lea las páginas de manual, otra documentación y la fuente según sea necesario.

Si no se siente cómodo leyendo una página de manual o leyendo la fuente, esa es su característica oculta.

carlito
fuente
3

grep , awk y sed

parte superior

Brent
fuente
12
Esos no están muy ocultos
Jayrdub
3
  • od- volcar archivos en octal y otros formatos. Útil para verificar, por ejemplo, si hay alguna basura BOM al comienzo del archivo
  • file - ¿Cuál podría ser el tipo de archivo de un archivo dado?
  • lshw, lsusb, lspci- hardware de la lista
  • tracepath - ¿Estamos lidiando con el problema de MTU aquí?
  • netwox contiene más de 200 herramientas relacionadas con la red
  • ip - para la configuración / información de red
  • sysctl - información del sistema de archivos / red / kernel
  • ebtables - iptables para puente
  • vconfig - Configuración de VLAN
  • brctl - Configuración del puente
  • socat- netcatcon esteroides
  • ipgrab- tcpdump-como utilidad que imprime información detallada del encabezado
  • dig - ¿Qué pasa con el servidor DNS ahora?
raspi
fuente
3

teees increíble. ¿Salida a pantalla y archivo de registro? Cheque.

nwahmaet
fuente
3

Acabo de encontrar este hoy:

dmidecode :
informa información sobre el hardware de su sistema como se describe en el BIOS de su sistema de acuerdo con el estándar SMBIOS / DMI. Esta información generalmente incluye el fabricante del sistema, el nombre del modelo, el número de serie, la versión del BIOS, la etiqueta de activos, así como muchos otros detalles de diferente nivel de interés y confiabilidad, según el fabricante. Esto a menudo incluirá el estado de uso de los zócalos de la CPU, las ranuras de expansión (por ejemplo, AGP, PCI, ISA) y las ranuras del módulo de memoria, y la lista de puertos de E / S (por ejemplo, serie, paralelo, USB).

¡Definitivamente hace que responder preguntas sobre somerandomserver27 en las instalaciones de colo sea mucho más fácil!

gharper
fuente
Te gustará lspci, lsscsi, lsusb también :)
wazoox
Sí, yo uso los comandos ls * sobre una base regular - Yo no sabía que había algo que pudiera tirar de información a nivel de BIOS :)
gharper
3

No es realmente una cosa de Linux, más una cosa de Bash: sustitución de procesos,

diff some_local_file <(ssh somehost "cat some_remote_file")

Esto diferencia un archivo local y un archivo remoto recuperado a través de SSH en una línea.

Rog
fuente