Это связано с тем, что миграция Debian на systemd не была выполнена идеально для Debian Jessie. Поскольку Raspbian основан на Debian, у него такие же проблемы. Проблема в том, что не все задания в rcS.d имеют соответствующий модуль systemd, и что сценарии инициализации на более поздних уровнях выполнения по-прежнему ожидают, что все в rcS.d будет выполнено к тому моменту, когда они начнут выполняться. Чтобы гарантировать правильность этого предположения, пакеты systemd в Debian добавляют модуль sysinit, который зависит от всего в rcS.d и от которого зависит (прямо или косвенно) все на более поздних уровнях запуска.
К сожалению, этот обходной путь сохраняет концепции, о которых systemd не знает, и в результате это может привести к циклическим зависимостям, как вы можете видеть здесь. Одна из целей следующего выпуска Debian - избавиться от этого обходного пути и проблем, которые он вызывает.
Лично для вас мало что можно сделать. Вы можете настроить зависимости, если хотите, но я бы не стал этого делать, если это не вызывает проблем с запуском служб. Если это действительно вызывает такие проблемы, вероятно, также лучше зарегистрировать ошибку, чем исправлять ее самостоятельно, поскольку вы не единственный, кто столкнется с этими проблемами ...
Просто идея. Сохраните 2 каталога -один с файлами, затронутыми скриптом (рабочий каталог )и второй с синхронизированными файлами (зеркальный каталог ). Ставим на первую строку скрипта команду синхронизации:
rsync -xrlptgoEvv /home/user/work/ /home/user/mirror/
и в конце команды скрипта для обнаружения различий между каталогами work
и mirror
с перенаправлением вывода в обычный текстовый файл:
diff -rq /home/user/work/ /home/user/mirror/ > /home/user/list-of-files.txt
Вы можете дополнительно отфильтровать вывод команды diff
с помощью sed
, awk
и т. д., чтобы иметь необходимый формат ваших данных. Также рассмотрите вариант --delete
с rsync
для удаления из каталога mirror
файлов, которые были удалены из каталога work
с момента последней синхронизации.
ОБНОВЛЕНИЕ. Возможно, лучший способ — создать список файлов поверх скрипта:
ls -la /home/user/work/ > /home/user/list-of-files.txt
и внизу скрипта добавить новый список файлов к старому списку, отсортировать его и отфильтровать уникальные строки, которые будут представлять только новые файлы:
ls -la /home/user/work/ >> /home/user/list-of-files.txt
cat /home/user/list-of-files.txt | sort | uniq -u > /home/user/list-of-new-files.txt
если ваше время не содержит секунды , вы можете использовать ls
с опцией -u
:
-u with -lt: sort by, and show, access time; with -l: show access time and sort by name; otherwise: sort by access time, newest first
в противном случае вы можете перечислить текущие файлы с помощью ls -u -1>../Before
и запустить его снова после кода ls -u -1 >../After
, затем использовать comm -3../After../Before
и выполнить свою работу