inotifywait shell脚本作为守护进程运行

时间:2018-01-16 00:26:54

标签: linux shell sh inotify inotifywait

我有一个监视目录(递归)的脚本,并在文件更改时执行命令。当使用监视标志时,这可以正常工作:

import datetime
import pandas as pd
import numpy as np

d = {'sku': ['RT-17']}
df_skus = pd.DataFrame(data=d)
print(df_skus)

d = {'date': ['2017/02/17', '2017/03/17', '2017/04/17', '2017/04/18', '2017/05/02'], 'item_sku': ['HT25', 'RT-17', 'HH30', 'RT-17', 'RT-19']}
df_orders = pd.DataFrame(data=d)
print(df_orders)

for i in df_orders.index:
    print("\n toll")
    df_orders.loc[i,'date']=pd.to_datetime(df_orders.loc[i, 'date'])

df_orders = df_orders[df_orders["item_sku"].isin(df_skus["sku"])]
monthly_sales = df_orders.groupby(["item_sku", pd.Grouper(key="date",freq="M")]).size()
monthly_sales = monthly_sales.unstack(0) 

print(monthly_sales)

但是,我想在启动时和后台运行它,所以天真以为我可以将-m标志更改为-d(将inotifywait作为守护程序运行,并包含--outfile位置)然后将其添加到rc .local在启动时运行。我哪里错了?

3 个答案:

答案 0 :(得分:2)

Incron是用于inotify事件的类似cron的守护进程。

只需要使用incrontab和任务的条目:

/path/to/directory IN_ALL_EVENTS /usr/local/bin/my-script $@ $# $%

/ local / bin / my-script 将是:

#! /bin/bash
local path=$1
local action=$2
local file=$3
if [ <perform a check> ]
then
  my_command 
fi

答案 1 :(得分:2)

嗯.... -d 它背景本身并输出 ONLY 到outfile,所以你的整个管道&amp;循环结构是没有实际意义的,它永远不会看到任何数据。

答案 2 :(得分:0)

您需要在&

的命令末尾添加一个/etc/rc.local

在命令末尾添加一个&意味着 在后台运行此程序,以便用户仍可以输入。