Нет, у Вас не может быть/etc/hosts файла в расчете на пользователя или чего-либо как/home/user1/.hosts, и т.д.
Вы используете gethostbyaddr, который является hardcoded для следования инструкциям в nsswitch.conf, который самом говорит gethostbyaddr смотреть в/etc/hosts.
Вы смогли делать что-то, любят, добавляет дополнительный петлевой дюйм/с в 127.0.0.0/8 сети, как 127.0.0.2, 127.0.0.3, 127.1.2.3, и затем присваивает локальное имя хоста одному из них локальный дюйм/с. Мы сделали это в одном задании, но я помню, что это действительно смутило наших инженеров.
Кроме того, если я помню право, некоторые loadbalancers на самом деле делают это внутренне.
Вот пример/etc/hosts, чтобы проиллюстрировать мой тезис:
127.0.0.1 u1.localhost u1
127.0.0.2 u2.localhost u2
# And if you wanted QA servers on the same host, add them to 127.0.8.0/24
127.0.8.1 qa1.localhost qa1
Как @blacklotus предложенный ранее, более распространенный способ сделать это должно определять часть Вашей локальной сети как "Разработчик LAN".
Вы МОЖЕТЕ найти это информация в файлах системного журнала / var / log / messages
, / var / log / syslog
. Некоторые процессы при запуске выводят сообщения в системный журнал. Например, squid выводит следующее:
May 8 00:00:00 proxy squid[7274]: Squid Parent: child process 28819 started
Если ваш процесс регистрирует такую информацию, вы можете знать старые идентификаторы PID, такие как 7274 .
Другая возможность - это случай, когда ваш процесс вызывает ошибку, такую как segfault, когда он умер. Вы найдете такой журнал:
Если приложение не записывает свой PID в файл журнала, вы не сможете получить эту информацию ретроспективно. В дальнейшем вы можете написать сценарий оболочки для запуска вашего приложения и регистрации идентификаторов PID в файле или включить учет.
Простая оболочка может быть
yourcommand &
echo $! >>/path/to/pid_history.log
Если где-то в журнале нет записи об этом (сделано либо самой программой, либо ее стартовым скриптом), получить эту информацию невозможно, так как нет стандартной регистрации этой информации.
# ps ax > /tmp/process.list; for i in `seq 1 600`; do echo $i >> /tmp/plog; date >> /tmp/plog; ps ax | diff /tmp/process.list - >> /tmp/plog; sleep 1; done; ping -a 127.0.0.1
Эта конструкция собирает разницу списка процессов в файл / tmp / plog в течение 10 минут за каждую секунду. После завершения регистрации он отправит вам сигнал с консоли.
Вы можете добавить это в файл rc.local для начала регистрации сразу после запуска сервера.