這是我的 incrontab (托尼的 incrontab):
/home/tony/Workspace/cocoonr/ui/static/ui/img/icons/vector IN_MODIFY,IN_CREATE,IN_MOVED_TO /bin/sh /home/tony/Workspace/cocoonr/boilerplate/svg2djangohtml $@/$# /home/tony/Workspace/cocoonr/ui/templates/inc/icons/
我多次測試了它,改變了一些東西,當 incrond 作為服務運行時(使用 openrc),無法使其工作。
如果我在前台運行 incrond ( incrond -n
),那麼 Tony 的 incrontab 就可以工作
如果我將 root 的 incrontab 設定為上面給出的值,即使作為服務運行它也可以工作。
我的托尼在/etc/incron.allow
:
root
tony
並且沒有/etc/incron.deny
。
我甚至嘗試使用更簡單的 incrontab:
/tmp/foo IN_ATTRIB touch /tmp/bar
結果是一樣的。
如何讓使用者的incrontab運作?
答案1
如果 incrontab 的二進位(我不知道,從未使用過它)沒有設定他的 SGID 位,則可能會導致這種奇怪的行為。
設定它chmod g+s /path/to/binary
(/usr/bin/incrontab,也許?)
您可以評估它是否是透過以下方式設定的:
ls -l /path/to/binary
(例)
ls -l /usr/bin/crontab
-rwxr-s--x 1 root crontab 44336 Jun 23 18:47 /usr/bin/crontab
答案2
我遇到了類似的問題(這就是我發現這個問題的方式)。
如果以下命令使其工作,
incrontab -n
問題可能是 incron/incrond 服務未運行。檢查它是否正在運行以及是否啟用在啟動時運行(以防系統重新啟動)。
我面臨的另一個問題是由於我無意中創建的無限循環。
如果您的腳本修改了 incron 正在監視的資料夾中的任何文件,它會不斷觸發事件,並且每個事件都會引發一個新進程(通過fork()
)。很快,該服務就無法再分叉了。在這種情況下,服務日誌顯示下列錯誤。
cannot fork process: resource temporarily unavailable
在此刻,
- 停止服務
- 更改腳本,使其不會修改監視資料夾中的文件
- 重新啟動服務