关闭指定pid程序, utils.sh

来源:互联网 发布:夺命呼软件下载 编辑:程序博客网 时间:2024/05/21 22:43


mkdir -p /var/vcap/sys/logexec > >(tee -a >(logger -p user.info -t vcap.$(basename $0).stdout) >>/var/vcap/sys/log/$(basename $0).log)exec 2> >(tee -a >(logger -p user.error -t vcap.$(basename $0).stderr) >>/var/vcap/sys/log/$(basename $0).err.log)pid_guard() {  echo "------------ STARTING `basename $0` at `date` --------------" | tee /dev/stderr  pidfile=$1  name=$2  if [ -f "$pidfile" ]; then    pid=$(head -1 "$pidfile")    if [ -n "$pid" ] && [ -e /proc/$pid ]; then      echo "$name is already running, please stop it first"      exit 1    fi    echo "Removing stale pidfile..."    rm $pidfile  fi}wait_pidfile() {  pidfile=$1  try_kill=$2  timeout=${3:-0}  force=${4:-0}  countdown=$(( $timeout * 10 ))  if [ -f "$pidfile" ]; then    pid=$(head -1 "$pidfile")    if [ -z "$pid" ]; then      echo "Unable to get pid from $pidfile"      exit 1    fi    if [ -e /proc/$pid ]; then      if [ "$try_kill" = "1" ]; then        echo "Killing $pidfile: $pid "        kill $pid      fi      while [ -e /proc/$pid ]; do        sleep 0.1        [ "$countdown" != '0' -a $(( $countdown % 10 )) = '0' ] && echo -n .        if [ $timeout -gt 0 ]; then          if [ $countdown -eq 0 ]; then            if [ "$force" = "1" ]; then              echo -ne "\nKill timed out, using kill -9 on $pid... "              kill -9 $pid              sleep 0.5            fi            break          else            countdown=$(( $countdown - 1 ))          fi        fi      done      if [ -e /proc/$pid ]; then        echo "Timed Out"      else        echo "Stopped"      fi    else      echo "Process $pid is not running"    fi    rm -f $pidfile  else    echo "Pidfile $pidfile doesn't exist"  fi}kill_and_wait() {  pidfile=$1  # Monit default timeout for start/stop is 30s  # Append 'with timeout {n} seconds' to monit start/stop program configs  timeout=${2:-25}  force=${3:-1}  wait_pidfile $pidfile 1 $timeout $force}check_mount() {  opts=$1  exports=$2  mount_point=$3  if grep -qs $mount_point /proc/mounts; then    echo "Found NFS mount $mount_point"  else    echo "Mounting NFS..."    mount $opts $exports $mount_point    if [ $? != 0 ]; then      echo "Cannot mount NFS from $exports to $mount_point, exiting..."      exit 1    fi  fi}# Check the syntax of a sudoers file.check_sudoers() {  /usr/sbin/visudo -c -f "$1"}# Check the syntax of a sudoers file and if it's ok install it.install_sudoers() {  src="$1"  dest="$2"  check_sudoers "$src"  if [ $? -eq 0 ]; then    chown root:root "$src"    chmod 0440 "$src"    cp -p "$src" "$dest"  else    echo "Syntax error in sudoers file $src"    exit 1  fi}# Add a line to a file if it is not already there.file_must_include() {  file="$1"  line="$2"  # Protect against empty $file so it doesn't wait for input on stdin.  if [ -n "$file" ]; then    grep --quiet "$line" "$file" || echo "$line" >> "$file"  else    echo 'File name is required'    exit 1  fi}


0 0
原创粉丝点击