Что означает «статически связанный»?

Очень часто необходимо использовать sudo для управления процессом nginx. Если вы получили ошибку "Операция не разрешена", добавьте ко всем командам ниже sudo. Хотя этот вопрос помечен как 'ps', я хотел бы упомянуть о других возможностях.

Если вы просто хотите остановить nginx, я бы рекомендовал использовать:

service nginx stop

Но если ваша цель - найти сам 'pid' (например, чтобы послать сигнал), я бы рекомендовал искать nginx.pid. Когда nginx запущен, он помещает свой pid в этот файл.

nginx может управляться с помощью сигналов. ID главного процесса по умолчанию записывается в файл /usr/local/nginx/logs/nginx.pid

Однако он может быть и в другом месте.

Если вы компилировали nginx самостоятельно, вы могли бы указать pid-path.

--pid-path=path - задает имя файла nginx.pid, в котором будет храниться идентификатор основного процесса. После установки имя файла всегда можно изменить в конфигурационном файле nginx.conf с помощью директивы pid. По умолчанию файл называется prefix/logs/nginx.pid

В противном случае вы можете явно указать путь к файлу pid в nginx.conf.

Читайте о Nginx Control

Итак, для отправки сигнала просто введите:

kill `cat /path/to/nginx.pid`

Или

kill $(cat /path/to/nginx.pid)

Читайте о убийстве процесса по pid файлу.

Лично я при написании скрипта или инструкции по развертыванию не стал бы доверять остановку или поиск nginx pid на pgrep и тем более на grep, хотя они и применимы на локальной машине. Но в данном случае я бы сократил остановку до pkill (process kill):

pkill nginx

0
11.07.2018, 14:59
1 ответ

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

В результате lddничего не может сказать вам о файле.

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

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

1
28.01.2020, 04:18

Теги

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