Я установил и настроил incron на сервере Ubuntu 16.04. Теперь я хочу контролировать, если файлы добавляются к определенной папке. Это работает хорошо потому что, когда я имею
incrontab -l
/var/www/html/uploads IN_ATTRIB touch /home/incronuser/test.txt
и когда файл добавляется к папке загрузок, файл test.txt создается в пользователях домой.
Кроме того, если я повторяю что-то вместо того, чтобы делать касание, в обоих случаях я вижу incron
действие в /var/log/syslog
. Так, чтобы все работы как ожидалось.
Но теперь я хочу запустить скрипт удара, когда файл добавляется к папке загрузок. Этот сценарий работает хорошо, когда тот же пользователь, который создал incron задание, делает:
~$ bash /home/incronuser/myscript.sh
Это хорошо работает, и сценарий делает то, что это, как предполагается, делает.
Теперь я сменяю свою incron работу для запущения того скрипта при инициировании:
incrontab -e
/var/www/html/uploads IN_ATTRIB /home/incronuser/myscript.sh
Но я не могу заставить это работать ни за что в жизни. После других Вопросов и ответов на здесь и в другом месте в Интернете, я попытался использовать кавычки в различных формах, которые попробовали использовать команду удара в crontab
строка, но все перестали работать до сих пор. Вещи как:
/var/www/html/uploads IN_ATTRIB bash /home/incronuser/myscript.sh
/var/www/html/uploads IN_ATTRIB /bin/bash /home/incronuser/myscript.sh
"/var/www/html/uploads IN_ATTRIB /home/incronuser/myscript.sh"
/var/www/html/uploads IN_ATTRIB "/home/incronuser/myscript.sh"
/var/www/html/uploads IN_ATTRIB sudo bash -c "/home/incronuser/myscript.sh"
Я должен добавить, что во всех этих случаях, действительно вижу incron
задание призвано syslog
, просто ничего не происходит. Я не действительно уверен, где я мог найти более подробные журналы того, что идет не так, как надо. Было бы большим получить некоторое понимание на этом.
Хорошо мне разобрались в нем. Я просто уеду, мое разрешение здесь для кого-либо еще борющегося с этим (incron также не документируется как крон и существуют принципиальные различия).
Первая ошибка, которую я совершил, была способом, которым я создал свой incrontab. Это должно быть:
/var/www/html/uploads IN_ATTRIB /bin/bash /home/incronuser/myscript.sh
Во-вторых, я не выполнял его как правильный пользователь. Файл, который должен был быть вставлен в базу данных, сначала необходимую к перемещенному в/var/lib/mysql-files, и только базироваться, имеет доступ там. Таким образом, incron задание должно было быть создано как корень также.