Muchas veces para realizar tareas simples, pero programadas necesitamos hacer que un script revise si existe un archivo determinado, esto es bastante simple, pero depende muchas veces del Sistema Operativo, en general, en bash en linux, se puede hacer con un:
if [ -e "rutadelarchivo" ]
then
comandos
fi
Actualización 24-04. Al usar el -e para algo como /home/katador/archivo*, es decir, me interesa saber si existen archivos que comiencen con la palabra archivo, al usar el -e sólo, no lo reconoce, entonces es factible usar el truco de:
if [ ls /home/katador/archivo* >/dev/null ]
then
comandos
fi
Esto quiere decir que si ejecutamos un ls /home/katador/archivo* y existen archivos arrojará el listado de archivos, de lo contrario, arroja un error y utilizando esta misma salida del comando, se utiliza el If, pues sí existen archivos, sera TRUE, de lo contrario, al arrojar el error lo considera FALSE.
El >/dev/null, es la redirección del comando, para que no muestre nada por la salida estandar.
Este blog tiene la idea de acercar un poco el tema de las herramientas computacionales, usando preferencialemente Linux, y traducir a "cristiano" todos esos programas, software y otras palabras raras que usan los que saben de computación y aquellos que dicen saber también. Por eso aquí va un filtro con cosas útiles e intentado ser claro, cualquier cosa... por mail, msn, comentarios, etc como quieran, manden preguntas, felicitaciones, reclamos, inquietudes, etc. etc.
Buscar aquí
28 febrero 2012
08 febrero 2012
Revisar disco utilizado por directorios en HP-UX
Para revisar el disco utilizado en las distintas carpetas, difiere un poco en HPUX de linux. Por defecto du muestra todas las subcarpetas, tal como en Linux, pero para obtener los mismos resultados cambian los parametros:
- para obtener el tamaño de sólo una carpeta se puede utilizar:
du -ks /carpeta
esto devuelve el numero de kilobytes y el nombre de la carpeta, el k es la opción para los kilobytes y s es para que imprima solo el gran total.
- ordenar la salida de du, por ejemplo de mayor a menor:
du -ks /carpeta | sort -nr
con esto sale ordena de mayor a menor las opciones -n de sort, le indica un orden numérico y r que haga de mayor a menor (reverse).
Además, si se tienen directorios montados en distintos disco, se hace más complicada la recopilación del espacio en disco, pues se debiera considerar sólo el espacio ocupado por cada device, para ello, se puede utilizar la opción -x que agrega la restricción, para contabilizar el espacio ocupado en el directorio solicitado y los siguientes que estén en el mismo disco, así, por ejemplo si se tiene un escenario donde:
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol3 4194304 3685800 504592 88% /
/dev/vg00/lvol1 2097152 183472 1899200 9% /stand
/dev/vg00/lvol8 15728640 12061944 3641728 77% /var
/dev/vg00/lvol6 10616832 4394432 6173848 42% /usr
/dev/vg00/lvol5 2097152 1536144 557096 73% /tmp
/dev/vg00/lvol4 8814592 5364512 3423184 61% /opt
/dev/vg00/lvol7 10485760 7725264 2739488 74% /home
/dev/vgtemipdb/lvol1
10485760 20063 9811597 0% /home/oracle/u01
/dev/vgtemipdb/lvol2
220200960 81325775 130199831 38% /home/oracle/data
entonces si interesa conocer de manera clara es espacio utilizado en el disco donde está el raíz, podemos utilizar:
du -ksx /* | sort -nr
- para obtener el tamaño de sólo una carpeta se puede utilizar:
du -ks /carpeta
esto devuelve el numero de kilobytes y el nombre de la carpeta, el k es la opción para los kilobytes y s es para que imprima solo el gran total.
- ordenar la salida de du, por ejemplo de mayor a menor:
du -ks /carpeta | sort -nr
con esto sale ordena de mayor a menor las opciones -n de sort, le indica un orden numérico y r que haga de mayor a menor (reverse).
Además, si se tienen directorios montados en distintos disco, se hace más complicada la recopilación del espacio en disco, pues se debiera considerar sólo el espacio ocupado por cada device, para ello, se puede utilizar la opción -x que agrega la restricción, para contabilizar el espacio ocupado en el directorio solicitado y los siguientes que estén en el mismo disco, así, por ejemplo si se tiene un escenario donde:
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol3 4194304 3685800 504592 88% /
/dev/vg00/lvol1 2097152 183472 1899200 9% /stand
/dev/vg00/lvol8 15728640 12061944 3641728 77% /var
/dev/vg00/lvol6 10616832 4394432 6173848 42% /usr
/dev/vg00/lvol5 2097152 1536144 557096 73% /tmp
/dev/vg00/lvol4 8814592 5364512 3423184 61% /opt
/dev/vg00/lvol7 10485760 7725264 2739488 74% /home
/dev/vgtemipdb/lvol1
10485760 20063 9811597 0% /home/oracle/u01
/dev/vgtemipdb/lvol2
220200960 81325775 130199831 38% /home/oracle/data
entonces si interesa conocer de manera clara es espacio utilizado en el disco donde está el raíz, podemos utilizar:
du -ksx /* | sort -nr
31 enero 2012
Obtener velocidad de tarjeta de red en HPUX
En HPUX, una forma de obtener la velocidad de conexión de la tarjeta de red (que en linux podemos usar mii-tool) es utilizar el comando lanadmin con el parametro -x y el indice de la tarjeta que se quiere revisar. Ahora si no se sabe cual tarjeta... una opción es usar el comando netstat -i nos muestra la estadísticas de red:
netstat -i
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lan0 1500 10.181.23.0 prd1149 1624149909 0 2348185029 0 0
lo0 32808 loopback localhost 10500568 0 10500568 0 0
lan4 1500 10.181.10.0 rsp1149 5177904 0 151 0 0
entonces si se ejecuta lanadmin -x 0:
lanadmin -x 0
Speed = 1000 Full-Duplex.
Autonegotiation = On.
netstat -i
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lan0 1500 10.181.23.0 prd1149 1624149909 0 2348185029 0 0
lo0 32808 loopback localhost 10500568 0 10500568 0 0
lan4 1500 10.181.10.0 rsp1149 5177904 0 151 0 0
entonces si se ejecuta lanadmin -x 0:
lanadmin -x 0
Speed = 1000 Full-Duplex.
Autonegotiation = On.
24 enero 2012
Depurar scripts en HP-UX o linux
Una de las ventajas de los sistemas *nix, es que se puede hacer una depuración de los script usados en el shell de manera muy simple, mostrando línea a línea lo que ocurre, así por ejemplo, mostrará valores que toman las variables, las ejecuciones de comando, etc... esto sirve para bash, ksh y sh (si no saben que shell están corriendo pueden hacer un echo $SHELL o print $SHELL) la depuración consiste en agregar a la primera línea del script donde se encuentra algo como:
#!/usr/bin/ksh , o
#!/bin/sh , o
#!/bin/bash
le agregamos un -x, quedando #!/usr/bin/ksh -x con esto, la siguiente ejecución mostrará algo como:
> cat test_script.ksh
#!/usr/bin/ksh -x
QTY=1
while [ $QTY -lt 3 ]
do
print "vez " $QTY
QTY=$(( QTY + 1))
done
> test_script.ksh
+ QTY=1
+ [ 1 -lt 3 ]
+ print vez 1
vez 1
+ QTY=2
+ [ 2 -lt 3 ]
+ print vez 2
vez 2
+ QTY=3
+ [ 3 -lt 3 ]
Sin -x muestra por pantalla:
vez 1
vez 2
#!/usr/bin/ksh , o
#!/bin/sh , o
#!/bin/bash
le agregamos un -x, quedando #!/usr/bin/ksh -x con esto, la siguiente ejecución mostrará algo como:
> cat test_script.ksh
#!/usr/bin/ksh -x
QTY=1
while [ $QTY -lt 3 ]
do
print "vez " $QTY
QTY=$(( QTY + 1))
done
> test_script.ksh
+ QTY=1
+ [ 1 -lt 3 ]
+ print vez 1
vez 1
+ QTY=2
+ [ 2 -lt 3 ]
+ print vez 2
vez 2
+ QTY=3
+ [ 3 -lt 3 ]
Sin -x muestra por pantalla:
vez 1
vez 2
20 enero 2012
como ver el contenido de un paquete instalado en HP-UX
Si el paquete fue agregado con swinstall, se puede revisar con swlist -l file
Obtener información de hardware en HP-UX
En HP-UX, existe una serie de comandos que entregan información muy detallada del sistema:
Si cstm no es capaz de recopilar la información, tambien se puede utilizar print_manifest, que arroja una salida formateada bastante util. Ojo, que tal vez no este en el PATH, de ser así, en man print_manifest saldrá la ruta, en este caso para HP-UX 11.31 es /opt/ignite/bin/print_manifest.
También se puede utilizar ioscan, para obtener la lista completa, basta ioscan -f, con eso entrega la lista completa de hardware instalado en la máquina.
- cstm, interfaz de comando que permite obtener la información del sistema, se ingresa a una shell y se debe ingresar:
- map all, con esto muestra una lista de todos los dispositivos del sistema.
- selall, con esto se seleciona todo
- infolog, muestra el log recopilado, con pausas y al final ofrece la opción de guardar el log (SaveAs) o no hacer nada (Done)
Si cstm no es capaz de recopilar la información, tambien se puede utilizar print_manifest, que arroja una salida formateada bastante util. Ojo, que tal vez no este en el PATH, de ser así, en man print_manifest saldrá la ruta, en este caso para HP-UX 11.31 es /opt/ignite/bin/print_manifest.
También se puede utilizar ioscan, para obtener la lista completa, basta ioscan -f, con eso entrega la lista completa de hardware instalado en la máquina.
19 enero 2012
Cómo ver los procesos en forma de árbol, en Solaris y HPUX?
El comando ptree, tanto en Solaris y HP-UX sirve para obtener una lista jerarquizada de los procesos que están ejecutandose en el momento, por ejemplo, en HPUX donde estoy usando screen luce algo así:
PID COMMAND
29501 screen -h 10000 -S amardone
29503 /usr/bin/sh
27588 telnet prd1082
20897 /usr/bin/sh
19846 /usr/bin/sh
La identación no es mucha, pero clarifica cual es padre y los hijos no? así se observa que dentro de screen hay tres consolas (/usr/bin/sh) y en una de ellas un telnet.
En particular HP UX, también se puede conseguir un resultado similar con el parámetro H, entonces el comando sería algo como:
ps -feH
Si al ejecutar arroja un error como éste:
ps: illegal option -- H
usage: ps [-edaxzflP] [-u ulist] [-g glist] [-p plist] [-t tlist] [-R prmgroup] [-Z psetidlist]
es porque no está la variable de ambiente UNIX95 que afecta a algunos comando como ps, de hecho si revisan la ayuda de ps, verán que en la opción -H dice (UNIX Standard Only.) esto significa que se debe asignar un valor a la variable UNIX95, que se hace con un tradicional export o setenv dependiendo del shell.
export UNIX95=1
con esto se obtiene el resultado esperado, aunque la salida tal como dije antes, es menos gráfica, algo como esto:
root 1806 1 0 May 1 ? 00:01:26 /usr/sbin/stm/uut/bin/sys/diagmond
root 2194 1806 0 May 1 ? 00:03:31 diaglogd
root 2195 1806 0 May 1 ? 00:17:04 psmctd
Si observan bien, hay un par de espacios de identación a la derecha para señalar los procesos hijos y para los que no sepan, la tercera columna es el ppid, el parent pid o pid padre.
PID COMMAND
29501 screen -h 10000 -S amardone
29503 /usr/bin/sh
27588 telnet prd1082
20897 /usr/bin/sh
19846 /usr/bin/sh
La identación no es mucha, pero clarifica cual es padre y los hijos no? así se observa que dentro de screen hay tres consolas (/usr/bin/sh) y en una de ellas un telnet.
En particular HP UX, también se puede conseguir un resultado similar con el parámetro H, entonces el comando sería algo como:
ps -feH
Si al ejecutar arroja un error como éste:
ps: illegal option -- H
usage: ps [-edaxzflP] [-u ulist] [-g glist] [-p plist] [-t tlist] [-R prmgroup] [-Z psetidlist]
es porque no está la variable de ambiente UNIX95 que afecta a algunos comando como ps, de hecho si revisan la ayuda de ps, verán que en la opción -H dice (UNIX Standard Only.) esto significa que se debe asignar un valor a la variable UNIX95, que se hace con un tradicional export o setenv dependiendo del shell.
export UNIX95=1
con esto se obtiene el resultado esperado, aunque la salida tal como dije antes, es menos gráfica, algo como esto:
root 1806 1 0 May 1 ? 00:01:26 /usr/sbin/stm/uut/bin/sys/diagmond
root 2194 1806 0 May 1 ? 00:03:31 diaglogd
root 2195 1806 0 May 1 ? 00:17:04 psmctd
Si observan bien, hay un par de espacios de identación a la derecha para señalar los procesos hijos y para los que no sepan, la tercera columna es el ppid, el parent pid o pid padre.
Suscribirse a:
Entradas (Atom)