Yetixx
Yetixx
Server: nginx/1.28.0
System: Linux instance-rr9enuui 6.1.0-15-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.66-1 (2023-12-09) x86_64
User: www (1000)
PHP: 8.0.26
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: //etc/rc5.d/S01bcm-agent
#!/bin/bash

#
# Init file for Baidu cloud monitor agent
#
### BEGIN INIT INFO
# Provides:          bcm-agent
# Required-Start:    $local_fs $syslog
# Required-Stop:     $local_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Baidu cloud monitor agent
# Description:       Baidu cloud monitor(BCM) agent which collect system metrics.
### END INIT INFO

export PATH='/usr/sbin:/usr/bin:/sbin:/bin'

help() {
    echo "${0} <start|stop|restart|status>"
    exit 1
}

die() {
    echo "[FAILED] $@"
    exit 1
}

ok() {
    echo "[OK] $@"
}

run() {
  # 100M
  ulimit -m 100000
  ulimit -c 0

  nice_prefix=""
  type nice >/dev/null && nice_prefix="nice -n 19 "

  core_num="$(cat /proc/cpuinfo | grep processor | wc -l)"
  last_core="$((${core_num} - 1))"
  taskset_prefix=""
  type taskset >/dev/null
  [ $? -eq 0 -a $core_num -gt 1 ] && taskset_prefix="taskset -c 1-$last_core "

  (eval "$nice_prefix $taskset_prefix $@" >/dev/null </dev/null 2>&1 &)
}

signal() {
    pgrep -u 0 '^bcm-agent.upgra$' | xargs kill -9
    pgrep -u 0 '^bcm-.i$' | xargs kill -9 1>/dev/null 2>&1
    return $?
}

check() {
    pgrep -u 0 '^bcm-agent.upgra$' >/dev/null
    return $?
}

start() {
    [ -x '/opt/avalokita/bin/avalokita' ] || {
        die 'Please install avalokita first.'
    }

    [ -d '/opt/bcm-agent/var/lib/bcm-agent' ] || {
        die 'Please reinstall bcm-agent.'
    }

    [ -x '/opt/bcm-agent/var/lib/bcm-agent/bcm-agent.upgrader' ] || {
        ln -sf /opt/avalokita/bin/avalokita /opt/bcm-agent/var/lib/bcm-agent/bcm-agent.upgrader
    }

    check
    if [ $? -eq 0 ]; then
        ok 'Running'
        return 0
    fi

    cd /opt/bcm-agent/var/lib/bcm-agent/
    run "/opt/bcm-agent/var/lib/bcm-agent/bcm-agent.upgrader \
        --update-url=http://download.bcm.baidubce.com/packages/collectd-bcm-v2-$(uname -m).sh \
        --signature-url=http://download.bcm.baidubce.com/packages/collectd-bcm-v2-$(uname -m).sh.sig \
        --certificate='/opt/bcm-agent/var/lib/bcm-agent/cert.pem' \
        --max-executable-size=31457280 \
        /opt/bcm-agent/var/lib/bcm-agent/collectd-bcm-v2-$(uname -m).sh"

    sleep 1
    check || die 'start'
    ok 'start'
    return 0
}

stop() {
    check
    if [ $? -ne 0 ]; then
        ok 'Not running'
        return 0
    fi

    for i in 1 2 3 4 5 6 7 8; do
        signal
        sleep $i
        check
        if [ $? -ne 0 ]; then
            ok 'stop'
            return 0
        fi
    done
    die 'stop'
}

restart() {
    stop
    start
    return 0
}

status() {
    check
    if [ $? -eq 0 ]; then
        echo 'Running'
        return 0
    else
        echo 'Not running'
        return 1
    fi
}

[ "$(id -u)" = 0 ] || {
    die Please run with root.
}

case "${1}" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
status)
    status
    ;;
*)
    help
    ;;
esac