我从linuxaria.com复制了此代码作为示例,并且在我的情况下工作得很好,问题是当我从终端inotifywait stop退出时。即使退出航站楼,我也想在背景上跑。我该怎么做?

#!/bin/sh

# CONFIGURATION
DIR="/tmp"
EVENTS="create"
FIFO="/tmp/inotify2.fifo"


on_event() {
  local date=$1
  local time=$2
  local file=$3

  sleep 5

  echo "$date $time Fichier créé: $file"
}

# MAIN
if [ ! -e "$FIFO" ]
then
  mkfifo "$FIFO"
fi

inotifywait -m -e "$EVENTS" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' "$DIR" >       "$FIFO" &
INOTIFY_PID=$!


while read date time file
do
  on_event $date $time $file &
done < "$FIFO"

最佳答案

您可以使用screennohup运行脚本,但是由于脚本似乎不会将其输出记录到任何文件,因此我不确定这样做会有什么帮助。

nohup bash script.sh </dev/null >/dev/null 2>&1 &

或者
screen -dm bash script.sh </dev/null >/dev/null 2>&1 &

拒绝也可以适用:
bash script.sh </dev/null >/dev/null 2>&1 & disown

您应该只测试哪一个在终端退出时不允许该命令挂起或挂断。

如果要将输出记录到文件中,可以尝试以下版本:
nohup bash script.sh </dev/null >/path/to/logfile 2>&1 &
screen -dm bash script.sh </dev/null >/path/to/logfile 2>&1 &
bash script.sh </dev/null >/path/to/logfile 2>&1 & disown

关于bash - 在后台运行inotifywait,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18901622/

10-09 04:56