[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: saber comandos



El sáb, 02-05-2009 a las 23:53 -0400, Mauricio J. Adonis C. escribió:
> El sáb, 02-05-2009 a las 14:23 -0400, Reiniel Gonzalez Martinez
> escribió:
> > Hola a tod@s, quisiera saber si existe algún comando que me dijera
> > cuanta SWAP, CPU y RAM está utilizando mi servidor, en un determinado
> > momento, no necesito ningún programa que me diga esto como htop por
> > ejemplo solo los comandos….gracias de antemano 
> > 
> > 
> 
> Perdón, no me dí cuenta de tu procedencia, mil disculpas... esta es la
> información más relevante a la que me refería...
> 
clap clap clap
Excelente rectificacion

> Texto tomado de la Web, tiene los permisos adecuados para ello...
> (Espero te sirva)
> 
> DESCUBRIENDO LAS POSIBILIDADES DEL DIRECTORIO /PROC
> Copyright 2005-2008 Sergio González Durán
> Se concede permiso para copiar, distribuir y/o modificar este documento
> siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y
> según los términos de la GNU Free Documentation License, Versión 1.2 o
> cualquiera posterior publicada por la Free Software Foundation.
> autor: Federico Kereki (fkereki.@gmail.com)
> traducción: sergio.gonzalez.duran@gmail.com
> artículo original en inglés: Discover the possibilities of the /proc
> folder
> 
> ________________________________________________________________________
> 
> El directorio /proc es una bestia extraña. Realmente no existe, sin
> embargo puedes explorarlo. Sus archivos de tamaño 0 no son ni binarios
> ni textos, sin embargo puedes examinarlos y desplegar su contenido. Este
> directorio especial contiene todos los detalles de tu sistema Linux,
> incluyendo el kernel, procesos y parámetros de configuración. Estudiando
> el directorio /proc, puedes aprender como los comandos de Linux trabajan
> e incluso es posible realizar tareas administrativas.
> 
> Bajo Linux, todo es administrado como un archivo; incluso los
> dispositivos son accedidos como archivos (en el directorio /dev). Aunque
> que podrías pensar que archivos "normales" son ya sea texto o binarios
> (o posiblemente dispositivos o archivos pipe), el directorio /proc
> contiene una extraño tipo de archivo: archivos virtuales. Estos archivos
> son listados, pero realmente no existen en disco; el sistema operativo
> los crea al vuelo si tratas de leerlos.
> 
> La mayoría de los archivos virtuales siempre tienen una marca de tiempo
> (timestamp) actual, lo que indica que están constantemente siendo
> actualizados. El directorio /proc en si mismo es creado cada vez que
> arrancas tu equipo. Se requiere ser root para poder examinar
> completamente el directorio en su totalidad; algunos de los archivos
> (tales como los relacionados a procesos) son propiedad del usuario que
> los ejecutó. Y aunque casi tdos los archivos son de solo lectura, hay
> algunos pocos con permisos de escritura (notablemente en /proc/sys) que
> permiten realizar cambios en los parámetros del kernel. (Queda claro que
> debes ser muy cuidados con esto)
> 
> 
> 
> Organización del directorio /proc
> El directorio /proc está organizado en directorios virtuales y
> subdirectorios, que agrupan archivos de tópicos similares. Trabajando
> como root el comando ls /proc te despliega algo como lo siguiente:
> 
> #> ls /proc
> 1     2432  3340  3715  3762  5441  815        devices      modules
> 129   2474  3358  3716  3764  5445  acpi       diskstats    mounts
> 1290  248   3413  3717  3812  5459  asound     dma          mtrr
> 133   2486  3435  3718  3813  5479  bus        execdomains  partitions
> 1420  2489  3439  3728  3814  557   dri        fb           self
> 165   276   3450  3731  39    5842  driver     filesystems  slabinfo
> 166   280   36    3733  3973  5854  fs         interrupts   splash
> 2     2812  3602  3734  4     6     ide        iomem        stat
> 2267  3     3603  3735  40    6381  irq        ioports      swaps
> 2268  326   3614  3737  4083  6558  net        kallsyms     sysrq-trigger
> 2282  327   3696  3739  4868  6561  scsi       kcore        timer_list
> 2285  3284  3697  3742  4873  6961  sys        keys         timer_stats
> 2295  329   3700  3744  4878  7206  sysvipc    key-users    uptime
> 2335  3295  3701  3745  5     7207  tty        kmsg         version
> 2400  330   3706  3747  5109  7222  buddyinfo  loadavg      vmcore
> 2401  3318  3709  3749  5112  7225  cmdline    locks        vmstat
> 2427  3329  3710  3751  541   7244  config.gz  meminfo      zoneinfo
> 2428  3336  3714  3753  5440  752   cpuinfo    misc
> Los directorios con números (más sobre esto en un momento) corresponden
> a cada proceso en ejecución; un autoenlace simbólico apunta al proceso
> actual. Algunos archivos virtuales proveen información sobre el
> hardware, tal como /proc/cpuinfo y /proc/interrupts. Otros proporcionan
> información relacionada a los archivos, tales como /proc/filesystems
> o /proc/partitions. Los archivos situados bajo /proc/sys son
> relacionados a la configuración de parámetros del kernel, como ya
> veremos.
> 
> El comando cat /proc/meminfo puede traer a la pantalla algo como lo
> siguiente:
> 
> # cat /proc/meminfo
> MemTotal:       483488 kB
> MemFree:          9348 kB
> Buffers:          6796 kB
> Cached:         168292 kB
> ...varias líneas cortadas...
> Si ejecutas los comandos top o free, es posible que reconozcas algunos
> de estos valores. De hecho, varias utilerias muy conocidas acceden al
> directorio /proc para obtener su información. Por ejemplo, si tu quieres
> saber que tipo de kernel estás corriendo, puedes tratar con uname -srv,
> o ir directamente al origen y teclear cat /proc/version. Algunos otros
> archivos interesantes son:
> 
>       * /proc/apm: Proveé información sobre "Advanced Power Management",
>         si es que esta instalado.
>       * /proc/acpi: Un directorio similar al anterior que ofrece
>         bastantes datos sobre el más moderno ACPI (Advanced
>         Configuration and Power Interface). Por jemplo, para ver si tu
>         laptop está conectada a la corriente AC, puedes usar
>         cat /proc/acpi/ac_adapter/AC/state o en algunas distros
>         cat /proc/acpi/ac_adapter/ACAD/state, y así obtendrás "on line"
>         o "off line".
>       * /proc/cmdline: Muestra los parámetros que fueron pasados al
>         kernel al momento del arranque (boot time). En mi caso contiene
>         lo siguiente:
>         root=/dev/disk/by-id/scsi-SATA_FUJITSU_MHS2040_NLA5T3314DW3-part3 vga=0x317 resume=/dev/sda2 splash=silent PROFILE=QuintaWiFi, que me dice que en que partición está la raíz del filesystem, que modo VGA está en uso y más. El último parámetro tiene que ver con openSUSE's System Configuration Profile Management.
>       * /proc/cpuinfo: Muestra datos sobre el procesador de tu equipo.
>         Por ejemplo, en mi laptop, cat /proc/cpuinfo me da un listado
>         que comienza con:. 
>         processor       : 0
>         vendor_id       : AuthenticAMD
>         cpu family      : 6
>         model           : 8
>         model name      : Mobile AMD Athlon(tm) XP 2200+
>         stepping        : 1
>         cpu MHz         : 927.549
>         cache size      : 256 KB
>         
>         Esto muestra que solo tengo un procesador, marcado como 0 de la
>         familia 80686 (El '6' en la familia de cpu es dígito medio): un
>         AMD Athlon XP, corriendo a poco menos de 1GHZ.
>         
>       * /proc/loadavg: Un archivo relacionado al anterior que muestra la
>         carga promedio del procesador; su información incluye el uso de
>         CPU en el último minuto, últimos cinco minutos y últimos 15
>         minutos, asi como el número de procesos actuales ejecutándose.
>       * /proc/stat: También proporciona estadísticas, pero tomando en
>         cuenta el último boot (arranque).
>       * /proc/uptime: Un archivo pequeño que solo tiene dos números: por
>         cuantos segundos tu sistema ha estado encendido, y cuantos
>         segundos ha estado inactivo.
>       * /proc/devices: Despliega todos los dispositivos actuales
>         configurados y cargados de caracter y bloque. /proc/ide
>         y /proc/scsi proveen datos sobre dispositivos IDE y SCSI.
>       * /proc/ioports: Te muestra información sobre las regiones usadas
>         para comunicaciones de E/S (I/O) de esos dispositivos.
>       * /proc/dma: Muestra los canales "Direct Memory Access" en uso.
>       * /proc/filesystems: Muestra cuáles tipos de sistemas de archivos
>         (filesystems) están soportados por tu kernel. Una porción de
>         esto puede lucir como esto: 
>         nodev   sysfs
>         nodev   rootfs
>         nodev   bdev
>         nodev   proc
>         nodev   cpuset
>         ...some lines snipped...
>         nodev   ramfs
>         nodev   hugetlbfs
>         nodev   mqueue
>                ext3
>         nodev   usbfs
>                ext2
>         nodev   autofs
>         
>         La primera columna muestra si el sistema de archivos está
>         montado en un dispositivo de bloques. En mi caso, tengo
>         particiones configuradas con ext2 y ext3.
>         
>       * /proc/mounts: Muestra todos los "mounts" usados por tu máquina
>         (la salida es muy similar a /etc/mtab).
>         Similarmente, /proc/partititons y /proc/swaps muestra todas las
>         particiones y el espacio swap respectivamente.
>       * /proc/fs: Si estás exportando sistemas de archivos con NFS, este
>         directorio tiene entre sus muchos subdirectorios y archivos
>         a /proc/fs/nfsd/exports, que muestra los sistemas de archivos
>         que están siendo compartidos y sus permisos.
>       * /proc/net: No hay nada mejor que esto para información de red.
>         Describir cada archivo en este directorio requeriría demasiado
>         espacio, pero incluye dev (todos los dispositivos de red),
>         varios archivos relacionados al firewall iptables, estadísticas
>         de red y sockets, información sobre wireless y más.
> 
> También hay varios archivos relacionados a la RAM. Ya mencioné
> anteriormente /proc/meminfo, pero también tienes a tu
> disposición /proc/iomem, que muestra cuanta memoria RAM ha sido
> utilizada por tu sistema y /proc/kcore, que representa la memoría física
> de tu RAM. A diferencia de otros archivos virtuales, /proc/kcore muestra
> un tamaño que es igual a la memoria RAM más una pequeña sobrecarga. (No
> trates de darle cat a este archivo, porque su contenido es binario y
> solo desconfigurará tu pantalla). Finalmente, hay muchos archicos y
> directorios relacionados con el Hardware, tal como /proc/interrupts
> y /proc/irq, /proc/pci (para todos los dispositivos PCI), /proc/bus y
> demás, pero todos estos incluyen información muy específica que la
> mayoría de los usuarios no necesitarán.
> 
> 
> 
> ¿Que hay en un proceso?
> Como ya lo había mencionado, los directorios con nombre numérico
> representan a los procesos en ejecución. Cuando un proceso termina, su
> directorio /proc desaparece automáticamente. Si examinas cualquiera de
> estos directorios mientras existen, encontrarás bastantes archivos,
> táles como:
> 
> attr             cpuset   fdinfo    mountstats  stat
> auxv             cwd      loginuid  oom_adj     statm
> clear_refs       environ  maps      oom_score   status
> cmdline          exe      mem       root        task
> coredump_filter  fd       mounts    smaps       wchan
> Veamos más de cerca a los archivos principales:
> 
>       * cmdline: Contiene el comando que inicio el proceso, con todos
>         sus parámetros.
>       * cwd: Enlace simbólico al directorio actual de trabajo (current
>         working directory cwd) del proceso; enlaces exe a los procesos
>         ejecutables y enlaces root a su directorio superior.
>       * environ: Muestras todas las variables de ambiente para el
>         proceso.
>       * fd: Contiene los descriptores de archivo para el proceso,
>         mostrando cuáles archivos o dispositivos lo están usando.
>       * maps, statm and mem: Trabaja con la memoria en uso por el
>         proceso.
>       * stat and status: Proveé información acerca del estatus del
>         proceso, pero el segundo es mucho más claro que el primero.
> 
> Estos archivos plantean varios retos de programación de shell scripts.
> Por ejemplo, si quieres cazar a los procesos zombie, puedes buscar en
> todos los directorios numerados y verificar si aparece "(Z) Zombie" en
> el archivo status. Una vez necesitaba verificar si cierto programa se
> estaba ejecutando: Lo que hice fue escanear y mirar a los archivos
> cmdline, buscando por la cadena indicada. (También puedes hacer esto con
> la salida del programa ps, pero no es el punto en este artículo). Y si
> quieres programar un programa que se vea mejor que top, toda la
> información que necesitas esta aqui.
> 
> 
> 
> Configurando el sistema: /proc/sys
> /proc/sys no solo proveé información sobre el sistema, tambié facilita o
> permita cambiar parámetros del kernel al vuelo, y habilta o deshabilita
> características de usabilidad. (Por supuesto, esto puede dañar tu
> sistema, considérate avisado.)
> 
> Para determinar si puedes configurar un archivo o es solo de lectura,
> usa ls -ld; si un archivo tiene el atributo "w", significa que puedes
> configurar el kernel de alguna manera. Por ejemplo, ls
> -ld /proc/kernel/* comienza como esto:
> 
> dr-xr-xr-x 0 root root 0 2008-01-26 00:49 pty
> dr-xr-xr-x 0 root root 0 2008-01-26 00:49 random
> -rw-r--r-- 1 root root 0 2008-01-26 00:49 acct
> -rw-r--r-- 1 root root 0 2008-01-26 00:49 acpi_video_flags
> -rw-r--r-- 1 root root 0 2008-01-26 00:49 audit_argv_kb
> -r--r--r-- 1 root root 0 2008-01-26 00:49 bootloader_type
> -rw------- 1 root root 0 2008-01-26 00:49 cad_pid
> -rw------- 1 root root 0 2008-01-26 00:49 cap-bound
> Se puede observar que bootloader_type no está hecho para ser cambiado,
> pero otros archivos si lo están. Para cambiar un archivo, puedes usar
> algo como esto:
> 
> echo 10 > /proc/sys/vm/swappiness
> Este ejemplo en particular cambiará el rendimiento de la paginación de
> la memoria virtual. Por cierto, estos cambios son solo temporales, y sus
> efectos desapareceran cuando tu reinicies el sistema; usa sysctl y el
> archivo de configuración /etc/sysctl.conf para afectar los cambios de
> manera permanente.
> 
> Veamos el nivel superior del directorio /proc/sys:
> 
>       * debug: Contiene (¡sorpresa!) información para depuración
>         (debugging). Esto es muy bueno si estás metido en el desarrollo
>         del kernel.
>       * dev: Proveé parámetros para dispositivos específicos en tu
>         sistema; por ejemplo, checa el directorio dev/cdrom.
>       * fs: Ofrece datos sobre cada posible aspecto del sistema de
>         archivos.
>       * kernel: Te permite afectar la configuración del kernel y su
>         operación directamente.
>       * net: Te permite controlar aspectos relacionados a la red. Se
>         cuidadoso, porque puedes perder conectividad.
>       * vm: Trata con el subsistema VM.
> 
> 
> Conclusión
> El directorio especial /proc proveé información completa y detallada
> acerca de los trabajos internos de Linux y te permite ajustar a la
> medida muchos aspectos de su configuración. Si te tomas algo de tiempo
> para aprender las posibilidades de este directorio, estarás en posición
> de obtener un sistema Linux más perfecto. ¿Y no es acaso lo que todos
> queremos?.
> 
> 
> Saludos, 
> Mauricio J. Adonis C.
> ------------------------------------------
> Usuario Linux  # 482032
> Usuario Ubuntu #  25554
> Ubuntu Code of Conduct - 1.0.1 signatario
> (FD9329AC66C0907805831BF8E8D0B29A3AE3D244)
> ------------------------------------------


Reply to: