首页 > 系统相关 >linux shell

linux shell

时间:2022-12-09 22:45:15浏览次数:37  
标签:daemon shell -- stop echo watchfrr linux daemons

frrinit.sh

if [ -r "/lib/lsb/init-functions" ]; then
    . /lib/lsb/init-functions
else
    log_success_msg() {
        echo "$@"
    }
    log_warning_msg() {
        echo "$@" >&2
    }
    log_failure_msg() {
        echo "$@" >&2
    }
fi

# "/usr/lib/frr/frrinit.sh start somenamespace"
FRR_PATHSPACE="$2"

self="`dirname $0`"
if [ -r "$self/frrcommon.sh" ]; then
    . "$self/frrcommon.sh"
else
    . "@CFG_SBIN@/frrcommon.sh"
fi

case "$1" in
start)
    daemon_list daemons
    watchfrr_options="$watchfrr_options $daemons"
    daemon_start watchfrr
    ;;
stop)
    daemon_stop watchfrr
    all_stop --reallyall
    exit ${still_running:-0}
    ;;

restart|force-reload)
    daemon_stop watchfrr
    all_stop --reallyall

    daemon_list daemons
    watchfrr_options="$watchfrr_options $daemons"
    daemon_start watchfrr
    ;;

status)
    fail=0
    print_status watchfrr || fail=1
    all_status || fail=1
    exit $fail
    ;;

reload)
    if [ ! -x "$RELOAD_SCRIPT" ]; then
        log_failure_msg "The frr-pythontools package is required for reload functionality."
        exit 1
    fi

    # systemd doesn't set WATCHDOG_USEC for reload commands.
    watchfrr_pidfile="$V_PATH/watchfrr.pid"
    watchfrr_pid="`cat \"$watchfrr_pidfile\"`"
    watchfrr_cmdline="`tr '\0' '\n' < /proc/$watchfrr_pid/cmdline`"
    if [ -d "/proc/$watchfrr_pid" ]; then
        wdt="`tr '\0' '\n' < /proc/$watchfrr_pid/environ | grep '^WATCHDOG_USEC='`"
        wdt="${wdt#WATCHDOG_USEC=}"
        [ -n "$wdt" ] && : ${WATCHDOG_USEC:=$wdt}
        [ -n "$WATCHDOG_USEC" ] && export WATCHDOG_USEC
    fi

    # restart watchfrr to pick up added daemons.
    # NB: This will NOT cause the other daemons to be restarted.
    daemon_list enabled_daemons disabled_daemons
    watchfrr_options="$watchfrr_options $enabled_daemons"
    daemon_stop watchfrr && \
        daemon_start watchfrr

    # If we disable an arbitrary daemon and do reload,
    # disabled daemon is still running and we should stop it.
    for daemon in $disabled_daemons; do
        if grep -q "$daemon" <<< "$watchfrr_cmdline"; then
            daemon_stop "$daemon" &
            pids="$pids $!"
        fi
    done

    for pid in $pids; do
        wait "$pid"
    done

    # make systemd not kill watchfrr after ExecReload completes
    # 3 goats were sacrificed to restore sanity after coding this
    watchfrr_pid="`cat \"$watchfrr_pidfile\"`"
    if [ -f "/proc/$watchfrr_pid/cgroup" -a -d "/sys/fs/cgroup/systemd" ]; then
        cg="`egrep '^[0-9]+:name=systemd:' \"/proc/$watchfrr_pid/cgroup\"`"
        cg="${cg#*:*:}"

        cgmain="$cg"
        cgmain="${cgmain%/.control}"
        cgmain="${cgmain%/control}"

        [ -n "$cg" -a "$cg" != "$cgmain" ] && \
            echo "$watchfrr_pid" > "/sys/fs/cgroup/systemd/$cgmain/tasks"
    fi

    NEW_CONFIG_FILE="${2:-$C_PATH/frr.conf}"
    [ ! -r $NEW_CONFIG_FILE ] && log_failure_msg "Unable to read new configuration file $NEW_CONFIG_FILE" && exit 1
    "$RELOAD_SCRIPT" --reload --bindir "$D_PATH" --confdir "$C_PATH" --rundir "$V_PATH" "$NEW_CONFIG_FILE" `echo $nsopt`
    exit $?
    ;;

*)
    echo "Usage:"
    echo "    ${0} <start|stop|restart|force-reload|reload|status> [namespace]"
    echo "    ${0} stop namespace1"
    exit 1
    ;;
esac
View Code
if [ -r "/lib/lsb/init-functions" ]; then  检查后面的文件是否可读,-read
    . /lib/lsb/init-functions          如果可读,就包含进来,语法为. file,点和file之间有个空格,点也可以写为source
else
    log_success_msg() {
        echo "$@"
    }
fi

 

标签:daemon,shell,--,stop,echo,watchfrr,linux,daemons
From: https://www.cnblogs.com/yanhc/p/16970383.html

相关文章

  • linux 安装 nginx,并且注册成一个服务
    * 一键安装四个依赖yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel* 安装nginx【如果报:-bash:wget:commandnotfound,先安装wget:yum-yinsta......
  • 聊聊我学linux的历程
    今天给大家分享一下我学习linux的历程,我喜欢上linux系统完全就是机缘巧合,大学时上的是网络工程专业,说来惭愧一直到大二上学期我还不知linux为何物,唯一接触过的就是电影里面......
  • linux mailx&dingding机器人报警
    前言:采用devops的思想来确认做本文内容目的作为<用户角色>我想要<结果>以便于<目的>作为运维人员,我想要服务器故障时候能够进行报警,以便于即使处理服务器故障、保障服......
  • linux代码相关的工具
    函数调用关系codevizcalltreegprof,kprofhttp://blog.chinaunix.net/uid-20749137-id-718762.htmlgraphvizgdb&backtracestracediagramdesigner可以画代码的关系图 应......
  • Linux 资料大全
    Helloall,给大家分享一些​​Linux学习资料​​,包含:社区网站、在线教程、命令大全、在线模拟器、经典书籍、镜像站点等...从入门到进阶,应有尽有。无论你是小白,还是Linux......
  • LINUX下EPOLL等不错的文章收藏
    1通俗讲解异步,非阻塞和IO复用​​​https://www.zybuluo.com/phper/note/595507​​​2知乎问答https://www.zhihu.com/question/20122137/......
  • linux 下的sar工具命令小结
    1安装  tarzxvf xxx.tar.gz  ./configure  make  makeinstall 2 使用pidstat 2 5 //每隔2秒,显示5次,所有活动进程的CPU使用情况pidstat -p......
  • linux系统访问windows分区不用输密码
    linux和windows双系统用户,用linux的时候访问windows分区是时长发生的事。在ubuntu下,可以安装ntfs-config来实现免输入密码访问windows分区,但是我的archlinux不知道为什么始......
  • [WIP]Unix / Linux for Beginners
    创建:2022/12/9 GetStarted            FileManagement            Direct......
  • 使用 udev 高效、动态地管理 Linux 设备文件(转载)--3
    udev的简单规则:清单10.产生网卡设备文件的规则SUBSYSTEM=="net",SYSFS{address}=="AA:BB:CC:DD:EE:FF",NAME="public_NIC"该规则表示:如果存在设备的子系统为net,并且......