Для вашего варианта использования вы можете избежать идентификации общих каталогов, потому что rm -rf
просто игнорирует несуществующие.
Так что достаточно найти
все каталоги в dir1
и удалить их из dir2
:
find dir1 -mindepth 1 -maxdepth 1 -type d -printf "dir2/%f\0" |xargs -0 rm -rf --
Некоторые пояснения. По умолчанию find
будет печатать все каталоги с полным путем, который равен dir1
. Итак, мы используем -printf
для печати только имени файла без ведущих каталогов (% f) плюс другой путь «dir2», который мы хотим удалить. Кроме того, мы завершаем строку нулевым байтом '\ 0', а не новой строкой, чтобы использовать xarg
параметр -0
, который делает все это безопасным в отношении имен файлов с пробелами. Затем xargs
прочитает стандартный ввод и выполнит команду rm
, добавив все строки в качестве аргументов.
Обратите внимание, прежде чем удалять их, вы можете проверить свою командную строку, добавив echo
, чтобы печатать только команды rm
:
find dir1 -mindepth 1 -maxdepth 1 -type d -printf "dir2/%f\0" |xargs -0 echo rm -rf --
Только список общие каталоги, вы можете использовать ls
вместо rm
(добавив 2> / dev / null, чтобы игнорировать несуществующие):
find dir1 -mindepth 1 -maxdepth 1 -type d -printf "dir2/%f\0" |xargs -0 -r ls -d -- 2>/dev/null
Некоторая служба зависает, и systemd ожидает ее выхода. Systemd, вероятно, неточно оценивает время, которое потребуется, время (обычно 90 секунд) - это то, как долго systemd будет ждать, прежде чем у него закончится терпение. См. Этот пост:
«Остановка заданий» — это когда systemd
ожидает остановки определенного «задания», например. некоторый процесс, который он ожидает завершения, прежде чем продолжить. Если вы видите предупреждающее сообщение о том, что "выполняется остановленное задание..." (и т. д. ), технически это означает, что в очереди заданий что-то находится на рассмотрении.
Однако, прежде чем копаться во всей очереди системных заданий, имейте в виду, что иногда эти предупреждающие сообщения являются косвенным результатом факторов окружающей среды,(на самом деле, сообщение даже упоминается в их репозитории GitHub как возможное ошибка ).
Например, :мы получали сообщения, связанные с «остановкой задания», и не могли понять, почему.... Оказывается, на диске почти не осталось места, и ОС начала вести себя странно.
Обновление сервера до диска большего размера и перезагрузка устранили проблему;)