====== File Watcher Service ====== On CentOS/RHEL: Setup the epel repository and install inotify-tools, according to https://github.com/inotify-tools/inotify-tools/wiki. yum install -y epel-release && yum update yum install inotify-tools Create a new shell script. vim /usr/local/bin/file_watcher Example code. Add the actions you need, after a file change is detected. Change the file name. #!/usr/bin/env bash file_name="/tmp/watched_file.txt" log_file="/tmp/$(basename "${0}").log" lock_file="/tmp/$(basename "${0}").lock" # check & set lock exec 200>${lock_file} flock -n 200 || { echo "Another instance of this script is already running. Abort."; exit 1; } PID=$$ echo ${PID} 1>&200 # file watch while true; do inotifywait -e modify ${file_name} echo "[$(date --iso-8601=seconds)] change detected on file ${file_name}" >> ${log_file} # maybe do some other actions after a modification done Create a systemd service file for the shell script. vim /etc/systemd/system/file_watcher.service If the file is modified by a service, change the After parameter to the according service. [Unit] Description=Watches a specific file for changes After=network.target [Service] Type=simple ExecStart=/usr/local/bin/file_watcher Restart=on-failure RestartSec=3 [Install] WantedBy=multi-user.target Reload systemd and start the new service. systemctl daemon-reload systemctl start file_watcher.service If you need to create some form of monitoring script/actions, maybe this snippets will help you: [root@server ~]# systemctl is-active file_watcher.service >/dev/null && echo OK || echo NOK OK [root@server ~]# systemctl stop file_watcher.service [root@server ~]# systemctl is-active file_watcher.service >/dev/null && echo OK || echo NOK NOK