En UNIX, ¿cómo encontrar los commands más utilizados en la historia de Unix?

En UNIX, ¿cómo encontrar los commands más utilizados en la historia?

Más bien depende de lo que pretendes con 'command'. Desde una perspectiva, un command es simplemente un ejecutable llamado desde la línea de command, por lo tanto, ls y ls -alh /tmp/foo/bar/*tar.bz son los dos commands ls . Otra perspectiva es que un command es la sum de sus partes, lo que significa que el ejemplo anterior es de 2 commands distintos.

Si su intención es contar commands totalmente únicos en el historial, podría ejecutar: history | cut -d' ' -f4- | uniq -c | sort -n history | cut -d' ' -f4- | uniq -c | sort -n

Tenga en count que esto se probó en un sistema Debian, la syntax de salida de su command de historial puede variar ligeramente. Ajuste el número '4' en el command para seleccionar columnas alternativas.

Si desea considerar solo el primer command sin arguments, entonces podría ejecutar: history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n

Para include los arguments, pero no los commands encadenados o intercalados que siguen, puede ejecutar: history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n

Tenga en count que cada uno de estos ordera la cantidad de commands numéricamente con la frecuencia más alta que aparece al final.

Otro enfoque sería usar la contabilidad de processs de BSD , que también está disponible en Linux (aunque no sé si está habilitado por defecto). Básicamente mantiene una pestaña de todos los progtwigs que se ejecutan (y algunas otras medidas, como el time de CPU consumido, etc.) durante el time que la contabilidad esté activa. A partir de allí, se encuentran disponibles algunas statistics agregadas, entre otras, una list de todos los progtwigs que se ejecutan en el sistema, orderados por etc., la cantidad máxima de usos.

Los commands que se deben search son lastcomm para el logging en ejecución y sa para las statistics agregadas. Volviendo a la pregunta original, suponiendo que el sistema en cuestión hubiera tenido la contabilidad habilitada desde que se instaló, sa -n daría una list de todos los commands ejecutados en el sistema (para todos los usuarios), orderados por frecuencia. Para las tuberías, cada parte de la tubería se contará por supuesto por separado, ya que cada parte comprende un nuevo process para ser bifurcado.

Para más detalles, la revista Linux tiene un artículo que explica el funcionamiento. Yo mismo obtuve la idea de la guía de NetBSD ; muchos de los consejos de administración más generics no son específicos de NetBSD, pero también se aplican a otros sistemas Unix.

He visto las respuestas de vucar y tok , son muy útiles, pero también podrías usar la asombrosa herramienta awk :

si quiere una list de commands que usa con más frecuencia:

 history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head 

para encontrar el command más usado:

 history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -1 

para mí fue vi :

 94 vi 

Puede usar un command de corte único:

 history | cut -c 7-100 | sort | uniq -c | sort -nr 

Los 20 commands de CLI más utilizados:

 history | cut -c7- | sort | uniq -c | sort -nr | head -n 20 

Si es solo para la session actual, entonces hash sin arguments.

    Intereting Posts