Получить список файлов в качестве вывода скрипта?

Это связано с тем, что миграция Debian на systemd не была выполнена идеально для Debian Jessie. Поскольку Raspbian основан на Debian, у него такие же проблемы. Проблема в том, что не все задания в rcS.d имеют соответствующий модуль systemd, и что сценарии инициализации на более поздних уровнях выполнения по-прежнему ожидают, что все в rcS.d будет выполнено к тому моменту, когда они начнут выполняться. Чтобы гарантировать правильность этого предположения, пакеты systemd в Debian добавляют модуль sysinit, который зависит от всего в rcS.d и от которого зависит (прямо или косвенно) все на более поздних уровнях запуска.

К сожалению, этот обходной путь сохраняет концепции, о которых systemd не знает, и в результате это может привести к циклическим зависимостям, как вы можете видеть здесь. Одна из целей следующего выпуска Debian - избавиться от этого обходного пути и проблем, которые он вызывает.

Лично для вас мало что можно сделать. Вы можете настроить зависимости, если хотите, но я бы не стал этого делать, если это не вызывает проблем с запуском служб. Если это действительно вызывает такие проблемы, вероятно, также лучше зарегистрировать ошибку, чем исправлять ее самостоятельно, поскольку вы не единственный, кто столкнется с этими проблемами ...

1
23.07.2018, 20:55
2 ответа

Просто идея. Сохраните 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
0
27.01.2020, 23:43

если ваше время не содержит секунды , вы можете использовать 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и выполнить свою работу

1
27.01.2020, 23:43

Теги

Похожие вопросы