mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-01 18:25:59 +00:00
79 lines
2.7 KiB
Bash
79 lines
2.7 KiB
Bash
# This program is copyright 2011 Percona Inc.
|
|
# Feedback and improvements are welcome.
|
|
#
|
|
# THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
|
|
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
|
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
#
|
|
# 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, version 2; OR the Perl Artistic License. On UNIX and similar
|
|
# systems, you can issue `man perlgpl' or `man perlartistic' to read these
|
|
# licenses.
|
|
#
|
|
# 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.
|
|
# ###########################################################################
|
|
# alt_cmds package
|
|
# ###########################################################################
|
|
|
|
# Package: alt_cmds
|
|
# alt_cmds provides alternatives to commands that aren't on all systems.
|
|
|
|
set -u
|
|
|
|
# seq N, return 1, ..., 5
|
|
_seq() {
|
|
local i="$1"
|
|
awk "BEGIN { for(i=1; i<=$i; i++) print i; }"
|
|
}
|
|
|
|
_pidof() {
|
|
local cmd="$1"
|
|
if ! pidof "$cmd" 2>/dev/null; then
|
|
ps -eo pid,ucomm | awk -v comm="$cmd" '$2 == comm { print $1 }'
|
|
fi
|
|
}
|
|
|
|
_lsof() {
|
|
local pid="$1"
|
|
if ! lsof -p $pid 2>/dev/null; then
|
|
/bin/ls -l /proc/$pid/fd 2>/dev/null
|
|
fi
|
|
}
|
|
|
|
|
|
# We don't get things like "which: command not found", so for the pathological
|
|
# case where /usr/bin/which isn't installed, we check that "which which" and
|
|
# if which really isn't there then just return the command passed in and hope
|
|
# they are somewhere
|
|
|
|
# TODO:
|
|
# we just need to redirect STDERR when we execute
|
|
# "which" and check it. Some shells are really weird this way. We
|
|
# can't check "which"'s exit status because it will be nonzero if
|
|
# the sought-for command doesn't exist.
|
|
#
|
|
_which() {
|
|
# which on CentOS is aliased to a cmd that prints extra stuff.
|
|
# Also, if the cmd isn't found, a msg is printed to stderr.
|
|
if [ -x /usr/bin/which ]; then
|
|
/usr/bin/which "$1" 2>/dev/null | awk '{print $1}'
|
|
elif which which 1>/dev/null 2>&1; then
|
|
# Well, this is bizarre. /usr/bin/which either doesn't exist or
|
|
# isn't executable, but the shell can use which just fine.
|
|
# So we bite the bullet, hope that it doesn't do anything
|
|
# insane, and use it.
|
|
which "$1" 2>/dev/null | awk '{print $1}'
|
|
else
|
|
# We don't have which. Just return the command that was
|
|
# originally passed in.
|
|
echo "$1"
|
|
fi
|
|
}
|
|
|
|
# ###########################################################################
|
|
# End alt_cmds package
|
|
# ###########################################################################
|