При использовании подсистем балансировки нагрузки где-нибудь в сайте необходимо смочь настроить их, чтобы иметь DNS как виртуальный сервис.
Мои 1500-е Kemp Loadmaster могут быть установкой, чтобы сделать циклический алгоритм с обработкой отказа. Это использовало бы их сервисную проверку, чтобы удостовериться, что каждый сервер DNS является каждыми несколькими секундами, и разделите трафик между этими двумя серверами. Если Вы умираете, это выпадает из пула RR и только, сервер запрашивается.
Необходимо было бы просто указать resolv.conf на VIP на loadbalancer.
cat /proc/<pid>/environ
Если Вы хотите иметь pid данного рабочего исполняемого файла, среди многих других возможностей, можно использовать pidof
:
AlberT$ pidof sshd
30690 6512
Править:
Я полностью заключаю комментарии Dennis Williamson и Teddy в кавычки для достижения более читаемого вывода. Мое решение следующее:
tr '\0' '\n' < /proc/<pid>/environ
Так как этот вопрос имеет тег Unix, и все остальные сделали такую отличную работу, обратившись к тегу Linux, можно получить эту информацию о OS X и другом BSD-полученном системном использовании
ps -p <PID> -wwwe
или
ps -p <PID> -wwwE
и на Солярисе с
/usr/ucb/ps -wwwe <PID>
Солярис также поддерживает /proc
каталог, если Вы не хотите помнить неясное ps
команда.
Как другие упомянули на Linux, можно посмотреть в/proc, но существует, в зависимости от версии ядра, одного или двух пределов:
В первую очередь, окружать файл содержит среду, поскольку это смотрело, когда процесс был порожден. Это означает, что любые изменения, которые процесс, возможно, внес в свою среду, не будут видимы в/proc:
$ cat /proc/$$/environ | wc -c
320
$ bash
$ cat /proc/$$/environ | wc -c
1270
$
Первая оболочка является оболочкой входа в систему и первоначально имеет очень ограниченную среду, но выращивает ее путем определения источника, например, .bashrc, но/proc не отражает это. Вторая оболочка наследовала большую среду от запуска, который это, почему это показывает в/proc.
Кроме того, на более старых ядрах содержание окружать файла ограничено размером страницы (4K):
$ cat /proc/$$/environ | wc -c
4096
$ env | wc -c
10343
$
Где-нибудь между 2.6.9 (RHEL4) и 2.6.18 (RHEL5) этот предел был удален...
Взято из вики Archlinux :
Вы можете создать временную функцию для анализа значений в / proc /
. В командной строке терминала:
envof() { sed 's/\x0/\n/g' /proc/${1}/environ; }
Затем с pid процесса, который вы хотите, просто используйте:
envof <pid>
Решение для Mac, возможно, и другие BSD тоже могут быть чем-то вроде
pid=28369; ps e $pid | cut -c$(expr 1 + $(ps p $pid|tail +2|wc -c))-
Переменные среды добавляются в командную строку, это удаляет командную строку, и у нас остаются только переменные среды.
Это не идеально потому что они разделены пробелами, а не разделены LF
Содержимое / proc /
, хотя и довольно скудно документировано. будет содержать только среду, которая использовалась для запуска процесса.
Если вам нужно проверить текущее состояние среды процесса, один из способов сделать это - использовать gdb
.
# Start gdb by attaching it to a pid or core file
gdb <executable-file> <pid or core file>
# Run the following script to dump the environment
set variable $foo = (char **) environ
set $i = 0
while ($foo[$i] != 0)
print $foo[$i++]
end
/ proc / PID / Environment
для этого сначала нам нужно определить PID процесса. для этого вы можете использовать команду ps
Если вы хотите создать форматированный env
вывод переменных среды для произвольного процесса (PID) , вы можете создать удобную команду bash penv
(адаптированную для вашей ОС) и добавить ее в свой .bashrc
:
Linux добавить это в свой ~ /.bashrc:
penv () {
xargs --null --max-args=1 < /proc/$1/environ
}
macOS / BSD добавьте это в свой ~ / .bashrc:
penv() {
ps eww -o command $1 | tr ' ' '\n'
}
Solaris добавьте это в свой ~ / .bashrc:
penv() {
pargs -e $1
}
Использование:
$ source $HOME/.bashrc $ pgrep VBoxSVC 10268 $ penv 10268 SSH_CONNECTION=1.1.1.242 53960 1.1.1.91 22 GREP_COLORS=sl=49;39:cx=49;39:mt=49;38;5;167;1:fn=49;39;1:ln=49;39:bn=49;39:se=50;39 LANG=en_US.UTF-8 EDITOR=vim XDG_SESSION_ID=106 USER=root PWD=/root HOME=/root SSH_CLIENT=1.1.1.242 53960 22 SSH_TTY=/dev/pts/3 MAIL=/var/mail/root TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LOGNAME=root DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus XDG_RUNTIME_DIR=/run/user/0 PATH=/root/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:. VBOX_LOG_FLAGS=thread tsc VBOX_LOG=-all+dev_vmm_backdoor.e.l.f+dev_vmm.e.l.f
cat /proc/17330/environ | tr \\0 \\n
– Paused until further notice. 17 September 2009 в 22:14xargs --null --max-args=1 echo < /proc/PID/environ
– Teddy 29 October 2009 в 15:08