[英]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.