Хорошо. Необходимо найти процесс, это пошло зомби или прекратило быть применимым, находить порт, это все еще открыто. Если Вы знаете имя процесса или PID, это очень полезно для использования с командами как pfiles
, preap
, и pkill
.
У меня есть сценарий, который может искать PIDs или имена процесса открытых портов.
#!/usr/bin/ksh -p
process=$1
# if $1 is all numbers, then assume it's a PID, and get the parent process.
if [[ $process = +([0-9]) ]]; then
for pid in $( ptree $process | grep '^[0-9]' | awk '{print $1}' ); do
pfiles $pid | egrep "^$pid:|sockname"
done
else
# if $1 is/has letters, then assume it's a process name, and grep accordingly.
for pid in $( ptree | grep $process | grep '^[0-9]' | awk '{print $1}' ); do
pfiles $pid | egrep "^$pid:|sockname"
done
fi
Это распечатает PID, processname, и любые сокеты, открытые для любого процесса, который соответствует 1$.
После того как Вы знаете точно, который PID содержит тот открытый сокет, и не применим, можно использовать один из pkill
или preap
команды для насильственного закрытия того PID и дескрипторов файлов это имеет открытый.
Благодаря указателю на статью Arch Wiki о Avahi от Ulrich Dangel это - то, что я сделал:
$ sudo pacman -S avahi nss-mdns
/etc/rc.d/avahi-daemon start
в конец rc.local
dhcpcd
, в /etc/dhcpcd.conf
Я прокомментировал noipv4ll
строка. $ sudo /usr/sbin/avahi-autopid -D wlan0
. Так как мне не нравится перезапускать, я не уверен, был ли шаг 3 необходим./etc/nsswitch.conf
Я установил строку для чтения hosts: files mdns4_minimal dns mdns4
.$ sudo /etc/rc.d/dbus restart
перезапускать dbus.После этого, просто выполнение ssh wayne@other.local
просто работавший.
Я не думаю, что нам нужно avahi-daemon
выполнение для использования .local
. Вот, то, для чего я имею в моем сценарии запуска. Это намного более просто по сравнению с методом Wiki Дуги.
systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
Ответ Уэйна уже довольно старый. С тех пор Arch перешел на использование systemd вместо init-скриптов. Страница Arch wiki Avahi была обновлена и содержит подробности о том, зачем нужны следующие шаги. Вкратце: Avahi - инструмент zeroconf, то есть сам по себе не нуждается в настройке, чтобы работать после установки на всех машинах вашей локальной сети, но вы должны сконфигурировать остальное программное обеспечение, чтобы оно вызвало запрос Avahi для получения информации.
Запустите их как корневые, или, при необходимости, загрузите с помощью sudo
в терминале и замените nano
на редактор по вашему выбору.
pacman -S avahi nss-mdns
устанавливает демона служб Avahi и многоадресный DNS resolver. nano /etc/nsswitch.conf
Этот файл сообщает С-библиотеке, как получить информацию о службе имен. hosts: files dns myhostname
на hosts: files mdns_minimal [NOTFOUND=return] dns myhostname
, сохраните и выйдите. systemctl запускает avahi-daemon
запускает сервис Avahi вручную, так как мы уже загрузились.ищем ошибки)systemctl включает avahi-daemon
включает сервис Avahi при загрузке. Я только что выполнил эти шаги на ноутбуке Arch, и не было необходимости перезапускать другие службы или wifi интерфейс, чтобы мои другие машины обнаружили его в течение нескольких секунд, и чтобы мой ноутбук обнаружил их службы.
Поскольку я пока не могу прокомментировать ответ ggg, я просто хотел бы указать здесь, что нет необходимости делать это в сценарии запуска - для этого и нужна служба в systemd. Сделай это один раз и забудь об этом.