Вы не можете войти в chroot, потому что вам нужен /dev/log относительно корня вашего chroot. (это известная "особенность" ).
Вернувшись в rsyslog
, вы добавляете аналогичную конфигурацию к этой:
/etc/rsyslogd.conf
$AddUnixListenSocket /chroots/user1/dev/log
И перезапуститеrsyslog
(вне chroot)
См. Как вести журнал внутренних -sftp chroot заключенных в тюрьму пользователей
Я бы посоветовал избегать зацикливания вывода команды find
по причинам, обсуждаемым здесь:
Вместо этого рассмотрите возможность использования -execdir
с одним вкладышем -для удаления компонентов пути:
#!/bin/bash
export NOW=$(date +%Y-%m-%d-%H%M%S)
find /path/to/file -type f ! -name '*.*' -execdir sh -c '
for f; do echo mv "$f" "${NOW}_${f#./}"; done
' find-sh {} +
Удалите echo
, как только убедитесь, что он работает правильно. Обратите внимание, что NOW
необходимо экспортировать, чтобы его значение было доступно в подоболочке sh -c
.
Если ваша реализация find
не предоставляет -execdir
, вы можете использовать -exec
, если вы удалите и замените путь явно:
find /path/to/file -type f ! -name '*.*' -exec sh -c '
p="${1%/*}"; echo mv "$1" "$p/${NOW}_${1##*/}"
' find-sh {} \;
Использование GNU Parallel:
find /path/to/file -type f ! -name "*.*" -print0 |
parallel -0 mv {} {//}/$(date +%Y-%m-%d-%H%M%S)_{/}.txt
Рассмотрите возможность использования ISO8601 для меток времени:
find /path/to/file -type f ! -name "*.*" -print0 |
parallel -0 mv {} {//}/$(date +%Y-%m-%dT%H:%M:%S)_{/}.txt
Или:
find /path/to/file -type f ! -name "*.*" -print0 |
parallel -0 mv {} {//}/$(date +%Y%m%dT%H%M%S)_{/}.txt
Это означает, что вы можете использовать стандартизированный синтаксический анализатор ISO8601 для последующего анализа метки времени.