Como saber qual arquivo ou inode acionou uma unidade systemd.path?

5

O Systemd oferece arquivos unitários que controlam o monitoramento de um determinado caminho através do inotify: systemd.path(5) . Se um arquivo ou diretório for modificado no caminho observado, o systemd.service(5) correspondente será chamado.

De acordo com a página inotify(7) man:

To determine what events have occurred, an application read(2)s from the inotify file descriptor. If no events have so far occurred, then, assuming a blocking file descriptor, read(2) will block until at least one event occurs (unless interrupted by a signal, in which case the call fails with the error EINTR; see signal(7)).

Each successful read(2) returns a buffer containing one or more of the following structures:

      struct inotify_event {
          int      wd;       /* Watch descriptor */
          uint32_t mask;     /* Mask of events */
          uint32_t cookie;   /* Unique cookie associating related
                                events (for rename(2)) */
          uint32_t len;      /* Size of name field */
          char     name[];   /* Optional null-terminated name */
      };

Então, se o systemd ver uma mudança no caminho observado, existe uma maneira de obter dados do comando read(2) ? Notavelmente eu preciso que o name[] seja usado como um argumento para o comando para o ExecStart= na instrução systemd.service(5) unit.

[Service]
ExecStart=/usr/bin/command --file=$inotifyName
    
por Tim 25.01.2014 / 11:01

0 respostas