Xauth :тайм-аут в файле полномочий блокировки /home/user /.Xauthority

Это можно сделать одной командой find:

find. -type f ! -name 'md5_*' -execdir sh -c \
  'for f; do
     b="$(basename "$f")"
     [ ! -e "md5_$b" ] || [ "$b" -nt "md5_$b" ] && md5sum "$b" >  "md5_$b"
   done' sh {} +

Параметр ! -name 'md5_*исключает md5-файлы _*, а параметр -execdirзаставляет find выполнять cd для каждого каталога, содержащего файлы, а затем запускать в нем команду sh -c '....'. Он запускает как можно меньше sh -c...команд в каталоге (обычно только одну, в зависимости от максимального ограничения командной строки в вашей системе -обычно 2 МБ или более в наши дни ).

Тест [ ! -e "md5_$b" ] || [ "$b" -nt "md5_$b" ]в сценарии оболочки гарантирует, что md5sumвыполняется только для файлов, в которых либо файл md5_не существует, либо если файл новее, чем его файл md5_.


Если бы вы хотели иметь только один md5sums.txtфайл в каждом каталоге, это было бы проще:

find. -type f ! -name 'md5sums.txt' -execdir sh -c \
  'md5sum "$@" >md5sums.txt' sh {} +

и даже проще, если вам нужен только один md5sums.txtфайл со списком всех файлов во всех подкаталогах:

rm -f md5sums.txt
find. -type f -exec md5sum {} + >> md5sums.txt

Эта версия должна работать с версией Busybox findи, возможно, с другими минималистскими версиями:

find. -type f ! -name 'md5_*' -exec sh -c \
  'for f; do
     cd "$(dirname "$f")"
     b="$(basename "$f")"
     [ ! -e "md5_$b" ] || [ "$b" -nt "md5_$b" ] && md5sum "$b" >  "md5_$b"
     cd - >/dev/null
   done' sh {} +

Он будет работать немного медленнее, потому что он должен изменить каталог в сценарии оболочки... и он должен сделать cdдважды для каждого файла, а не только один раз для каждого каталога.

Я бы использовал pushdи popdдля изменения каталогов, но если вы используете busybox find или подобное, вы, вероятно, также используете минималистский sh, например dash.

2
24.10.2021, 23:03
1 ответ

Ошибка тайм-аута блокировки.Xauthority обычно возникает из-за проблем с записью в файл. Типичные причины этого включают:

  • неправильные разрешения для файла.Xauthority (права собственности или разрешения)
  • превышена дисковая квота или диск заполнен
  • неверные права доступа к домашнему каталогу

Судя по обсуждениям в комментариях, ваша проблема — последняя из перечисленных.

Чтобы убедиться, что проблема именно в этом, запустите ls -ld ~, чтобы проверить права доступа к вашему домашнему каталогу. Скорее всего, либо у вас нет прав на запись, либо вы не являетесь владельцем каталога. chmod u+w ~исправит первое, chown $USER ~исправит второе.

0
25.10.2021, 04:52

Теги

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