After experimenting with AWS S3 triggering events on
PutObject it is time to revisit and document event triggering in Systemd.
In the past I used this to trigger an image recognition on an uploaded image in a folder. This is done using systemd-path. Two systemd config files are needed. One is monitoring a path and the other one is the service that is executed when the first one is firing. Assume we have a folder that watches on images uploaded and triggers a script when a new image is added.
First watch the
/somewhere/inbox folder on changed files:
The parameter in
Unit is the service that is called on change.
This service could look like this:
Both files have to live in
/etc/systemd/system/ (or a symlink from there to a versioned folder).
Now activate the two systemd configs:
sudo systemctl enable image.path image.service sudo systemctl start image.path
The filename is not send to the service, so the service has to glob in the watched folder for the new files and should start processing by moving the file.
The possibility of processing a file twice is still there if two events are triggered too fast.
The triggering default limit is "2 seconds" between events.
This can be changed with
Processing an image twice would be no problem and it is very unlikely to happen, because the rate images are added is currently one per hour.
An example for the processing script may look like this:
Everything written to stdout (echo, print, ...) can be seen in systemd journal, i.e.
journalctl -u image.