Во-первых, не зацикливайте выводfind
. Вместо этого используйте find
для выполнения вашей команды. Это гарантирует, что имена файлов не будут искажены. По той же причине вам нужно заключить расширения ваших переменных в кавычки .
mkdir -p "/md5check/$date/PD1"
find /oracle/PD1/sapbackup/b*/ -type f -newermt "$date" -exec sh -c '
for pathname do
printf "file = %s\n" "$pathname"
openssl md5 -binary "$pathname" | base64
done' sh {} + >"/md5check/$date/PD1/md5local.txt"
Это позволит найти любой обычный файл в любом из каталогов /oracle/PD1/sapbackup/b*/
или ниже, который имеет отметку времени модификации более новую, чем $date
. Для этих файлов выполняется короткий скрипт. Сценарий печатает путь к файлу вместе с контрольной суммой MD5 в кодировке base64. Вывод find
идет в указанный файл в конце.
Очевидно, что перенаправление в выходной файл может быть выполнено с помощью >>
внутри скрипта, но это будет означать необходимость открывать выходной файл для записи более одного раза (также, $date
там недоступно ).
См. также:
Запуск обоих одновременно не рекомендуется. Обе службы могут использовать разные ntp-серверы с небольшой разницей во времени. Таким образом, ваш сервер будет очень часто корректировать время :время, синхронизированное службой ntp, будет изменено systemd -timesyncd и наоборот -.
Возможно, вы уже знаете, что вы можете отключить systemd-timesyncd
запуск при загрузке, а также одновременно остановить работающую службу, используя:
systemctl disable systemd-timesyncd --now
Вы также можете полностью отключить systemd-timesyncd
с помощью :
timedatectl set-ntp 0
Или включите с помощью:
timedatectl set-ntp 1
См.:
timedatectl --help
Чтобы проверить, включена или отключена systemd-timesyncd
, просто введите timedatectl status
и проверьте значение « Сетевое время на :», где « да » указывает, что включен и « нет » означает отключено .
Извините за отдельный ответ, но я не могу добавить комментарий из-за отсутствия репутации.