Назад | Перейти на главную страницу

Запустить inotifywait в фоновом режиме

Я испробовал буквально ВСЕ способы запустить этот сценарий в фоновом режиме (как сценарий запуска, как демон и т. Д.).

Проблема в том, что этот скрипт работает в терминале, но не в фоновом режиме:

#!/bin/sh
while /usr/local/bin/inotifywait --format '%T %w %e %f' --timefmt '%H:%M:%S %e/%m/%y' --recursive --quiet --outfile /root/watchscript_logs/log /volume1/homes/admin
do
/opt/bin/bash /root/ftpscript.sh
done

Я пробовал это на Synology NAS (DSM 4.2, Linux 2.6.32.12)

Я пробовал буквально ВСЕ способы запустить этот скрипт в фоновом режиме (как скрипт запуска, как демон и т. Д.)

.... но вы не показали нам любой кода, который вы использовали.

Ftpscript не выполняется, и в указанный файл журнала ничего не записывается.

Вы проверили, все ли запущен процесс? Какой файл журнала? Показанный вами код не записывает файлы журнала.

Было бы полезно, если бы вы (также) предоставили некоторые детали того, к какому Linux это относится.

Вот сценарий инициализации sys V, который должен помочь (если вы знаете, как его развернуть) ....

#!/bin/sh

if [ -f /etc/init.d/functions ] ; then
   . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
   . /etc/rc.d/init.d/functions  
else
   exit 0
fi

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

start() {
   gprintf "Starting inotify monitor: "
   RETVAL=1
   daemon YOURSCRIPT.sh
   RETVAL=$?
   return RETVAL
}

stop() {
   gprintf "Stopping inotify monitor: "
   killproc YOURSCRIPT.sh
   RETVAL=$?
   return RETVAL;
}

restart() {
   stop
   start
}

case "$1" in
   start)
      start
      ;;
   stop)
      stop
      ;;
   restart)
      restart
      ;;
   *)
       gprintf "Usage: %s {start|stop|restart}\n" "$0"
       exit 1
esac

exit $?