Linux + наклон работает, диалоговая утилита + получила ошибки

Один путь состоит в том, чтобы сказать lsof -i:57010 -sTCP:ESTABLISHED. Это обходит открытый поиск таблицы дескриптора файла ядра процессов с установленным соединением TCP с помощью того порта. (Сетевые сокеты являются дескрипторами файлов на *ix системы типов.) Вы использовали бы -sTCP:LISTEN на стороне сервера для отфильтровывания только сокета слушателя вместо этого.

Из-за пути lsof работы, это может только видеть процессы, которыми владеет Ваш пользователь, если Вы не выполняете его как корень. Это также довольно неэффективно, так как типичное *ix система имеет много дескрипторов файлов, открытых в любой момент времени. netstat метод, данный в другом ответе, быстрее и обычно имеет более низкие требования доступа.

lsof метод имеет одно большое преимущество, однако: не все *ix вводят Ose, имеют a netstat флаг для включения процесса называет в выводе, тогда как lsof был портирован к каждому *ix, вводят ОС, которую Вы, вероятно, будете использовать. OS X netstat этот путь, например. Это имеет a -p опция, но это делает что-то другое от netstat -p на Linux.

Для редкого номера порта как тот в Вашем вопросе можно обычно уходить без добавления lsof -s флаг, потому что данная машина вряд ли будет иметь программы, и соединяющиеся с портом и слушающие на нем. Может быть полезно добавить его с номерами портов как 80 HTTP, где вероятно, что у Вас будет несколько программ с помощью того порта сразу.

Удачно что -s флаг является дополнительным во многих ситуациях, потому что то использование только работает с lsof версия 4.81 и более новый. В более старых версиях, -s предназначенный что-то еще полностью! Это - старинное изменение 2008 года, но оно может все еще неожиданно укусить. RHEL 5 поставлется с lsof 4.78, например.

0
09.03.2019, 10:47
1 ответ

dialog двоичный файл, который Вы скопировали, является динамическим исполняемым файлом, что означает, что он полагается на общие библиотеки как на часть его выполнения. Вы видите это с ldd:

$ ldd "$(type -p dialog)"
    linux-vdso.so.1 (0x00007fff54fb1000)
    libncursesw.so.5 => /usr/lib/libncursesw.so.5 (0x00007fbc0ecee000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fbc0e9eb000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fbc0e640000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbc0ef4d000)

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

Так как Вы вручную скопировали двоичный файл в /usr/bin не делая никакого разрешения зависимости, довольно возможно, что эти общие библиотеки не существуют в Вашей системе. Второе сообщение об ошибке, которое Вы получили, "файл, слишком короткий", указывает, что что-то неправильно с той библиотекой (вероятно, действительно это слишком коротко, это должна быть символьная ссылка вместо файла. Не возможно сказать то, что Вы помещаете там от одного только Вашего вопроса).

Вместо того, чтобы спуститься по этому пути, необходимо сначала попытаться установить dialog от Вашего диспетчера пакетов вместо того, чтобы просто копировать его в /usr/bin непосредственно - тот путь, Вы ведете учет установки пакета, Вы получаете обновления без большого количества стычки, и у Вас будут зависимости для установленными автоматически Вашим диспетчером пакетов. Так как Вы находитесь на OpenSUSE, попытайтесь удалить файлы, по которым Вы вручную скопировали (/usr/bin/dialog и /usr/lib/libncursesw.so.5), и затем выполнение yum install dialog. Это должно решить все Ваши проблемы.

0
28.01.2020, 05:01

Теги

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