Archivos de la categoría Unix

BASH e Includes

¿Alguna vez habeís tenido varios script’s con partes comunes?

La verdad es que yo muchas veces, y siempre estaba copiando y pegando el código de uno a otro. Hoy pensando en hacer un CGI con BASH para que me devuelva un HTML, se me ha ocurrido que tener funciones con las cosas básicas estaría bien, y entonces he pensado que tenerlas que meter en todos los CGI’s es un rollo, así que he buscado en Google y me ha aparecido la manera de hacer includes:

$include /mi/carpeta/de/funciones/funciones.inc

Fijo que mucha gente lo sabrá pero a mi nunca se me había ocurrido pensar que podría hacerlos, hombre igual es que nunca he tenido la necesidad real de usarlos, pero a partir de ahora va a haber includes por todos los lados.

Perl CPAN

Hoy probando unas cosillas sobre webservices, se me ha ocurrido probar a acceder a un webservice desde PERL, en la página que estaba mirando dice que utilicemos la clase SOAP::Lite y lo mejor de todo es que PERL tiene una especie de interfaz para instalar paquetes que yo no conocia y que se invoca con el siguiente comando:

perl -MCPAN -e shell

Te hace una serie de preguntas de configuración, yo lo he dejado todo por defecto y cuando finaliza te pone un prompt como el siguiente:

cpan>

En el ya puedes instalar el paquete en mi caso el SOAP::Lite:

install SOAP::Lite

Aquí te muestra las opciones con las que se instala el paquete y te da opción a cambiarlas.
Una vez instalado para salir de la interfaz CPAN:

quit

mod_proxy y apache2

El mod_proxy no viene activado por defecto en apache2, así que para activarlo, en freeBSD, lo que hay que hacer a la hora de compilar en /usr/ports/www/apache2 es:

make WITH_PROXY_MODULES=”YES”

Lo gracioso de esto es que las instrucciones para activar modulos aparecen al principio cuando haces un make, pero para verlas con el peazo de scroll que hace debes de tener visión ultrarápida que por desgracia yo no poseo.

MySQL freeBSD

Hoy estaba instalando el MySQL en un servidor freeBSD, habiendo decidido hacerlo por el método fácil que es utilizar los ports, me he encontrado con el problema de que no arracanba.

He tenido que preguntar por ahí y la razón por la cual no arrancaba es que hay que poner en el fichero /etc/rc.conf la siguiente línea:

mysql_enable=”YES”

La verdad es que no se porque hay que hacer esto pero la cuestión es que es la solución a mi problema.

Dispositivos SCSI – freeBSD

Estos días me ha tocado pegarme un poquito con los Array’s de discos conectados por fibra y demás cosillas de estas que solo oyes hablar en las peliculas (buenas), así que he descubierto unos comandos de freeBSD para ver lo que está conectado y reescanear el bus SCSI en busca de nuevos dispositivos, el servidor tiene una tarjeta de fibra SCSI:

  • camcontrol devlist: muestrar todos los dispositivos
  • camcontrol rescan all: reescanea de nuevo el bus en busca de nuevos dispositivos

Los procesos y la memoria

Cuando ejecutamos un proceso este consume una cierta cantidad de memoria, normalmente si el proceso está descontrolado empieza a consumir memoria como un loco y al final consigue que se cuelgue el sistema.

En freeBSD existe una limatación de 512 MB para que esto no ocurra, pero claro si tú tienes un servidor sobrado de memoria y encima estas ejecutando un proceso que requiere consumir más de 512 MB, hay dos opciones:

  • Volver a compilar el kernel
  • modificar un ficherito y reiniciar

Yo sinceramente estando el sistema en producción me quedo con la segunda opción, el fichero que hay que modificar es /boot/loader.conf y lo que hay que añadir para subirlo a 1 GB es lo siguiente:

kern.maxdsiz=”1073741824″
kern.maxdfldsiz=”1073741824″
kern.maxssiz=”134217728″

Y después ejecutamos shutdown -r now y listo.

Para mirar si los valores han cambiado tenemos el comando limits que nos da una salida tipo a esta:

Resource limits (current):
cputime infinity secs
filesize infinity kb
datasize 1048576 kb
stacksize 131072 kb
coredumpsize infinity kb
memoryuse infinity kb
memorylocked infinity kb
maxprocesses 5547
openfiles 11095
sbsize infinity bytes
vmemoryuse infinity kb

Rotación de logs en freeBSD

Hoy he discubierto que el demonio encargado de rotar los logs en freeBSD es el newsyslog cuyo fichero de configuración está en /etc/newsyslog.conf:

# logfilename [owner:group] mode count size when flags [/pid_file]
/var/log/xferlog 600 7 100 * J

El fichero contine una línea por cada log que hay que rotar:
– logfilename: fichero de logs
– [owner:group]: propietario:grupo con el que se creará el nuevo fichero de log (opcional)
– mode: permisos del nuevo fichero de log
– count: número de ficheros a mantener
– size: tamaño en KB máximo que puede alcanzar el log
– when: cuando rotar el log
– flags : opciones adiciones como compresión y demás
– [/pid_file]: fichero donde está almacenado el pid del programa que genera el log (opcional)

En el ejemplo tenemos que el log de FTP (/var/log/xferlog) se crea con permisos de solo escritura para el usuario root (600), que mantendremos un histórico de una semana (7) que se pone en 100 KB el limite para rotar y que se comprimirá con el bzip2 (J).

Para más información:

man newsyslog