Sunteți pe pagina 1din 5

Axel Munguia Zaragoza 3er sem. Ing.

Sistemas Computacionales 14/10/2012

Servicios en Linux y Manipulacin


Documento obtenido de: http://www.linuxtotal.com.mx/index.php?cont=info_admon_003 Linux ofrece multitud de servicios o servidores, estos pueden iniciar o arrancar junto con la carga del sistema o pueden despus ser puestos a funcionar cuando se requieran (es lo mejor). Parte esencial de la administracin de sistemas Linux es continuamente trabajar con los servicios que este proporciona, cosa que es bastante sencilla. En este tutorial aprenders todo lo necesario sobre como inicar/detener/reinicar etc. los servicios de tu equipo GNU/Linux. Iniciando servicios manualmente, directorio init.d Dentro de esta carpeta ubicada en /etc o en /etc/rc.d dependiendo de la distribuccin, se encuntran una serie de scripts que permiten inicar/detener la gran mayora de los servicios/servidores que estn instalados en el equipo. Estos scripts estn programados de tal manera que la mayora reconoce los siguientes argumentos: start stop restart status Los argumentos son autodescriptivos, y tienen permisos de ejecuccin, entonces siendo root es posible iniciar un servicio de la siguiente manera, por ejemplo samba: #> /etc/rc.d/init.d/smb start Starting Samba SMB daemon [OK] Solo que hay que cambiar start por stop | restart | status para detenerlo, reiniciarlo (releer archivos de configuracin) o checar su estatus. Ahora bien si ests parado dentro del directorio puedes hacerlo asi. #> pwd /etc/rc.d/init.d #> ./smb stop Shutting down Samba SMB daemon [OK] Se trata de tan solo un script asi que con el permiso de ejecuccin (x) puedes ejecutarlo con ./ seguido del nombre del servicio, sin espacios y despus el argumento que necesites, inicarlo, detenerlo etc. El comando service En varias distros, como Fedora o RedHat, existe el comando service, este comando permite tambin iniciar y/o detener servicios, de hecho funciona exactamente igual a como si escribieramos la ruta completa haca el directorio init.d, con service se indica de la siguiente manera: #> service mysql status Checking for service MySQL: stopped Si se desea iniciarlo: #> service mysql start

Axel Munguia Zaragoza 3er sem. Ing. Sistemas Computacionales 14/10/2012 Starting service MySQL [OK] Iniciando servicios desde el arranque del sistema En muchos casos es conveniente que un servidor o servicio inicien junto con el arranque del equipo en si, por ejemplo el servidor web Apache o alguna base de datos, esto es para que estn disponibles todo el tiempo y no se requiera de intervencin del administrador para iniciarlos. En Linux, a diferencia de otros sistemas operativos, es posible configurarlo en base a niveles de ejecuccin (run levels), cada nivel de ejecuccin (en la mayora de las distros son 7), inicia o detiene (Start o Kill) ciertos servicios. Estos niveles son los siguientes: 0 Detener o apagar el sistema 1 Modo monousuario, generalmente utilizado para mantenimiento del sistema 2 Modo multiusuario, pero sin soporte de red 3 Modo multiusuario completo, con servicios de red 4 No se usa, puede usarse para un inicio personalizado 5 Modo multiusuario completo con inicio grfico ( X Window) 6 Modo de reinicio (reset) Por ejemplo el nivel 0, que apaga el equipo, mata o detiene a todos los procesos del sistema, todos los servicios, lo mismo hace el 6 con la diferencia que despus inicia un script que permite reiniciar el sistema. El nivel por omisin o por default del sistema esta definifo en /etc/inittab, en la lnea initdefault: $> grep initdefault /etc/inittab id:5:initdefault: # runlevel 0 is System halt (Do not use this for initdefault!) # runlevel 6 is System reboot (Do not use this for initdefault!) La salida es de una distro OpenSuse 10. Como se puede apreciar existe una lnea que comienza con id, seguido por 5 que indicara entonces el nivel por default del sistema, basta con cambiar este valor con cualquier editor, reiniciar el equipo y se entrara a otro nivel, por ejemplo el 3 que tiene una funcionalidad completa pero sin sistema de ventanas X Window (ideal para equipos obsoletos o con pocos recursos de hardware). Ntese que en el listado previo aparecen dos lneas de comentarios, las que empiezan con #, que hacen la advertencia de no usar nunca los niveles 0 y 6 de initdefault, ya que jams arrancara el equipo. Se tendra que usar un mtodo de rescate. (He aqui la importancia de jams dejar una terminal abandonada con una sesin de root abierta ya que podra llegar un bromista y rpidamente cambiar la lnea initdefault a 6 por ejemplo, y despus estara muy divertido viendo a un pobre administrador novato trtandose de explicar porque diablos el equip se resetea hasta el infinito sin nunca entrar a una pantalla de login). El nivel de ejecuccin actual del sistema puede ser consultado con who -r y con el comando runlevel, este ltimo muestra dos nmeros el primero es el nivel previo en que se estaba y el segundo el nivel actual, si no se ha cambiado de nivel aparece una N. Comando init Este comando te permite cambiar el nivel de ejecuccin actual por otro, es decir puedes estar en el nivel 3 y en cualquier momento pasar al 5 o viceversa, o entrar a un modo monousuario para tareas de mantenimiento como utilizar fsck. Esto sin necesidad de cambiar la lnea initdefault en /etc/inittab,

Axel Munguia Zaragoza 3er sem. Ing. Sistemas Computacionales 14/10/2012 simplemente usando el comando init: #> init 3 Puedes reiniciar el equipo con init 6 o incluso apagarlo con init 0, de hecho shutdown y otros comandos como halt, lo que hacen es invocar a init para apagar el equipo mas otras tareas como sincronizar buffers, etc. Si ests en una mquina que tenga particiones con sistemas de archivos ext2 o de windows como FAT, si invocas init 0 o init 6 tal cual, corres el riesgo de perder datos que no estn guardados en disco todava, para esto combina init 0 con el comando sync que escribe lo que este en buffers de memoria a disco: #> sync; sync; init 0 Con un doble sync nos aseguramos que todo se escriba en disco antes de comenzar a apagar. Los directorios rc Debajo de /etc se encuentra el directorio rc.d que a la vez contiene un directorio para cada nivel de ejecuccin, asi tenemos rc0.d, rc1.d, rc2.d, rc3.d, etc. Hay algunas distros que estos directorios estn ubicados directamente en /etc. Como ya te imaginaras, cada uno de estos directorios contiene scripts (o mas bien enlaces a scripts) que apuntan al directorio init.d, entonces el comando init (ya sea ejecutado manualmente o cuando se inicia el sistema), dependiendo del nivel indicado leera cada uno de los enlaces o accesos directos del directorio respectivo. Ahora bien, un ejemplo (parcial) tpico de estos directorios puede ser el siguiente, tomado de rc3.d
lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root root root root root root root 7 9 8 9 8 9 7 9 12 10 9 Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct Oct 20 20 20 20 20 20 20 20 20 20 20 20:05 20:05 20:05 20:05 18:23 18:22 18:29 18:23 18:24 21:16 18:23 K22dbus -> ../init.d/dbus K22resmgr -> ../init.d/resmgr K24fbset -> ../init.d/fbset K24random -> ../init.d/random S01fbset -> ../init.d/fbset S01random -> ../init.d/random S03dbus -> ../init.d/dbus S03resmgr -> ../init.d/resmgr S04boot.udev -> ../init.d/boot.udev S05network -> ../init.d/network S06syslog -> ../init.d/syslog

Ntese que todos son enlaces al directorio init.d que como ya se vi previamente es donde realmente estn ubicados los scripts de arranque de los servicios o servidores. Tambin, todos los enlaces comienzan con K (kill) o con S (start), es pues fcil deducir que los que comienzan con K son scripts que recibirn el argumento stop y los que comienzan con S el de start, es decir, se inician. Esta gran simplicidad ofrece una enorme potencia al momento de configurar servicios ya que basta con agregar o quitar enlaces con el formato indicado para personalizar los niveles de ejecuccin a nuestro gusto. Despus de la K o S sigue un nmero consecutivo, seguido generalmente del nombre del servicio que afectan, el nmero secuencial es simplemente el orden en que se leeran los scripts, primero los K comenzando con el 01 y haca adelante y despus los S. Entonces si por ejemplo no queremos que se inicie el samba en el nivel 3 bastara con borrar su enlace en este directorio: #> pwd /etc/rc.d/rc3.d

Axel Munguia Zaragoza 3er sem. Ing. Sistemas Computacionales 14/10/2012 #> rm S54smb Y listo, el servidor samba ya no arrancara cuando entremos en este nivel de ejecuccin. Si por lo contrario lo que deseamos es iniciar (o apagar) un servicio, basta con crear su enlace en el directorio respectivo:
#> pwd /etc/rc.d/rc5.d #> ln -s /etc/rc.d/init.d/mysql S90mysql #> ls -l S90mysql lrwxrwxrwx 1 root root 9 Oct 20 18:23 S90mysql -> ../init.d/mysql

Con esto la siguiente vez que iniciemos el equipo o cambiemos a nivel 5 con init, tambin se iniciar el servidor de la base de datos MySQL. El nmero 90 es escogido al azar entre 01 y 99 es simplemente el orden en que sern iniciados o detenidos los servicios. Comando chkconfig Lo anterior puede resultar engorroso para ms de alguno pero es la nica manera si no se tienen herramientas grficas o de lnea de comandos para configurar los servicios mas agilmente, y precisamente una de estas herramientas de lnea de comandos es chkconfig que permite configurar que servicios arrancan/detienen en cada nivel de ejecuccin. Aclaracin: chkconfig no inicia ni detiene servicios al momento (excepto aquellos bajo xinetd), tan solo crea o elimina precisamente los enlaces de los que se habl en el punto anterior de una manera mas amigable. Si lo que se quiere es iniciar o detener el servicio en tiempo real o manualmente hay que usar service o directamente el script con su argumento conveniente tal como se explic anteriormente. Veamos ejemplos que muestran como trabajar con chkconfig. Con la opcin --list nos da una lista completa de todos los servicios instalados y para cada nivel si arrancar (on) al entrar a ese nivel o se detendr (off) o simplemente no se iniciara. Ntese que al final de la lista vienen los servicios que dependen del superservidor xinetd. #> chkconfig --list apache2 0:off 1:off 2:off 3:off 4:off 5:off 6:off bluetooth 0:off 1:off 2:off 3:off 4:off 5:off 6:off cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off cups 0:off 1:off 2:on 3:on 4:off 5:on 6:off dhcpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ldap 0:off 1:off 2:off 3:off 4:off 5:off 6:off mysql 0:off 1:off 2:off 3:off 4:off 5:off 6:off named 0:off 1:off 2:off 3:off 4:off 5:off 6:off network 0:off 1:off 2:on 3:on 4:off 5:on 6:off nfs 0:off 1:off 2:off 3:on 4:off 5:on 6:off quotad 0:off 1:off 2:off 3:off 4:off 5:off 6:off smb 0:off 1:off 2:off 3:on 4:off 5:on 6:off vmware 0:off 1:off 2:on 3:on 4:off 5:on 6:off xinetd 0:off 1:off 2:off 3:on 4:off 5:on 6:off zebra 0:off 1:off 2:off 3:off 4:off 5:off 6:off xinetd based services:

Axel Munguia Zaragoza 3er sem. Ing. Sistemas Computacionales 14/10/2012 rsync: sane-port: servers: services: swat: systat: tftp: time: time-udp: vnc: vsftpd: off off off off on off off off off off off

Si se indica como argumento el nombre de algn servicio nos regresar su estatus: #> chkconfig smb smb on Sin ningn argumento nos dar una lista con el status de todos los servicios: #> chkconfig httpd off mysql on smb on Se desea que el servidor web apache (httpd) inicie cuando se entra en el nivel 5, entonces usamos la opcin --level: #> chkconfig --level 5 httpd on La base de datos MySQL no se desea que inicie en los niveles 3 y 5, solo hasta que el administrador decida arrancarla: #> chkconfig --level 35 mysql off Ambientes grficos En todas las distribucciones actuales en sus ambientes grficos X Window incluyen herramientas de configuracin se servicios que facilitan mucho la administracin de servidores. En una misma pantalla podemos cambiar niveles de ejecuccin, con un click indicar si el servicio arranca o se detiene, incluso iniciarlos o detenerlos en ese momento, todo va grfica. Lo mejor es aprenderlo a realizarlo desde la lnea de comandos ya que esta ser muy similar en casi todas las distros o puede ser que el linux que se est utilizando no tenga servicios grficos, aun asi, ya familiarizados con una distribuccin es muy sencillo e intuitivo utilizar estas herramientas grficas por lo que no entraremos en detalles, solo diremos que por ejemplo en SuSE con yast o yast2 es posible no solo controlar servicios sino multitud de cosas mas, en redhat tenemos redhat-config-services y en fedora e incluso versiones enterprise de redhat es system-config-services, mandrake, ubuntu, etc. Todas tienen una interfaz grfica, es solo cuestin de buscarla. Por otro lado tenemos interfaces web como la excelente herramienta webmin, que tambin permite un control total sobre el manejo de servidores, sumamente eficaz cuando se controlan servidores via remota por la web.

S-ar putea să vă placă și