Importemos la clave del archivo backports.org en apt...
... y corre
El repositorio etch-backports está inactivo por defecto, por lo que para instalar incron desde él, debemos usar el siguiente comando:
El uso de incron es muy parecido al uso de cron. Tiene el comando incrontab que le permite enumerar (-l), editar (-e) y eliminar (-r) las entradas de incrontab. Para obtener más información al respecto, consulte
Esto significa que si queremos usar incrontab como raíz, debemos eliminar /etc/incron.allow (que no es seguro porque todos los usuarios del sistema pueden usar incrontab)...
... o agregue root a ese archivo (recomendado):
raíz |
Antes de hacer esto, recibirá mensajes de error como este cuando intente usar incrontab:
servidor1:~# incrontab -l
el usuario 'raíz' no puede usar incron
servidor1:~#
Después funciona:
servidor1:~# incrontab -l
no hay tabla para root
servidor1:~#
Podemos usar
incrontab -e
para crear trabajos incron. Antes de hacer esto, echamos un vistazo a
hombre 5 incrontab
porque explica el formato de los crontabs. Básicamente, el formato es el siguiente...
...donde puede ser un directorio (es decir, el directorio y/o los archivos directamente en ese directorio (¡no los archivos en subdirectorios de ese directorio!) que se observan) o un archivo.
puede ser una de las siguientes:
IN_ACCESS Se accedió al archivo (leer) (*)
IN_ATTRIB Metadatos cambiados (permisos, marcas de tiempo, atributos extendidos, etc.) (*)
IN_CLOSE_WRITE El archivo abierto para escribir se cerró (*)
IN_CLOSE_NOWRITE El archivo no abierto para escribir se cerró (*)
IN_CREATE Archivo/directorio creado en el directorio observado (*)
IN_DELETE Archivo/directorio eliminado del directorio observado (*)
IN DELETE archivo observado /directorio se eliminó
IN_MODIFY El archivo se modificó (*)
IN_MOVE_SELF El archivo/directorio observado se movió
IN_MOVED_FROM El archivo se movió fuera del directorio observado (*)IN_OPEN El archivo se abrió (*)
Al monitorear un directorio, los eventos marcados con un asterisco (*) arriba pueden ocurrir para archivos en el directorio, en cuyo caso el campo de nombre en los
datos de eventos devueltos identifica el nombre del archivo dentro del directorio.
El símbolo IN_ALL_EVENTS se define como una máscara de bits de todos los eventos anteriores. Dos símbolos de conveniencia adicionales son IN_MOVE, que es una combinación de IN_MOVED_FROM e IN_MOVED_TO, e IN_CLOSE, que combina IN_CLOSE_WRITE e IN_CLOSE_NOWRITE.
Los siguientes símbolos adicionales se pueden especificar en la máscara:
IN_DONT_FOLLOW No desreferenciar pathname si es un enlace simbólico
IN_ONESHOT Monitor pathname solo para un evento
IN_ONLYDIR Solo ver pathname si es un directorio
Además, hay un símbolo que no aparece en el conjunto de símbolos de inotify. Es IN_NO_LOOP. Este símbolo deshabilita los eventos de monitoreo hasta que el actual se maneje por completo (hasta que salga su proceso secundario).
es el comando que debe ejecutarse cuando ocurre el evento. Los siguientes comodines pueden usarse dentro de la especificación del comando:
&indicadores de eventos (numéricamente)
Si observa un directorio, [email protected] contiene la ruta del directorio y $# el archivo que desencadenó el evento. Si ve un archivo, [email protected] contiene la ruta completa al archivo y $# está vacío.
Si necesita los comodines pero no está seguro de a qué se traducen, puede crear un trabajo incron como este:
/tmp/ IN_MODIFY echo "$$ [email protected] $# $% $&" |
Luego, crea o modifica un archivo en el directorio /tmp y observa /var/log/syslog:este registro muestra cuándo se activó un trabajo incron, si tuvo éxito o si hubo errores, y cuál fue el comando real. se ejecutó (es decir, los comodines se reemplazan con sus valores reales).
cola /var/log/syslog
...
21 de agosto 17:26:50 servidor1 incrond[7111]:(raíz) CMD (echo "$ /tmp huhu IN_CREATE 256")
En este ejemplo he creado el archivo /tmp/huhu; como ves, [email protected] se traduce a /tmp, $# a huhu, $% a IN_CREATE y $&a 256.
Ahora basta de teoría. Creemos nuestros primeros trabajos incron. Me gustaría monitorear el archivo /etc/apache2/apache2.conf y el directorio /etc/apache2/vhosts/, y siempre que haya cambios, quiero que Incron reinicie Apache. Así es como lo hacemos:
incrontab -e
/etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart/etc/apache2/vhosts/ IN_MODIFY /etc/init. reiniciar d/apache2 |
Eso es todo. Para fines de prueba, puede modificar su configuración de Apache y echar un vistazo a /var/log/syslog, y debería ver que incron reinicia Apache.
Para enumerar todos los trabajos incron definidos, puede ejecutar
incrontab -l
servidor1:~# incrontab -l
/etc/apache2/apache2.conf IN_MODIFY /etc/init.d/apache2 restart
/etc/apache2/vhosts/ IN_MODIFY /etc/init.d /apache2 reiniciar
servidor1:~#
Para eliminar todos los trabajos incron del usuario actual, ejecute
incrontab -r
servidor1:~# incrontab -r
eliminando la tabla para el usuario 'raíz'
la tabla para el usuario 'raíz' se eliminó con éxito
servidor1:~#
3 Enlaces
- incron:http://inotify.aiken.cz/?section=incron&page=about&lang=en