De laggard, pero no es tarde para recuperar el tiempo perdido:
PostOps: A Non-Surgical Tale of Software, Fragility, and Reliability
Si tienen algún tiempo pueden echarle ojo, es muy ameno.
Mostrando las entradas con la etiqueta unix. Mostrar todas las entradas
¿Así que hackers vendedores de gorditas?
Sonaré muy fuera de época o algo así. Pero hace unos 10 o 15 años cuando comencé a experimentar las cosas de Linux, consideraba hackers a personas de la altura de Richard Stallman, Eric Raymond no sin mencionar a Dennis Ritchie o al que identifiqué como alguien que me daría la pauta posible de que en México se pueden lograr cosas grandes: Miguel de Icaza.
Personas que construían lenguajes de programación, compiladores antes de una carrera universitaria, sistemas operativos. Obviamente había muchas áreas todavía sin explorar, así que se podían crear muchas cosas en esa época con relativa facilidad. Incluso +Jonathan Hernandez cuando apareció en slashdot contó como un hack de relevancia. Permitía almacenar los posts de jaws en gmail. Nota original acá: http://beta.slashdot.org/story/49421
Quince años después, en el año 2015, me hace un poco de corto circuito que la chaviza se autoproclame "hacker" cuando hacen una aplicación de chat, o una página social, o cualquier cosa social. Si yo fuera un vendedor de gorditas en un puesto, ser "hacker" de gorditas equivaldría a vender gorditas en platos de aluminio, en platos recortados en forma de triángulo, gorditas con formas nunca antes vistas. Pero a fin de cuenta gorditas.
El viejo y aún válido hacker howto, por si nunca tuvieron oportunidad de leerlo.
Personas que construían lenguajes de programación, compiladores antes de una carrera universitaria, sistemas operativos. Obviamente había muchas áreas todavía sin explorar, así que se podían crear muchas cosas en esa época con relativa facilidad. Incluso +Jonathan Hernandez cuando apareció en slashdot contó como un hack de relevancia. Permitía almacenar los posts de jaws en gmail. Nota original acá: http://beta.slashdot.org/story/49421
![]() |
| Una captura de pantalla en aquel 2004 |
El viejo y aún válido hacker howto, por si nunca tuvieron oportunidad de leerlo.
Usar el último argumento de tu último comando y otras combinaciones
Estaba haciendo algunas talachas en la shell y me encontré con la necesidad de usar el último argumento de mi último comando ejecutado de manera frecuente. Así que un clavadín a las redes sociales y la respuesta la podrán encontrar por acá en developerworks.
Using the last argument from your last command and some other combinations
Using the last argument from your last command and some other combinations
Por fin pude quitarme esa pulga del tr*sero
En pleno 2013 y aunque parezca increíble, les juro que hay aún sistemas de control de versiones CVS corriendo en el día a día. Y un issue que tenía desde hace algunas semanas, pude resolverlo.
cvs [commit aborted]: out of memory; can not reallocate 52962371 bytes
cvs [commit aborted]: out of memory; can not reallocate 52962371 bytes
Scripts sencillos para tareas sencillas rutinarias
Por si les interesa echarle un ojo Simple scripts for daily simple tasks; es el tipo de tareas que luego en el día a día te ahorran trabajo, tiempo y esfuerzo.
Restaurar un servidor AIX con código 555 desde NIM y HMC
Bueno, dado que esta información me podrá ser de ayuda en un futuro. La dejaré para la posteridad y uso futuro. Si a alguien más le sirve, adelante, sirvase con confianza.
El problema: Led code 555 en un equipo AIX, o sea, muerto, no arranca
La solución: Entrar en modo mantenimiento, fsck'ear los filesystems y reiniciar
Lo que no les contaron: El equipo está virtualizado y se encuentra en otro lugar del mundo
Con un poco de acceso mediante HMC y un NIM server hay que hacer lo siguiente:
Desde el NIM server:
Lo que sigue es actualizar la MAC address en la posición que marqué en amarillo y letra roja:
foo1:foonim:/root# getmacs fooserver
Using an adapter type of "ent".
Attempting to use dsh method to collect MAC addresses.
# Node::adapter_type::interface_name::MAC_address::location::media_speed::adapter_duplex::UNUSED::install_gateway::ping_status::machine_type::netaddr::subnet_mask
fooserver::ent_v::en1::ABCDEF123456::::::::::111.222.333.444::::secondary::111.222.333.444::255.255.254.0
Finalmente hay que actualizar el nim server con la información para bootear al cliente nim desde el nim server
El resto se los continuaré en otro post por que ya me dió hueva seguirle... xD
El problema: Led code 555 en un equipo AIX, o sea, muerto, no arranca
La solución: Entrar en modo mantenimiento, fsck'ear los filesystems y reiniciar
Lo que no les contaron: El equipo está virtualizado y se encuentra en otro lugar del mundo
Con un poco de acceso mediante HMC y un NIM server hay que hacer lo siguiente:
Desde el NIM server:
foo1:foonim:/root# lsnim -l fooserver
fooserver:
class = machines
type = standalone
comments = 2CPU 8GB
connect = nimsh
platform = chrp
netboot_kernel = 64
if1 = foo1_126-254 fooserver.bar.com 0
cable_type1 = bnc
mgmt_profile1 = foo-hmc-1 9 Server-9117-570-123ABCDEF
Cstate = in the process of booting
prev_state = not running
Mstate = currently running
boot = boot
spot = 531105spot
cpuid = 12345ABCDEF1
control = master
fooserver:
class = machines
type = standalone
comments = 2CPU 8GB
connect = nimsh
platform = chrp
netboot_kernel = 64
if1 = foo1_126-254 fooserver.bar.com 0
cable_type1 = bnc
mgmt_profile1 = foo-hmc-1 9 Server-9117-570-123ABCDEF
Cstate = in the process of booting
prev_state = not running
Mstate = currently running
boot = boot
spot = 531105spot
cpuid = 12345ABCDEF1
control = master
Lo que sigue es actualizar la MAC address en la posición que marqué en amarillo y letra roja:
foo1:foonim:/root# getmacs fooserver
Using an adapter type of "ent".
Attempting to use dsh method to collect MAC addresses.
# Node::adapter_type::interface_name::MAC_address::location::media_speed::adapter_duplex::UNUSED::install_gateway::ping_status::machine_type::netaddr::subnet_mask
fooserver::ent_v::en1::ABCDEF123456::::::::::111.222.333.444::::secondary::111.222.333.444::255.255.254.0
Finalmente hay que actualizar el nim server con la información para bootear al cliente nim desde el nim server
nim -o change -a if1="foo1_126-254 fooserver.bar.com ABCDEF123456" fooserver
El resto se los continuaré en otro post por que ya me dió hueva seguirle... xD
El extraño caso del crontab no permitido
Sucede que un usuario fulano no podía editar el crontab a pesar de tener los debidos permisos de grupo y las debidas configuraciones en cron.allow y cron.deny.
La cosa es que para debuggear este problema al ejecutar un crontab desde usuario se puede echar mano de la herramienta truss para ver que archivos se abren, leen, etc. Algo así:
kopen("/unix", O_RDONLY|O_LARGEFILE) = 3
kopen("/usr/lib/security/methods.cfg", O_RDONLY) = 3
kopen("/etc/passwd", O_RDONLY) = 3
kopen("/etc/security/passwd", O_RDONLY) = 4
kopen("/etc/security/login.cfg.idx", O_RDONLY) = -1
kopen("/etc/security/login.cfg", O_RDONLY) = 5
kopen("/etc/security/login.cfg", O_RDONLY) = 5
kopen("/etc/security/login.cfg", O_RDONLY) = 5
kopen("/etc/passwd.id.idx", O_RDONLY) = -1
kopen("/etc/passwd", O_RDONLY) = 5
kopen("/etc/passwd", O_RDONLY) = 5
kopen("/etc/security/user.idx", O_RDONLY) = -1
kopen("/etc/security/user", O_RDONLY) = 3
kopen("/etc/security/user", O_RDONLY) = 3
kopen("/etc/security/user", O_RDONLY) = 3
kopen("/var/adm/cron/cron.deny", O_RDONLY) = 3
kopen("/var/spool/cron/crontabs", O_RDONLY) = 3
¡Queobo! De ahí sacan mas pistas del problema. A la Sherlock Holmes.
La cosa es que para debuggear este problema al ejecutar un crontab desde usuario se puede echar mano de la herramienta truss para ver que archivos se abren, leen, etc. Algo así:
# truss crontab -l 2> /tmp/foo
# grep "(\"/" /tmp/foo | grep open
kopen("/usr/lib/security/methods.cfg", O_RDONLY) = 3
kopen("/etc/passwd", O_RDONLY) = 3
kopen("/etc/security/passwd", O_RDONLY) = 4
kopen("/etc/security/login.cfg.idx", O_RDONLY) = -1
kopen("/etc/security/login.cfg", O_RDONLY) = 5
kopen("/etc/security/login.cfg", O_RDONLY) = 5
kopen("/etc/security/login.cfg", O_RDONLY) = 5
kopen("/etc/passwd.id.idx", O_RDONLY) = -1
kopen("/etc/passwd", O_RDONLY) = 5
kopen("/etc/passwd", O_RDONLY) = 5
kopen("/etc/security/user.idx", O_RDONLY) = -1
kopen("/etc/security/user", O_RDONLY) = 3
kopen("/etc/security/user", O_RDONLY) = 3
kopen("/etc/security/user", O_RDONLY) = 3
kopen("/var/adm/cron/cron.deny", O_RDONLY) = 3
kopen("/var/spool/cron/crontabs", O_RDONLY) = 3
¡Queobo! De ahí sacan mas pistas del problema. A la Sherlock Holmes.
¿Qué es el Unix Time?
En cosas obvias de sistemas, el día de hoy presentamos:
¿Qué es UNIX Time o Tiempo UNIX?
"se define como la cantidad de segundos transcurridos desde la medianoche UTC1 de enero de 1970"
También se le puede encontrar como "epoch"
Si se sienten muy "geeks" orale, pues en vez de traer un reloj binario o de manecillas, usen un reloj con UNIX Time en sus muñecas. Si por el contrario necesitan ayuda de alguna herramienta, aquí tienen una para hacer conversiones a tiempo gregoriano.
¿Qué es UNIX Time o Tiempo UNIX?
"se define como la cantidad de segundos transcurridos desde la medianoche UTC1 de enero de 1970"
También se le puede encontrar como "epoch"
![]() |
| Obsérvese la segunda columna TIMESTAMP, el cual es UNIX Time |
Si se sienten muy "geeks" orale, pues en vez de traer un reloj binario o de manecillas, usen un reloj con UNIX Time en sus muñecas. Si por el contrario necesitan ayuda de alguna herramienta, aquí tienen una para hacer conversiones a tiempo gregoriano.
Filesets rejegos y soluciones frescas
Al intentar instalar AIX 6.1 TL7 un fileset empezó a dar problemas, por lo cual todo el TL no se podía aplicar.
El fileset en cuestión era ICU4C.rte.
Los logs de smit mostraban lo siguiente:
Una búsqueda de google no arrojó absolutamente nada, cero, nain.
Pregunté en linkedin en el grupo IBM - AIX. Me recomendaban abrir un ticket con IBM para el problema.
Hoy ya con la mente mas fresca se me ocurrió de esas soluciones simples que quizá pudieran funcionar:
eliminar el fileset y reinstalarlo.
El fileset en cuestión era ICU4C.rte.
Los logs de smit mostraban lo siguiente:
ar: 0707-108 File ./usr/lib/libicui18n.a.new is not an archive file.
inurest: Failure on system call to execute command OBJECT_MODE=32_64 /usr/ccs/bin/ar -or ./usr/lib/libicui18n.a.new ./usr/lib/inst_updt/libicui18n.a/shr.o ./usr/lib/inst_updt/li
bicui18n.a/shr_64.o.
inurest: Failure on system call to execute command OBJECT_MODE=32_64 /usr/ccs/bin/ar -or ./usr/lib/libicui18n.a.new ./usr/lib/inst_updt/libicui18n.a/shr.o ./usr/lib/inst_updt/li
bicui18n.a/shr_64.o.
Una búsqueda de google no arrojó absolutamente nada, cero, nain.
Pregunté en linkedin en el grupo IBM - AIX. Me recomendaban abrir un ticket con IBM para el problema.
Hoy ya con la mente mas fresca se me ocurrió de esas soluciones simples que quizá pudieran funcionar:
eliminar el fileset y reinstalarlo.
installp: An error occurred during bosboot verification processing.
¿Problemas al hacer la instalación de un TL de AIX?
Vía smit si obtienen el mensaje:
Pueden dar click a esta página para ver la explicación detallada o ejecutar lo siguiente:
Vía smit si obtienen el mensaje:
installp: An error occurred during bosboot verification processing.
Pueden dar click a esta página para ver la explicación detallada o ejecutar lo siguiente:
bootlist -om normal
hdiskNNln -f /dev/rhdiskNN /dev/ipldevice
sshd[11366] Authentication refused
sshd[11366]: Authentication refused: bad ownership or modes for directory
Si la autenticación por llave anda fallando, pues hay que revisar en los logs del servidor remoto
De paso también hacer un ssh -vvv hostRemoto para ver que tanto sale
Finalmente el problema con esto era lo siguiente:
chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Ver los mensajes de arranque de AIX
alog -L # List the defined log types alog -o -t boot # View the boot log alog -o -t console # View the console log
Fuente
Cambiar ulimit
Cambiar los ulimits (limites de uso de recursos) sobre AIX.
Editar /etc/security/limits y usar los parámetros que contiene el archivo. Vienen muy explícitos los valores al inicio:
* Sizes are in multiples of 512 byte blocks, CPU time is in seconds
*
* fsize - soft file size in blocks
* core - soft core file size in blocks
* cpu - soft per process CPU time limit in seconds
* data - soft data segment size in blocks
* stack - soft stack segment size in blocks
* rss - soft real memory usage in blocks
* nofiles - soft file descriptor limit
* fsize_hard - hard file size in blocks
* core_hard - hard core file size in blocks
* cpu_hard - hard per process CPU time limit in seconds
* data_hard - hard data segment size in blocks
* stack_hard - hard stack segment size in blocks
* rss_hard - hard real memory usage in blocks
* nofiles_hard - hard file descriptor limit
Hay otros modos según se.
Editar /etc/security/limits y usar los parámetros que contiene el archivo. Vienen muy explícitos los valores al inicio:
* Sizes are in multiples of 512 byte blocks, CPU time is in seconds
*
* fsize - soft file size in blocks
* core - soft core file size in blocks
* cpu - soft per process CPU time limit in seconds
* data - soft data segment size in blocks
* stack - soft stack segment size in blocks
* rss - soft real memory usage in blocks
* nofiles - soft file descriptor limit
* fsize_hard - hard file size in blocks
* core_hard - hard core file size in blocks
* cpu_hard - hard per process CPU time limit in seconds
* data_hard - hard data segment size in blocks
* stack_hard - hard stack segment size in blocks
* rss_hard - hard real memory usage in blocks
* nofiles_hard - hard file descriptor limit
Hay otros modos según se.
Incrementar paging space en AIX
De esas tareas talacheras; incrementar el tamaño del paging space (es el equivalente a la swap de otros sistemas *nix) en AIX.
La tarea es relativamente sencilla, el detalle es que generalmente esto se pide o se hace en base a tamaños y las definiciones de los paging spaces están dadas en Logical Partitions. Por ejemplo: Me puedes aumentar el paging space de 1GB a 4GB?
El paso 1: Verificar el nombre actual del paging space:
paging00 hdisk10 rootvg 1024MB 1 yes yes lv
hd6 hdisk10 rootvg 256MB 4 yes yes lv
hd6 hdisk12 rootvg 256MB 4 yes yes lv
hd6 hdisk16 rootvg 3072MB 4 yes yes lv
Paso 2: determinar el tamaño de la partición física (PP) y el tamaño total del paging space
Tamaño del paging space: 16(LPs) x 64(PP Size) = 1024MB. Aunque esto también se puede determinar en el paso número 1.
Paso 3: Determinar cuantas particiones lógicas (LPs) extra necesitamos para alcanzar los 4GB. Algebra simple.
3 x 1024(MB) = 3072MB
3072(MB)/64(MB) = 48(LPs)
Paso 4: Incrementar el tamaño del paging00
# chps -s 48 paging00
Paso 5: Verificar el tamaño final de paging00
o
# lslv paging00
LOGICAL VOLUME: paging00 VOLUME GROUP: rootvg
LV IDENTIFIER: 00c5e69d00004c0000000124cef67ef3.11 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: paging WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 64 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 64 PPs: 64
STALE PPs: 0 BB POLICY: non-relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: center UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
64(LPs) X 64(PP Size) = 4096MBs = 4GB
Fin. El sysadmin talachero es feliz.
Fuentes:
Increasing AIX paging space
Logical Volume Manager (LVM) Commands for AIX
La tarea es relativamente sencilla, el detalle es que generalmente esto se pide o se hace en base a tamaños y las definiciones de los paging spaces están dadas en Logical Partitions. Por ejemplo: Me puedes aumentar el paging space de 1GB a 4GB?
El paso 1: Verificar el nombre actual del paging space:
# lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Typepaging00 hdisk10 rootvg 1024MB 1 yes yes lv
hd6 hdisk10 rootvg 256MB 4 yes yes lv
hd6 hdisk12 rootvg 256MB 4 yes yes lv
hd6 hdisk16 rootvg 3072MB 4 yes yes lv
Paso 2: determinar el tamaño de la partición física (PP) y el tamaño total del paging space
# lslv paging00
LOGICAL VOLUME: paging00 VOLUME GROUP: rootvg
LV IDENTIFIER: 00c5e69d00004c0000000124cef67ef3.11 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: paging WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 64 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 16 PPs: 64
STALE PPs: 0 BB POLICY: non-relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: center UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
LV IDENTIFIER: 00c5e69d00004c0000000124cef67ef3.11 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: paging WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 64 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 16 PPs: 64
STALE PPs: 0 BB POLICY: non-relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: center UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
Tamaño del paging space: 16(LPs) x 64(PP Size) = 1024MB. Aunque esto también se puede determinar en el paso número 1.
Paso 3: Determinar cuantas particiones lógicas (LPs) extra necesitamos para alcanzar los 4GB. Algebra simple.
3 x 1024(MB) = 3072MB
3072(MB)/64(MB) = 48(LPs)
Paso 4: Incrementar el tamaño del paging00
# chps -s 48 paging00
Paso 5: Verificar el tamaño final de paging00
# lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type
paging00 hdisk10 rootvg 1024MB 1 yes yes lv
paging00 hdisk11 rootvg 1024MB 1 yes yes lv
paging00 hdisk12 rootvg 128MB 1 yes yes lv
paging00 hdisk9 rootvg 1920MB 1 yes yes lv
(1024 + 1024 + 128 + 1920) = 4096 = 4GBpaging00 hdisk10 rootvg 1024MB 1 yes yes lv
paging00 hdisk11 rootvg 1024MB 1 yes yes lv
paging00 hdisk12 rootvg 128MB 1 yes yes lv
paging00 hdisk9 rootvg 1920MB 1 yes yes lv
o
# lslv paging00
LOGICAL VOLUME: paging00 VOLUME GROUP: rootvg
LV IDENTIFIER: 00c5e69d00004c0000000124cef67ef3.11 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: paging WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 64 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 64 PPs: 64
STALE PPs: 0 BB POLICY: non-relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: center UPPER BOUND: 32
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: off
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
64(LPs) X 64(PP Size) = 4096MBs = 4GB
Fin. El sysadmin talachero es feliz.
Fuentes:
Increasing AIX paging space
Logical Volume Manager (LVM) Commands for AIX
Crear instancias de DB2
Crear instancia:
$ ./db2icrt -u usuario_fence nombre_instancia
Eliminar instancia:
$ ./db2idrop nombre_instancia
$ ./db2icrt -u usuario_fence nombre_instancia
Eliminar instancia:
$ ./db2idrop nombre_instancia
Algo de filesystems y discos
Para incrementar el tamaño de un filesystem:
Para ver el tamaño de un disco en AIX:
# bootinfo -s hdisk1
# chfs -a size=32G /some/filesystem
Para ver el tamaño de un disco en AIX:
# bootinfo -s hdisk1
Suscribirse a:
Entradas (Atom)


