In questo tutorial, approfondiamo il comando Linux Strace e dimostriamo alcuni usi di esempio.
Sintassi di comando di base
Il comando Strace prende la seguente sintassi:
Comando $ Opzioni Strace
Come installare il comando Linux Strace
La più moderna distribuzioni Linux viene fornita con utilità Strace per impostazione predefinita. Tuttavia, se Strace non è installato sul sistema per qualsiasi motivo, segui i passaggi seguenti per installarlo.
Su Debian / Ubuntu
Se stai eseguendo sistemi basati su Debian / Ubuntu, esegui:
$ sudo APT Installa Strace
Su RHEL / CENTOS
$ sudo yum installa strace
Per verificare che Strace sia installato, è possibile controllare la sua versione come mostrato.
$ Strace -Version
Ora controlliamo alcuni usi di esempio.
Comando Strace di base
Nel suo formato più elementare, il comando Strace traccia e visualizzerà le chiamate di sistema, gli argomenti (racchiusi in parentesi o parentesi quadrati) e la chiamata eseguibile.
Nell'esempio seguente, possiamo vedere gli argomenti dell'esecuzione dello script Ciao.sh, Chiama chiuso tra parentesi nella prima riga.
$ Strace ./Ciao.sh
All'ultima riga, puoi vedere lo stato di uscita del comando, in questo caso, 0. Ciò implica che il comando è stato eseguito correttamente senza alcun errore. Un codice di uscita di -1 significa che è stato riscontrato un errore durante l'esecuzione.
Conta le chiamate di sistema
Se si desidera ottenere il numero di chiamate di sistema, usa il -C Opzione per il conteggio come mostrato.
$ Strace -C ./Ciao.sh
Dall'output sopra, è possibile vedere il numero di chiamate di sistema effettuate, incluso effettuare le chiamate.
Visualizza chiamate di sistema specifiche con Strace
Inoltre, puoi scegliere di visualizzare la natura delle chiamate di sistema effettuate con Strace usando il -e Opzione seguita dalla natura della chiamata di sistema. Nello snippet mostrato, abbiamo visualizzato le chiamate di sistema di scrittura e lettura.
$ Strace -e Trace = scrivi ./Ciao.sh
$ strace -e trace = leggi ./Ciao.sh
Traccia chiamate di sistema di rete
È possibile limitare Strace alla visualizzazione delle chiamate di sistema di rete specificando il tipo di chiamata. Qui. Trace = rete indica che intendiamo ottenere la chiamata di rete del comando di rete ping 8.8.8.8 -C 4.
$ Strace -e Trace = Network ping 8.8.8.8 -C 4
Traccia le chiamate del sistema di segnale
Per le chiamate relative al sistema, utilizzare l'argomento come indicato nel comando seguente. Il comando stampica il call segnale per il ping 8.8.8.8 -C 4 comando.
$ Strace -e Trace = Signal ping 8.8.8.8 -C 4
Stampa il timestamp di ciascuna chiamata di sistema
Per estrarre il timestamp per ogni chiamata di sistema, utilizzare il -R Opzione come dimostrato nel seguente comando.
$ Strace -r ping 8.8.8.8 -C 4
Come puoi vedere, un timestamp relativo viene stampato per ogni chiamata di sistema. La differenza di tempo tra le chiamate di sistema successive viene catturata e registrata.
Visualizza la durata spesa per effettuare chiamate di sistema
Inoltre, è possibile stampare la durata del tempo trascorso per ogni chiamata di sistema utilizzando il -T Opzione come mostrato. Il tempo trascorso è indicato nell'ultima colonna come indicato.
$ Strace -t ping 8.8.8.8 -C 4
Visualizza l'ora esatta di ogni chiamata di sistema
Per stampare l'ora effettiva o esatta delle chiamate di sistema, invocare il -T Opzione come mostrato. Il tempo di clock in tempo reale o muro è stampato nella prima colonna.
$ Strace -t ./Ciao.sh
Visualizza il puntatore di istruzioni per ogni chiamata
Per stampare il puntatore di istruzioni per ogni chiamata di sistema, utilizzare il -io opzione.
$ Strace -I ./Ciao.sh
Salva l'output delle chiamate di sistema in un file di testo
Infine, il comando Strace ti dà l'opzione di salvare l'output in un file di testo, come mostrato.
$ STRACE -O Sample_output.TXT ./Ciao.sh
Qui, Sample_output.TXT è il file di output, mentre ./Ciao.sh è il comando il cui sistema chiama il sistema stiamo rintracciando.
Avvolgendo
Il comando Strace è un'utilità di linea di comando utile e potente che aiuta a debug applicazioni, comandi e processi, soprattutto se non si dispone del codice sorgente disponibile. È lo strumento preferito per gli sviluppatori di software e gli amministratori di sistema.