我尝试了所有方法让这个脚本在后台运行(作为启动脚本、守护进程等)。
问题是这个脚本在终端中可以运行,但在后台却不行:
#!/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)上尝试过此操作
答案1
我尝试了所有方法让这个脚本在后台运行(作为启动脚本、守护进程等)
....但你没有告诉我们任何您使用的代码。
'ftpscript' 未执行,并且未将任何内容写入指定的日志文件
您是否检查过您启动的进程是否仍在运行?什么日志文件?您显示的代码不会写入任何日志文件。
如果您(也)提供了与此相关的 Linux 的一些详细信息,那将会很有帮助。
这是一个 sys V init 脚本,它应该可以解决问题(如果您知道如何部署它)....
#!/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 $?