No UNIX, como encontrar os comandos mais usados na história?
No UNIX, como encontrar os comandos mais usados na história?
Respostas:
Depende do que você pretende com 'comando'. De uma perspectiva de um comando é simplesmente um executável chamado a partir da linha de comando, portanto, ls
e ls -alh /tmp/foo/bar/*tar.bz
são ambos o comando ls
. Outra perspectiva é que um comando é a soma de suas partes, significando que o exemplo acima é de 2 comandos distintos.
Se sua intenção é contar comandos totalmente únicos na história, você pode executar: history | cut -d' ' -f4- | uniq -c | sort -n
Por favor, esteja ciente de que isso foi testado em um sistema Debian, a sintaxe de saída do seu comando history pode variar um pouco. Ajuste o número '4' no comando para selecionar colunas alternativas.
Se você deseja considerar apenas o primeiro comando sem argumentos, poderá executar: history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n
Para incluir os argumentos, mas nenhum comando encadeado ou canalizado a seguir, você pode executar: history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n
Observe que cada um desses tipos classifica o número de comandos numericamente com a frequência mais alta exibida por último.
sort
antes uniq
de obter uma contagem precisa, uma vez que apenas verifica linhas adjacentes:history | cut -d' ' -f4- | cut -d' ' -f1 | sort | uniq -c | sort -n
Vi respostas vucar e tok , elas são muito úteis, mas você também pode usar a ferramenta incrível awk
:
se você deseja listar os comandos que você usa com mais frequência:
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
para encontrar o comando mais usado:
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -1
para mim foi vi
:
94 vi
Outra abordagem seria usar a contabilidade de processo BSD , que também está disponível no Linux (embora eu não saiba se está ativada por padrão). Ele basicamente mantém uma guia de todos os programas executados (e algumas outras medidas, como tempo de CPU consumido etc.) enquanto a contabilidade estiver ativa. A partir daí, algumas estatísticas agregadas estão disponíveis, entre outras: tipo de lista de todos os programas já executados no sistema, classificados por etc. número principal de usos.
Os comandos a serem procurados são lastcomm
para o log de execução e sa
as estatísticas agregadas. Voltando à pergunta original, supondo que o sistema em questão tivesse a contabilidade ativada desde a instalação, sa -n
forneceria uma lista de todos os comandos já executados no sistema (para todos os usuários), classificados por frequência. Para os oleodutos, cada parte do oleoduto seria contada separadamente, pois cada parte compreende um novo processo a ser bifurcado.
Para mais detalhes, a revista Linux possui um artigo explicando o funcionamento. Eu mesmo recebi a idéia do guia NetBSD ; muitas das dicas de administração mais genéricas não são específicas para o NetBSD, mas também se aplicam a outros sistemas Unix.