Funzionalità nascoste di Linux


64

Risposte:


52

Per far funzionare la palla, trovo lo schermo essenziale:

Quando viene chiamato screen, crea una singola finestra con una shell (o il comando specificato) e quindi si fa da parte in modo che tu possa usare il programma come faresti normalmente. Quindi, in qualsiasi momento, è possibile creare nuove finestre (a schermo intero) con altri programmi (incluse più shell), uccidere la finestra corrente, visualizzare un elenco delle finestre attive, attivare e disattivare la registrazione dell'output, copiare il testo tra Windows, visualizzare la cronologia di scorrimento, passare da una finestra all'altra, ecc. Tutte le finestre eseguono i loro programmi in modo completamente indipendente l'una dall'altra. I programmi continuano a essere eseguiti quando la loro finestra non è attualmente visibile e anche quando l'intera sessione dello schermo è staccata dal terminale degli utenti.


qualcuno ha qualcosa da dire sui profili dello schermo con Ubuntu 9.04? li ho guardati per un po 'ma non ho dato loro abbastanza tempo per essere in grado di dire se sono effettivamente utili o hanno un bell'aspetto
xkcd150

12
OH MIO DIO! schermo di nuovo?
setatakahashi,

@ xkcd150, sono abbastanza simili, ma la più grande vittoria è la linea di stato. Mostra tutte le finestre più un mucchio di cose sulla macchina.
staticsan

E se vuoi una buona versione dello schermo usa tmux;)
persona il

45

Forse non li uso tutti i giorni, ma li uso spesso:

  • strace Scopri quali file vengono caricati dal processo.
  • htop Un top più bello.
  • mtr ping + traceroute combinati
  • lynx / links / w3m Nel caso in cui sia necessaria la navigazione della console
  • ettercap Grande sniffer di rete (lo preferisco su WireShark)
  • scripting bash Ogni amministratore di * nix dovrebbe saperlo.
  • Un linguaggio di programmazione Per le cose più complesse, stai lontano dallo script bash e usa qualcosa come python / perl / ruby ​​/ tcl / ... (io uso Lisp)
  • Midnight Commander può essere ottimo per le persone a cui piaceva il comandante Norton.
  • irssi Non sai mai quando vuoi semplicemente chiedere qualcosa su IRC.
  • wget / curl Scarica roba dalla riga di comando.
  • scp Copia roba su ssh
  • lftp / ncftp Client FTP per console validi (tramite script).
  • iotop Controlla cosa sta stressando i tuoi dischi
  • nmap buono scanner per porte

Vorrei aggiungere anche in cima
PiL

Entrambi i documenti TLH bash sono pessimi.
adattamento

33

Sono stato sorpreso di scoprire che è possibile eseguire applicazioni GUI remote su SSH, utilizzando il parametro "-X". Per esempio:

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

La finestra di gedit appare sul mio computer locale, modificando il file "my.cnf" sul server.

Suppongo che funzioni solo se il tuo computer client ha un ambiente X - in altre parole, non su Windows. Ma funziona benissimo sul mio Mac!


9
usando xming sourceforge.net/projects/xming puoi farlo funzionare anche su Windows!
xkcd150,

3
L'inoltro SSH esegue la crittografia che rallenta tutto. Se sei su una LAN sicura puoi semplicemente inviare programmi da un desktop Linux a un'altra sessione X di computer Linux. Molto maneggevole. Ero solito girare film tramite mplayer come quello sul mio desktop principale che era collegato allo stero ad un'estremità del salotto. L'audio del mplayer sarebbe quindi uscito dallo stereo ma l'immagine sarebbe arrivata al mio laptop (via ethernet) all'altra estremità del salotto che era collegato al proiettore di dati. Fantasia di film casalingo.
Gareth,

5
Invece di aggiungere -X ogni volta che potresti aggiornare ssh_config con una linea host che corrisponda ai tuoi host interni e allo spazio degli indirizzi 'Host .domain.org 192.168. . * 'e abilita l'opzione' ForwardX11 yes '
Zoredache,

Mi sono abituato a -Y, ma non ho mai imparato la differenza.
Notmyfault,

-Y è attendibile l'inoltro X11. È molto più sicuro di -X (semplice inoltro X11). A proposito molte configurazioni sshd predefinite non consentiranno -X ora, solo -Y. Se si utilizza -X si verificano strani errori, le app che si chiudono con errori "MIT MAGIC COOKIE", quindi si utilizza -Y. Conclusione: non usare -X, solo -Y
wazoox il

33

Spesso viene ignorato, è uno strumento molto utile. lsof ti consente di visualizzare un elenco di tutti i file aperti sul sistema, chi / cosa lo sta usando, ecc.

Per esempio:

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

Ora vedo che sono connesso a una shell in un altro terminale e / mnt / hardy è la mia directory di lavoro corrente. Quindi posso uccidere quella shell, o andare all'altro terminale e uscire da quella directory in modo che possa essere smontato.

Questo è davvero un esempio banale, è molto utile anche per ripulire le occasionali infestazioni da "bot". Le opzioni sono ampie, vedi man lsof per ulteriori informazioni.


2
fuser è un altro bel trucco, se ti interessa solo un file o un mountpoint.
bdonlan,

1
Nascosto di sicuro. Sto cercando questa funzione da anni. (Sono un noob però)
CG

Isof è davvero meraviglioso. Combinato con l'idea UNIX di tutto (beh, quasi) essere un file, può fare cose incredibili. Molte cose che inizialmente sembrano impossibili o difficili da fare si rivelano risolvibili con un oneliner grazie ad alcune delle opzioni di lsof.
ptman,


26

Lo stack di rete può essere lasciato in esecuzione dopo l'arresto del sistema. Non so se questo è attuale con la serie 2.6.x di kernel, ma nelle versioni precedenti, è possibile configurare il firewall / routing, quindi arrestare il sistema senza arresto , lasciando in esecuzione solo lo stack di rete. Ciò consentirebbe di creare un firewall economico (anche se statico) che "non può essere hackerato" - perché non c'è nulla da hackerare, poiché non ci sono programmi o servizi, solo la parte dello stack di rete del kernel che passa i pacchetti avanti e indietro. ..


Wow. Veramente cool! +1 Ho sicuramente intenzione di provarlo su un kernel 2.6 quando avrò del tempo libero.
wzzrd,

È fantastico, ma come è irremovibile? Il kernel non deve ancora essere in esecuzione? O è un kernel minimo?
cdeszaq,

7
"Kernel"? Cos'è questo "Kernel" di cui parli? Quando entra in questa modalità, l'unico codice in esecuzione è / stack di rete /. Nessuna pianificazione delle attività, nessuna API, codice, servizi, spazio utente, niente, zip, nada ... solo il debole suono dei pacchetti che risuona attraverso Ethernet ... Pensalo come più di un dispositivo incorporato con due funzioni nella vita - accetta e invia pacchetti. Suppongo che tu possa "hackerare" questo nel senso che puoi provare a sfogliare i pacchetti, ma non c'è niente che puoi / direttamente / attaccare nello stack stesso.
Avery Payne,

24

Mi piace "individuare" - un modo molto più semplice per trovare i file rispetto alla "trova. -Name xxxx -print" gnarly. Nota che devi usare il comando updatedb con esso per un tuo indice di file aggiornato; vedere le pagine man per i dettagli.


4
Fortunatamente, molte distro Linux includono updateb in cron.daily :-).
Matt Solnit,

1
È anche molto, molto più veloce di trovare.
CG

Va sottolineato che alcune persone considerano individuare un rischio per la sicurezza. Detto questo, lo uso sempre :-)
baudtack,

Le recenti versioni di Locate hanno l'opzione -i per ignorare il caso, molto utile.
niXar,

E per quanto riguarda la sicurezza, esistono versioni di localizzazione sicura che consentono di "trovare" solo i file che l'utente che ha effettuato l'accesso può effettivamente visualizzare.
Jürgen A. Erhard,

19

Trovo "ngrep" davvero utile per il debug del codice di rete su server remoti senza dover puntare i file tcpdump in giro:

ngrep -d any -W byline port 80

ad esempio, ti mostrerà richieste e risposte HTTP in tempo reale.

Un'altra cosa che ho trovato utile di frequente è il passaggio "-e" allo strace:

strace -p <pid> -e trace=open

mostrerà tutti i syscall open () per un dato pid e

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

escluderà tutte le chiamate a rt_sigprocmask () dall'output (utile per il debug del codice RoR, che sembra fare moltissime chiamate quando viene costruito per usare pthreads).


Ora sto davvero iniziando ad amare Linux. :)
IL

17
apropos

DESCRIZIONE Ogni pagina di manuale ha una breve descrizione disponibile al suo interno. apropos cerca le descrizioni per istanze di parole chiave.

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)

Uso sempre man -kinvece, ma ho problemi di ortografia.
McTlr

15

Per fortuna ne ho avuto bisogno solo un paio di volte, ma il tasto Magic SysRq rimane ancora una delle mie funzioni nascoste preferite di tutti i tempi.

Alt + SysRq + RSEIUB


1
+1 Magic SysRQ è d'oro. Ricorda 'Allevare elefanti è così noioso' come un suggerimento in quale ordine usare le chiavi, sebbene l'ordine non sia incastonato nella pietra. Ecco perché RSEIUB è usato sopra: sincronizza i dati su disco prima di dare i comandi 'terminate' e 'kill' invece del contrario. L'ordine corretto è discutibile.
wzzrd,

Un altro ausilio alla memoria: BUSIER (scritto al contrario).
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

12

Non è poi così nascosto, ma può essere così per coloro che non hanno esperienza, ma mi piace davvero poter dare elenchi e lasciare che bash li espanda come in:

cp arq{,.bak}

che è lo stesso della digitazione

cp arq arq.bak

Uso anche le scorciatoie della cronologia (non credo sia il termine giusto, ma ...)

!! 

per ripetere l'ultimo comando, oppure

^foo^bar 

per sostituire foo con barra nell'ultimo comando


12

ssh-copy-id per il trasferimento di chiavi ssh. Il vecchio modo era di ricoprire la chiave su ssh e ancora più vecchio era di scappare la chiave e poi di ricamarla. Se stai usando una porta ssh non standard, questo farà il trucco per te ..

ssh-copy-id -i / path / to / key '-p nomehost non standardport'

Altro saggio ..

ssh-copy-id -i / path / to / key nomehost


11

Console virtuali. Molte persone sanno come usare (Ctrl-) Alt-F1 per arrivare alla prima console, ecc., Ma cosa succede se ne hai più di 12? Puoi usare Alt-Sinistra e Alt-Destra per scorrere le altre. :-D


wow, amico, a quel punto, usa lo schermo. hehe :) ce l'ho nel mio .screenrc per mostrare una barra delle applicazioni in basso per farmi sapere che gli schermi sono aperti
Roy Rico

e quale id la dodicesima console esegue un ambiente desktop (ad esempio gnome)?
Behrooz,

11

Mi piace il pacchetto debian-goodies:

Descrizione: piccole utility in stile toolbox per sistemi Debian
 Questi programmi sono progettati per integrarsi con strumenti shell standard,
 estenderli per operare sul sistema di packaging Debian.
 .
  dgrep - Cerca una regex in tutti i file nei pacchetti specificati
  dglob - Genera un elenco di nomi di pacchetti che corrispondono a un modello
 .
 Anche questi sono inclusi, perché sono utili e non giustificano
 i loro pacchetti:
 .
  debget: recupera un .deb per un pacchetto nel database di APT
  dpigs - Mostra quali pacchetti installati occupano più spazio
  debman - Visualizza facilmente le pagine man da un .deb binario senza estrarre
  debmany - Seleziona le manpage dei pacchetti installati o disinstallati
  checkrestart - Aiuta a trovare e riavviare i processi che utilizzano vecchi
                 versioni di file aggiornati (come le librerie)
  popbugs - Visualizza un elenco personalizzato di bug critici per il rilascio basato su
                 pacchetti che usi (usando i dati del concorso di popolarità)

e anche moreutils, che sono fondamentalmente fantastici strumenti per tubi su ruote:

Descrizione: utilità unix aggiuntive
 Questa è una raccolta crescente di strumenti unix che nessuno pensava
 per scrivere trent'anni fa.
 .
 Finora include le seguenti utilità:
  - sponge: assorbire l'input standard e scrivere su un file
  - ifdata: ottiene informazioni sull'interfaccia di rete senza analizzare l'output di ifconfig
  - ifne: esegue un programma se lo standard input non è vuoto
  - vidir: modifica una directory nel tuo editor di testo
  - vipe: inserisce un editor di testo in una pipe
  - ts: input standard timestamp
  - combina: combina le linee in due file usando operazioni booleane
  - pipì: tee input standard per tubi
  - zrun: decomprime automaticamente gli argomenti da comandare
  - errore di ortografia: inoltra due comandi, restituendo lo stato di uscita del primo
  - isutf8: controlla se un file o un input standard è utf-8
  - lckdo: esegue un programma con un blocco tenuto
Pagina iniziale: http://kitenet.net/~joey/code/moreutils/

8

Una grande "funzionalità" che uso ogni giorno al lavoro: la possibilità di avere SSH in ascolto sulla porta 443 in modo da poter creare un tunnel che bypassa il mio firewall di lavoro, permettendomi di eseguire un proxy SOCKS locale tramite tunneling tramite SSH sul mio server Linux con connessione Internet .

Posso ignorare completamente il mio firewall aziendale.


3
Mi fa sempre ridere ridere pensare alle persone che credono che tu possa "bloccare" una rete. Se lasci una sola porta per far uscire il traffico, sei fregato.
baudtack,

cosa succede se vedono 3 GB di dati che fluiscono attraverso la porta 443 dal tuo computer?
Wadih M.,

Aggiungi il cavatappi al nix e anche i proxy https non sono un problema !!
Niall Donegan,

@ Wadih.M: questo è il modo: da ssh a 443, rispedisci un pacchetto udp dalla macchina remota a un'altra porta con netcat.invia un altro pacchetto udp da dove sei al machine.congrats.la porta punzonata.
Behrooz,

8

Mi è sempre piaciuto "man hier" per aiutare le persone che non conoscono il sistema.


8

Forse una delle grandi funzionalità di Linux, al contrario di Windows, è che non ci sono quasi nessuna funzionalità nascosta dal design. Spero che se qualsiasi funzionalità non documentata sia abbastanza importante da conoscere la comunità fa il suo lavoro.


7

Eccone alcuni che ho usato regolarmente:

  • sar - mostra l'attività del sistema
  • vmstat - statistiche della memoria virtuale
  • iostat - io stats
  • pkill- pgrepMi piace ma ti consente di eliminare l'ID del processo restituito
  • xargs -I<string> - consente di sostituire le stringhe con i dati convogliati
  • at - pianificare un'attività
  • tkdiff- diffutilità grafica

Questi probabilmente non sono "nascosti", ma li trovo estremamente utili:

  • df -hk - mostra l'utilizzo del disco in un formato leggibile dall'uomo
  • ls -ltr - elenca i file ordinati per data
  • while :; do...done- Sostituzione (Bash) watchse non disponibile
  • perl -e- esegue uno Perlsnippet dalla riga di comando
  • free -kt - mostra informazioni sulla memoria (kilobyte con totale)

Penso che sia più facile scrivere while true; do ...diwhile [ 1 ]; do ...
ptman,

6

Inizia con questo articolo con alcuni grandi trucchi per Linux. Il mio preferito è pstree, che mostra i tuoi processi in un formato ad albero in modo da poter vedere quale processo ha generato quale.

curl batte l'inferno di wget per praticamente qualsiasi cosa tu voglia usare wget.

zgrep e zless sono perfetti per la ricerca di file di registro compressi con gzip quindi non è necessario reindirizzarli con gunzip o lasciare roba non compressa in / var / log.


Sinossi, per i più pigri ;-) 1.pgrep (come ps incontra grep) 2.pstree (elenca i processi in un formato ad albero) 3.bc (un linguaggio di calcolatrice di precisione arbitrario) 4.split (divide i file di grandi dimensioni in blocchi) 5 .nl (linee di numeri) 6.mkfifo (fai comunicare due comandi attraverso una pipe denominata) 7.ldd (stampa le dipendenze della libreria condivisa) 8.col (rimuove i feed di linea) 9.xmlwf (controlla se un documento XML è ben formato) 10.lsof (elenca i file aperti)
nome utente

(GNU) ps ha flag per la stampa di un albero. C'è qualcos'altro oltre a essere più facile da ricordare che è successo per pstree?
ptman,

Perché arricciare sarebbe meglio di wget? E: zgrep e zless sono solo l'inizio; ci sono anche zcat e zmore.
Mei,

6

ESC + .

'Incolla' l'ultimo parametro dalla riga precedente nel prompt corrente

per esempio

ls -l /home/someuser/somedir/somefile

seguito da

rm ESC + .

si traduce in

rm /home/someuser/somedir/somefile

È fantastico Non lo sapevo.
Andrew Taylor,

5

Vedo il yescomando molto bello:

yes | do_you_agree

Dalla pagina man:

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

5

Il concetto è che tutto in Linux è un file .

Tutte le configurazioni sono in file di testo e tutto in Linux viene trattato come un file. Questo è un approccio molto più semplice che rende molto facile cambiare le cose in Linux. In Linux anche il tuo filesystem stesso può essere visto come un file.


Se ti piace questo concetto Unix di base, ti piacerà il sistema operativo Plan9.
Wazoox,

4

È open source. Nulla è "nascosto" se ti preoccupi di guardare.


Purtroppo l'open source tende a rendere le cose "nascoste" piuttosto difficili da vedere.
Spoike,

5
Avrei sostenuto il contrario: se una funzione è nascosta in un'app di origine chiusa, spetta al negozio di sviluppo rivelarla. In un'app open source, la funzione è disponibile per tutti. Inoltre, il numero di persone che si stanno sviluppando attivamente è generalmente molto più grande (più persone conoscono e parlano di funzionalità "nascoste"). Infine, lo sviluppo dell'open source è in gran parte orientato alla comunità, quindi le persone generalmente si parlano delle funzionalità nascoste.
Tom Wright,

Non sto seguendo affatto il ragionamento di @ Spoike. Sì, c'è altro da guardare, ma quello che vedi è quello che ottieni.
Paul Tomblin,

Penso che tu stia litigando per la semantica. Che ne dici di rinominare "Funzionalità offuscate di Linux?"
spoulson,

Direi in parte a favore di Spoike che forse le cose sono "nascoste" a causa della generale mancanza di una buona documentazione aggiornata . Per non dire che questa affermazione vale per tutti i progetti, tuttavia ci sono molti progetti in cui la documentazione completa (e non intendo solo le guide per l'utente) è in qualche modo carente. Le funzionalità amministrative di KDE, in particolare per quanto riguarda la gestione delle impostazioni all'interno dei file rc e gli effetti reali dell'impostazione di un campo specifico immutabile, sono un esempio perfetto. In molti casi mi sono ritrovato a cercare nel codice sorgente per scoprire come vengono gestite le cose.
Jason Mock,

4

La funzione nascosta è che non ci sono funzioni nascoste. Il sistema fornisce un'enorme quantità di energia a cui hai accesso completo. Devi capire ogni sua parte e ogni strumento disponibile per sapere quale potere ha a portata di mano.

Dovresti iniziare capendo ogni comando in / bin, / sbin, / usr / bin, / usr / sbin e ogni file virtuale in / proc. Leggi le manpage, altra documentazione e la fonte, se necessario.

Se non ti senti a tuo agio nel leggere una pagina man o leggere la fonte, questa è la tua funzione nascosta.



3
  • od- scaricare file in ottali e altri formati. Utile per verificare, ad esempio, se c'è qualche schifezza della DBA all'inizio del file
  • file - quale potrebbe essere il tipo di file di un determinato file?
  • lshw, lsusb, lspci- elenco dell'hardware
  • tracepath - stiamo affrontando il problema MTU qui?
  • netwox contiene oltre 200 strumenti correlati alla rete
  • ip - per configurazione / informazioni di rete
  • sysctl - informazioni sul filesystem / rete / kernel
  • ebtables - iptables per bridge
  • vconfig - Configurazione VLAN
  • brctl - Configurazione bridge
  • socat- netcatsu steroidi
  • ipgrab- tcpdump-come utility che stampa informazioni dettagliate sull'intestazione
  • dig - Che succede con il server DNS adesso?

3

teeè fantastico. Uscita su schermo e file di registro? Dai un'occhiata.


3

L'ho appena trovato oggi:

dmidecode :
riporta le informazioni sull'hardware del sistema come descritto nel BIOS del sistema secondo lo standard SMBIOS / DMI. Queste informazioni in genere includono il produttore del sistema, il nome del modello, il numero di serie, la versione del BIOS, l'etichetta delle risorse e molti altri dettagli di diverso livello di interesse e affidabilità a seconda del produttore. Ciò spesso include lo stato di utilizzo dei socket della CPU, degli slot di espansione (ad es. AGP, PCI, ISA) e degli slot dei moduli di memoria e l'elenco delle porte I / O (ad es. Seriale, parallelo, USB).

Rende decisamente più facile rispondere alle domande su somerandomserver27 presso la struttura di colore!


Ti piacerà anche lspci, lsscsi, lsusb :)
wazoox,

Sì, uso regolarmente i comandi ls * - non mi rendevo conto che c'era qualcosa che potesse estrarre le informazioni sul livello del BIOS :)
gharper

3

Non proprio una cosa Linux, più una cosa Bash: sostituzione di processo,

diff some_local_file <(ssh somehost "cat some_remote_file")

Ciò differisce un file locale e uno remoto recuperati tramite SSH in una riga.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.