inicio mail me! sindicaci;ón

Archive for January, 2009

Configuración de servicios en CentOS 5

Como a veces no me acuerdo, dejo por aquí una chuleta para saber cuáles son los comandos que más habitualmente uso para gestionar los demonios y servicios de CentOS 5:

Por un lado está el comando /sbin/service, que permite arrancar, parar, reiniciar o ver el estado de un servicio:

/sbin/service <servicio> start
/sbin/service <servicio> stop
/sbin/service <servicio> restart
/sbin/service <servicio> status

Este comando lo que hace es ejecutar el script contenido en /etc/init.d/<servicio> con el argumento pasado a service. Tal comando al menos deberá tener implementadas las opciones start, stop y status.

Otras opciones son ejecutar todos los scripts en orden alfabético con la opción de status:

/sbin/service ––full-status

O bien primero todos con la opción stop, y a continuación otra vez todos con start:

/sbin/service ––full-restart

Y por otro lado está /sbin/chkconfig, para configurar cuáles arrancan con qué runlevel:

/sbin/chkconfig ––list

Para listar todos los servicios de todos los runlevels

/sbin/chkconfig ––level 345 <servicio> on

Para activar el demonio <servicio> en el arranque de los runlevels 3, 4 y 5.

/sbin/chkconfig ––level 345 <servicio> off

Para desactivar el demonio <servicio> en el arranque de los runlevels 3, 4 y 5.

Fuentes:

Python: argumentos identificados en una función

Observemos el siguiente código:

# -*- coding: UTF-8 -*-

def foo(bar=False):
        return ‘"bar" vale "%s"’%(bar)

if __name__==‘__main__’:
        print (‘Cuando no se especifica el argumento, toma el valor por defecto:\n\tfoo() retorna ‘+foo())
        print (‘Cuando sí se especifica el argumento, toma el valor especificado:\n\tfoo(bar=\’baz\’) retorna ‘+foo(bar=‘baz’))

La función foo está definida de manera que recibe un parámetro llamado bar. Tal y como está especificada, si al llamarla no se le pasa ese parámetro, bar tomará el valor por defecto False. Por ejemplo, con la llamada foo(), sin más, bar pasa a ser False, con lo que la función retorna “bar” vale “False”.

Si sí se le pasa ese argumento, la función simplemente usa el valor proporcionado:

>>> import wx_formas
>>> wx_formas.foo(3)
‘"bar" is "3"’
>>> wx_formas.foo(None)
‘"bar" is "None"’
>>> wx_formas.foo([1,2,3])
‘"bar" is "[1, 2, 3]"’
>>>

La ejecución del código original da el siguiente resultado:

Cuando no se especifica el argumento, toma el valor por defecto:
        foo() retorna "bar" vale "False"
Cuando sí se especifica el argumento, toma el valor especificado:
        foo(bar=‘baz’) retorna "bar" vale "baz"

También se le puede pasar un número variable de argumentos a una función, bien con def foo(*tupla_de_argumentos), o bien con def foo(**diccionario_de_argumentos).

En el libro Learning Python, de Mark Lutz, hay más información acerca de esto (capítulo 16, pág. 331 en la tercera edición, de octubre de 2007 en inglés).

Por darle un poco más de chicha al artículo, diré que acabo de encontrar la Py Zine, revista dedicada enteramente a Python.