簡體   English   中英

在Raspbian上的incron沒有工作

[英]incron on Raspbian not working

我幾乎和這個問題有着相同的情況,除了接受的答案對我來說根本不起作用。 制作這個簡單的Python腳本是我的第二次嘗試; 回顯文本並將其重定向到文件也不會做任何事情。 我正在使用Raspbian linux發行版。

pi@raspberrypi ~ $ incrontab -l
/home/pi IN_CREATE,IN_DELETE /home/pi/test.py

pi@raspberrypi ~ $ cat test.py 
#! /usr/bin/python3 
f = open('test.txt', 'a+')
f.write('success!\n')
f.close()

pi@raspberrypi ~ $ touch abc.123; rm abc.123

pi@raspberrypi ~ $ tail -n 3 /var/log/syslog
May 17 00:17:09 raspberrypi incrond[1799]: (pi) CMD (/home/pi/test.py )
May 17 00:18:36 raspberrypi incrond[1799]: (pi) CMD (/home/pi/test.py )
May 17 00:18:36 raspberrypi incrond[1799]: (pi) CMD (/home/pi/test.py )

pi@raspberrypi ~ $ ls
bin  Desktop  python_games  test.py

注意主目錄中缺少test.txt

我已經在標准的Debian Wheezy上進行了測試。 您的腳本面臨的問題來自當前工作目錄(CWD)不是您所期望的事實。

在打開操作中設置絕對路徑是一種避免它的方法:

f = open('/home/pi/test.txt', 'a+')

首先,如果test.txt事件更改會再次觸發腳本,我擔心無限遞歸,但它似乎是由incron處理的。

由於./test.py在被incron觸發時丟失,因此使用./test.py手動測試腳本非常重要。

以下是$@選項的腳本變體以及其他信息:

#! /usr/bin/python3
import sys
import os
f = open('/home/pi/test.txt', 'a+')
f.write('success on ' + sys.argv[1] + ' with CWD=' + os.getcwd() + '\n')
f.close()

哪個是這樣注冊的:

$ incrontab -l
/home/pi IN_CREATE,IN_DELETE /home/pi/test.py $@

現在您將在/home/pi/test.txt看到

success on /home/pi/ with CWD=/

這解釋了您的腳本首先嘗試編寫/test.txt並且在文件系統上沒有要求的權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM