Error[8]: Undefined offset: 1, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我是一个 shell脚本新手试图理解一些代码,但有一些线对我来说太复杂了.我正在谈论的那段代码可以在这里找到: https://gist.github.com/447191 它的目的是启动,停止和重新启动服务器.这是非常标准的东西,所以值得花一些时间来理解它.我评论了那些我不确定其含义或我完全不理解的那些内容,希望somone可以给我一些解释. #!/bin/bash # BASE 我是一个 shell脚本新手试图理解一些代码,但有一些线对我来说太复杂了.我正在谈论的那段代码可以在这里找到: https://gist.github.com/447191
它的目的是启动,停止和重新启动服务器.这是非常标准的东西,所以值得花一些时间来理解它.我评论了那些我不确定其含义或我完全不理解的那些内容,希望somone可以给我一些解释.

#!/bin/bash    #    BASE=/tmp    PID=$BASE/app.pID    LOG=$BASE/app.log    ERROR=$BASE/app-error.log    PORT=11211    ListEN_IP='0.0.0.0'    MEM_SIZE=4    CMD='memcached'# Does this mean,that the COMMAND variable can adopt different values,depending on# what is entered as parameter? "memcached" is chosen by default,port,ip address and # memory size are options,but what is -v?    COMMAND="$CMD -p $PORT -l $ListEN_IP -m $MEM_SIZE -v"    USR=user    status() {        echo    echo "==== Status"        if [ -f $PID ]        then    echo    echo "PID file: $( cat $PID ) [$PID]"            echo# ps -ef: display uID,pID,parent pID,recent cpu usage,process start time,# controling tty,elapsed cpu usage,and the associated command of all other processes# that are owned by other users.# The rest of this line I don't understand,especially grep -v grep    ps -ef | grep -v grep | grep $( cat $PID )        else    echo    echo "No PID file"        fi    }    start() {        if [ -f $PID ]        then    echo    echo "Already started. PID: [$( cat $PID )]"        else    echo "==== Start"# Lock file that indicates that no 2nd instance should be started            touch $PID# COMMAND is called as background process and ignores SIGHUP signal,writes it's# output to the LOG file.             if nohup $COMMAND >>$LOG 2>&1 &# The pID of the last background is saved in the PID file            then echo $! >$PID                 echo "Done."                 echo "$(date '+%Y-%m-%d %X'): START" >>$LOG            else echo "Error... "                 /bin/rm $PID            fi    fi    }# I don't understand this function :-(        kill_cmd() {        SIGNAL=""; MSG="Killing "        while true    do    List=`ps -ef | grep -v grep | grep $CMD | grep -w $USR | awk '{print }'`            if [ "$List" ]            then    echo; echo "$MSG $List" ; echo    echo $List | xargs kill $SIGNAL# Why this sleep command?                sleep 2                SIGNAL="-9" ; MSG="Killing $SIGNAL"                if [ -f $PID ]                then                    /bin/rm $PID                fi    else    echo; echo "All killed..." ; echo    break    fi    done    }    stop() {        echo "==== Stop"        if [ -f $PID ]        then    if kill $( cat $PID )            then echo "Done."                 echo "$(date '+%Y-%m-%d %X'): Stop" >>$LOG            fi            /bin/rm $PID            kill_cmd        else    echo "No pID file. Already stopped?"        fi    }    case "" in        'start')                start                ;;        'stop')                stop                ;;        'restart')                stop ; echo "SleePing..."; sleep 1 ;                start                ;;        'status')                status                ;;        *)                echo    echo "Usage: [+++] { start | stop | restart | status }"                echo    exit 1                ;;    esac    exit 0
解决方法 1)
COMMAND =“$CMD -p $PORT -l $ListEN_IP -m $MEM_SIZE -v” – 在Unix传统中的-v通常是–verbose的快捷方式.所有这些美元符号都是可变扩展(它们的文本值被插入分配给新变量COMMAND的字符串中).

2)
ps -ef | grep -v grep | grep $(cat $PID) – 它是一个管道:ps将其输出重定向到grep,输出到另一个grep,最终结果打印到标准输出.
grep -v grep的意思是“占用所有不包含’grep’的行”(grep本身就是一个进程,所以你需要将它从ps的输出中排除). $($command)是一种运行命令并将其标准输出插入此脚本位置的方法(在这种情况下:cat $PID将显示名为$PID的文件内容).

3)kill_cmd.
这个函数是一个无限循环试图杀死’memcached’进程的PID的List.首先,它尝试发送TERM信号(礼貌地要求$List中的每个进程退出,保存其工作并正确关闭),给他们2秒(睡眠2)来完成他们的关机工作,然后尝试确保所有进程使用信号KILL(-9)杀死,它使用 *** 作系统设施立即杀死进程:如果进程在2秒内没有完成其关闭工作,则认为是挂起的).如果使用kill -9进行杀戮成功,则会删除PID文件并退出循环.

ps -ef | grep -v grep | grep $CMD | grep -w $USR | awk'{print $2}’打印名为$CMD(‘memcached’)和user $USR(‘user’)的进程的所有PID. grep的-w选项意味着“仅限整个单词”(这不包括所寻求的名称是另一个进程名称的一部分的情况,如’fakememcached’). awk是一个小解释器,最常用于从每行输入中取一个单词数字N(您可以将其视为文本表的一列的选择器).在这种情况下,它会在ps输出行中打印每个第二个字,这意味着每个PID.

如果您有任何其他问题,我将在下面添加答案.

总结

以上是内存溢出为你收集整理的linux – start-stop-restart shell脚本的功能全部内容,希望文章能够帮你解决linux – start-stop-restart shell脚本的功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
linux – start-stop-restart shell脚本的功能_系统运维_内存溢出

linux – start-stop-restart shell脚本的功能

linux – start-stop-restart shell脚本的功能,第1张

概述我是一个 shell脚本新手试图理解一些代码,但有一些线对我来说太复杂了.我正在谈论的那段代码可以在这里找到: https://gist.github.com/447191 它的目的是启动,停止和重新启动服务器.这是非常标准的东西,所以值得花一些时间来理解它.我评论了那些我不确定其含义或我完全不理解的那些内容,希望somone可以给我一些解释. #!/bin/bash # BASE 我是一个 shell脚本新手试图理解一些代码,但有一些线对我来说太复杂了.我正在谈论的那段代码可以在这里找到: https://gist.github.com/447191
它的目的是启动,停止和重新启动服务器.这是非常标准的东西,所以值得花一些时间来理解它.我评论了那些我不确定其含义或我完全不理解的那些内容,希望somone可以给我一些解释.

#!/bin/bash    #    BASE=/tmp    PID=$BASE/app.pID    LOG=$BASE/app.log    ERROR=$BASE/app-error.log    PORT=11211    ListEN_IP='0.0.0.0'    MEM_SIZE=4    CMD='memcached'# Does this mean,that the COMMAND variable can adopt different values,depending on# what is entered as parameter? "memcached" is chosen by default,port,ip address and # memory size are options,but what is -v?    COMMAND="$CMD -p $PORT -l $ListEN_IP -m $MEM_SIZE -v"    USR=user    status() {        echo    echo "==== Status"        if [ -f $PID ]        then    echo    echo "PID file: $( cat $PID ) [$PID]"            echo# ps -ef: display uID,pID,parent pID,recent cpu usage,process start time,# controling tty,elapsed cpu usage,and the associated command of all other processes# that are owned by other users.# The rest of this line I don't understand,especially grep -v grep    ps -ef | grep -v grep | grep $( cat $PID )        else    echo    echo "No PID file"        fi    }    start() {        if [ -f $PID ]        then    echo    echo "Already started. PID: [$( cat $PID )]"        else    echo "==== Start"# Lock file that indicates that no 2nd instance should be started            touch $PID# COMMAND is called as background process and ignores SIGHUP signal,writes it's# output to the LOG file.             if nohup $COMMAND >>$LOG 2>&1 &# The pID of the last background is saved in the PID file            then echo $! >$PID                 echo "Done."                 echo "$(date '+%Y-%m-%d %X'): START" >>$LOG            else echo "Error... "                 /bin/rm $PID            fi    fi    }# I don't understand this function :-(        kill_cmd() {        SIGNAL=""; MSG="Killing "        while true    do    List=`ps -ef | grep -v grep | grep $CMD | grep -w $USR | awk '{print }'`            if [ "$List" ]            then    echo; echo "$MSG $List" ; echo    echo $List | xargs kill $SIGNAL# Why this sleep command?                sleep 2                SIGNAL="-9" ; MSG="Killing $SIGNAL"                if [ -f $PID ]                then                    /bin/rm $PID                fi    else    echo; echo "All killed..." ; echo    break    fi    done    }    stop() {        echo "==== Stop"        if [ -f $PID ]        then    if kill $( cat $PID )            then echo "Done."                 echo "$(date '+%Y-%m-%d %X'): Stop" >>$LOG            fi            /bin/rm $PID            kill_cmd        else    echo "No pID file. Already stopped?"        fi    }    case "" in        'start')                start                ;;        'stop')                stop                ;;        'restart')                stop ; echo "SleePing..."; sleep 1 ;                start                ;;        'status')                status                ;;        *)                echo    echo "Usage:  { start | stop | restart | status }"                echo    exit 1                ;;    esac    exit 0
解决方法 1)
COMMAND =“$CMD -p $PORT -l $ListEN_IP -m $MEM_SIZE -v” – 在Unix传统中的-v通常是–verbose的快捷方式.所有这些美元符号都是可变扩展(它们的文本值被插入分配给新变量COMMAND的字符串中).

2)
ps -ef | grep -v grep | grep $(cat $PID) – 它是一个管道:ps将其输出重定向到grep,输出到另一个grep,最终结果打印到标准输出.
grep -v grep的意思是“占用所有不包含’grep’的行”(grep本身就是一个进程,所以你需要将它从ps的输出中排除). $($command)是一种运行命令并将其标准输出插入此脚本位置的方法(在这种情况下:cat $PID将显示名为$PID的文件内容).

3)kill_cmd.
这个函数是一个无限循环试图杀死’memcached’进程的PID的List.首先,它尝试发送TERM信号(礼貌地要求$List中的每个进程退出,保存其工作并正确关闭),给他们2秒(睡眠2)来完成他们的关机工作,然后尝试确保所有进程使用信号KILL(-9)杀死,它使用 *** 作系统设施立即杀死进程:如果进程在2秒内没有完成其关闭工作,则认为是挂起的).如果使用kill -9进行杀戮成功,则会删除PID文件并退出循环.

ps -ef | grep -v grep | grep $CMD | grep -w $USR | awk'{print $2}’打印名为$CMD(‘memcached’)和user $USR(‘user’)的进程的所有PID. grep的-w选项意味着“仅限整个单词”(这不包括所寻求的名称是另一个进程名称的一部分的情况,如’fakememcached’). awk是一个小解释器,最常用于从每行输入中取一个单词数字N(您可以将其视为文本表的一列的选择器).在这种情况下,它会在ps输出行中打印每个第二个字,这意味着每个PID.

如果您有任何其他问题,我将在下面添加答案.

总结

以上是内存溢出为你收集整理的linux – start-stop-restart shell脚本的功能全部内容,希望文章能够帮你解决linux – start-stop-restart shell脚本的功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1017809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存