| #!/bin/sh |
| # Copyright (C) 2000-2011, Parallels, Inc. All rights reserved. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| # |
| veidmark='envID:' |
| namemark='Name:' |
| vpidmark='VPid:' |
| showCTPID=0 |
| opShowCTPID='END {printf("%d\t%d\t%s\t%s\n", pid, vpid, veid, name)}' |
| opShowDef='END {printf("%d\t%s\t%s\n", pid, veid, name)}' |
| |
| usage() |
| { |
| echo 'Usage: vzpid [-p] <pid> ...' |
| echo ' vzpid [-p] -' |
| } |
| |
| header() |
| { |
| if [ "$showCTPID" -ne 0 ]; then |
| printf '%s\t%s\t%s\t%s\n' 'Pid' 'CT/Pid' 'CTID' 'Name' |
| else |
| printf '%s\t%s\t%s\n' 'Pid' 'CTID' 'Name' |
| fi |
| } |
| |
| getveid() |
| { |
| local opShow |
| local pid="$1" |
| |
| [ -f "/proc/$pid/status" ] || return |
| |
| if [ "$showCTPID" -ne 0 ]; then |
| opShow="$opShowCTPID" |
| else |
| opShow="$opShowDef" |
| fi |
| |
| awk -v "pid=$pid" ' |
| BEGIN {veid=0; name=""; vpid=0} |
| ($1 == "'"$namemark"'") {name = $2} |
| ($1 == "'"$vpidmark"'") {vpid = $2} |
| ($1 == "'"$veidmark"'") {veid = $2} |
| '"$opShow" <"/proc/$pid/status" |
| } |
| |
| if [ "$1" = '-p' ]; then |
| showCTPID=1 |
| shift |
| fi |
| |
| if [ $# -eq 0 ]; then |
| usage >&2 |
| exit 1 |
| elif [ $# -eq 1 -a "$1" = '-' ]; then |
| set -- `tr -s '[[:space:]]' ' '` |
| elif [ $# -eq 1 -a "$1" = '-h' ]; then |
| usage |
| exit 0 |
| fi |
| |
| header |
| for i; do |
| getveid "$i" |
| done |