Уничтожьте процесс, который продолжает перезапускать

Если у Вас есть иерархия монтирования как это:

/dev/hd1   /
/dev/hd2   /a/b/c

И хочу изменить его на

/dev/hd1
/dev/hd2   /a

при сохранении структуры /a каталог, как замечено приложениями и принятие этого /a и /a/b в других отношениях пусты, преобразование просто:

  • остановите базу данных (и все, что зависит от нее),
  • удостоверьтесь, что у Вас есть допустимое (восстановимое) резервное копирование всего
  • примите во внимание полномочия на каталогах /a, /a/b и /a/b/c
  • размонтирование /a/b/c
  • обновите Ваш fstab (или безотносительно Вашего использования ОС) для отражения нового layour
  • смонтироваться /a

Затем:

  • mkdir -p /a/b/c
  • восстановите полномочия на тех каталогах, как они были прежде
  • переместите все в /a кому: /a/b/c (кроме b Вы просто создали, очевидно).

Пример/моделирование:

$ ls /u001/app/oracle
admin/
diag/
product/
...
# umount /u001/app/oracle
# <edit fstab>
# mount /u001
$ ls /u001
admin/
diag/
product/
...

На данном этапе Ваши файлы Oracle "повторно базированы" в /u001. Просто необходимо переместить их в правильную иерархию

# mkdir -p /u001/app/oracle
# check & adapt the permissions on those directories, making sure they
# are identical to what you had
$ mv /u001/* /u001/app/oracle
<warning about not moving app to a subdirectory of itself - ok>
# Don't forget the .dotfiles
$ mv /u001/.??* /u001/app/oracle
16
13.04.2017, 15:36
2 ответа

Автоматически запускается с другим идентификатором процесса означает, что это другой процесс. Таким образом, существует родительский процесс, который следит за своими дочерними процессами, и если один из них умирает, то он перехватывается родителем. Если вы хотите полностью остановить службу, узнайте, как остановить родительский процесс. Убийство с помощью SIGKILL - это, конечно, один из вариантов, но, скорее всего, не The Right OneTM, так как монитору сервиса, возможно, понадобится провести некоторую очистку для корректного завершения работы.

Чтобы найти процесс монитора, вам может понадобиться просмотреть весь список процессов, так как фактические слушатели могут отделиться от своих родителей (обычно с помощью комбинации fork() + setsid()). В этом случае я нахожу вывод ps faux (от procps, по крайней мере, может отличаться для других реализаций) довольно удобным - он перечисляет все процессы в иерархическом дереве. Если не было PID-обертки (см. также wikipedia), PID монитора должен быть меньше PID любого из слушателей (если, конечно, вы не попали в PID-обертку).

26
27.01.2020, 19:48

Если вы знаете порт прослушивания процесса, вы можете использовать Fuser с -K флаг.

Что-то вроде,

fuser -k 3002/tcp
4
27.01.2020, 19:48

Теги

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