Каталог GNUstep продолжает создаваться при удалении

В моем корневом каталоге существует каталог под названием “GNUstep”. Поскольку я не использую GNUstep, я хочу удалить этот каталог, но это продолжает создаваться, когда я делаю так:

$ tree GNUstep
GNUstep
└── Defaults
1 directory, 0 files
$ rm -rf GNUstep
$ tree GNUstep # executed after a few seconds
GNUstep
└── Defaults
1 directory, 0 files

Я уже удалил каждый связанный пакет так, чтобы apt search gnustep | grep installed теперь ничего не показывает. Я также сделал apt autoremove без любой пользы. Я использую Lubuntu 16.04.

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

Это не дубликат:

  • Какова эта папка GNUstep? – Кроме “просто удаляют его” (который я сделал), это не содержит информации о том, как постоянно удалить каталог.
  • Как удалить GNUStep? – Я уже сделал это, и это не решило проблему.

Это предлагает:

Как обходное решение можно изменить значение GNUSTEP_USER_DEFAULTS_DIR в/etc/GNUstep/GNUstep.conf файле.

К сожалению, нет такого файла на моей машине, даже /etc/GNUstep существует.

1
задан 12 December 2017 в 17:25

1 ответ

TL; DR: В этом случае пакеты были удалены все еще рабочим экземпляром программы, продолженной для воссоздавания каталога. Исследование вывода ps x показанный, каково программа это было.

Здесь существует два основных соображения:

  1. Вы удаляли все, что Вы намеревались удалить?
  2. Это все еще работает даже при том, что это было удалено, и файлы удалены? (Который может произойти.)

1. Открытие, что было удалено и что Вы все еще имеете, и пакеты удаления.

Полезно отслеживать, каких мер Вы приняли (такой как, что управляет Вами, работали) удалить пакеты, а также какие пакеты были удалены. Но даже если не, можно посмотреть в файлах журнала /var/log/apt/term.log, /var/log/apt/history.log, и /var/log/dpkg.log. Специально для недавних удалений пакета легко видеть то, что было удалено. Если бы Вы выполнили удаления путем выполнения команд в терминале затем, то они должны также быть в истории оболочки, которую в Bash можно исследовать с history команда (выполненный help history для деталей), хотя это просто покажет то, чем Вы управляете, Вы работали, не их эффекты.

Искать установленные пакеты, которые содержат конкретное слово, как gnustep, Я рекомендую использовать:

apt list --installed '*gnustep*'

(Когда слово - что-то другое, чем gnustep, замена gnustep с ним.)

Отметьте это, хотя apt list поддержки действия * как globbing символ, remove и purge действия не делают. Вместо этого они рассматривают его как метасимвол в регулярном выражении (как grep делает), и люди иногда удаляли значительно больше пакетов, чем они предназначили и должны были восстановить свои системы. Обычно лучше просто передать названия определенных пакетов, которые Вы хотите удалить. Но если, например, необходимо было удалить все пакеты, имена которых начинаются libgnustep, затем Вы могли работать:

sudo apt remove ^libgnustep

(Для удаления conffiles также Вы могли использовать purge вместо remove.)

2. Удаленные программы и библиотеки могут продолжить работать даже когда-то удаленный.

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

Файл может иметь одну или несколько жестких ссылок, т.е. имена файлов. (Жесткие ссылки не должны быть перепутаны с символьными ссылками.), Когда все они были удалены, файл на самом деле удален: его inode запись удалена и места хранения на диске, который хранил данные файла, разрешены быть снова использованным. Кроме того, если файл в настоящее время открыт. Затем файл сохраняется, пока он не был закрыт, который происходит, когда программы с помощью него сознательно закрывают файл или когда они выходят. Точно так же, если файл, который Вы удалили, будет программой, то программа продолжит работать, и файл будет сохранен на диске, пока это не вышло.

Поэтому при удалении пакета, который предоставляет программу, но программа работает, удаление программы автоматически не выходит из программы, ни обязательно вмешивается в ее операцию (хотя это может, если это позже откроет другие файлы, то это ожидает присутствовать). И когда Вы удаляете пакет, который обеспечивает библиотеку, но некоторая программа все еще пользуется той библиотекой, библиотека временно продолжает существовать на диске, и программа с помощью него продолжает работать.

Перезагрузка достаточна, чтобы заставить файлы быть удаленными, потому что рабочие процессы не переживают перезагрузку. Выйдя из системы и назад в мае на самом деле быть недостаточным, хотя это достаточно часто. Однако, если Вы не должны перезагружать или предпочитать не, затем можно попытаться выяснить то, что выполняет программа, и выйдите из нее. Во многих случаях включая ситуацию Вы испытали, это - лучший способ продолжиться, потому что это быстрее и почти так же легко как перезагрузка. Но если Вы испытаете затруднения при нахождении процесса или иначе не захотите беспокоиться, то перезагрузка зафиксирует его.

Как прогоны программы GNUstep, это может читать из и записать в ~/GNUstep, и это может воссоздать его, если это находит, что это не там. Хотя Вы могли попытаться grep для определенного GNUstep-связанного текста в Вашем списке выполнения процессов (см. ниже), я предлагаю проявить более общий подход:

  1. Исследуйте вывод ps x. Вы могли также использовать a флаг-ps ax- для показа процессов всеми пользователями но я предлагаю опустить его для начинающих, потому что процесс, вероятно, принадлежит Вам настолько перечисляющий, все, вероятно, только дало бы Вам больший стог сена. Так как полная командная строка иногда полезна, я предлагаю работать ps x --columns=100000. Или просто выполненный ps | cat, потому что ps не усекает, когда его вывод не является терминалом. Это - одна из нескольких ситуаций, где "бесполезное использование кошки" не таким образом бесполезно, в конце концов.

    (Вы вряд ли на самом деле получите строки, которые являются ста тысячами символов в длину - это - просто большое количество, выбранное, чтобы гарантировать, чтобы строки не становились усеченными. Восстановление работоспособности другим порядком величины делает ps сказать fix bigness error так вот почему я выбрал 100000.)

  2. Проверить pstree. Это показывает все процессы по умолчанию, и это визуально показывает их отношения отцов и детей. Это полезно, если оказалось, что процесс принадлежал другому пользователю, в конце концов, или если это принадлежало Вам, но Вы, оказалось, пропустили его при просмотре вывода ps.

Когда Вы выполнили это ps команда (читатели: этот ответ был записан после того, как проблема была решена на основе комментария), Вы нашли, что все еще под управлением программа была:

/usr/lib/GNUstep/Applications/GSSpeechServer.app/GSSpeechSer‌​ver

Методы, которые я описал выше, не GNUstep конкретный - кроме смысла, что Ваше выполнение, которое приложения GNUstep, вероятно, выполняют как Вы и не как другой пользователь как корень, но это - общая ситуация и не действительно характерное для GNUstep. Однако типичный путь программы GNUstep содержит a .app каталог, так как им обычно предоставляют как .app контейнеры. Даже при том, что файл удален, ps все еще показывает имя, которым это было вызвано, который часто является полным путем.

Таким образом, пользователи, которые ищут программу GNUstep, особенно если они запускают очень много других программ и не хотят осматривать вывод ps x, может попытаться найти его путем выполнения:

ps x | grep '[.]app/'

(. в регулярном выражении соответствует любому символу. Один способ соответствовать литеральной точке [.], и в то время как существуют другие пути, я выбрал тот, потому что он вызывает Ваш grep командная строка для не содержания .app и таким образом не быть включенным побочно в Ваших результатах.)

2
ответ дан 7 December 2019 в 13:29

Другие вопросы по тегам:

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