[gull] Truc et astuces: [OpenVZ] A qui appartient un process
Félix Hauri
felix at f-hauri.ch
Fri Sep 24 09:34:44 CEST 2010
Bonjour,
Afin de déterminer à qui (quel container OpenVZ) appartient une tâche
donnée, un simple ``ps'' ou ``top'' ne suffit pas:
$ ps -C sshd
PID TTY TIME CMD
8333 ? 00:00:03 sshd
10057 ? 00:00:00 sshd
10094 ? 00:00:00 sshd
Bien, j'ai trois serveurs SSH qui tournent... Donc (en root!):
# stat -c %N `printf " /proc/%d/root" \`ps -C sshd ho pid\` ` |
sed -e "s/^.*roc\/\([0-9]*\)\/.*-> \`\(.*\)'$/\1\t\2/;
s@`sed -ne '/VE_ROOT/{s/^.*=\(.*\)$V.*$/\1/;p}' /etc/vz/vz.conf `@@"
8333 /
10057 100
10094 102
Qui aurrait pu s'écrire:
# stat -c %N $(printf " /proc/%d/root" $(ps -C sshd ho pid)) |
sed -e "s/^.*roc\/\([0-9]*\)\/.*-> \`\(.*\)'$/\1\t\2/;
s@$(sed -ne '/VE_ROOT/{s/^.*=\(.*\)$V.*$/\1/;p}' /etc/vz/vz.conf)@@"
8333 /
10057 100
10094 102
Pour être plus clair:
# eval $(grep ^VE_ROOT= /etc/vz/vz.conf)
# echo $VE_ROOT
/var/lib/vz/root/
# pids=$(ps -C sshd ho pid)
# echo $pids
8333 10057 10094
# stat -c %N $(printf " /proc/%d/root" $pids)
`/proc/8333/root' -> `/'
`/proc/10057/root' -> `/var/lib/vz/root/100'
`/proc/10094/root' -> `/var/lib/vz/root/102'
... Le reste, c'est de la ``cosmetique'':
# stat -c %N $(printf " /proc/%d/root" $pids) |
sed -e "s/^.*roc\/\([0-9]*\)\/.*-> \`\(.*\)'$/\1\t\2/;
s@$VE_ROOT@@;"
8333 /
10057 100
10094 102
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list