Linux脚本启动,停止,重启

时间:2011-01-25 19:05:12

标签: linux

任何人都可以告诉我这个脚本到底是做什么的吗?

#! /bin/sh
test –f /usr/bin/sshd || exit 0
case “$1” in
    start)
            echo –n “Starting sshd: sshd”
            /usr/sbin/sshd
            echo “.”
            ;;
   stop) 
          echo –n “Stopping sshd: sshd”
          kill `cat /var/run/sshd.pid`
          echo “.”
           ;;
   restart)
          echo –n “Stopping sshd: sshd”
          kill `cat /var/run/sshd.pid`
          echo “.”
          echo –n “Starting sshd: sshd”
            /usr/sbin/sshd
            echo “.”
            ;;
        *)
          echo “Usage: /etc/init.d/sshd start|stop|restart”
          exit 1
          ;;
    esac

我想知道这一部分到底是什么:

#! /bin/sh
test –f /usr/bin/sshd || exit 0
case “$1” in
    start)
            echo –n “Starting sshd: sshd”
            /usr/sbin/sshd
            echo “.”
            ;;

因为其他部分是一样的! 请;)

5 个答案:

答案 0 :(得分:9)

哪个部分是相同的?脚本的工作方式是检查$1的值,这是命令行提供的脚本的第一个参数。如果它是'start',则执行start)之后的部分。如果它'停止',则执行stop)之后的部分。如果是“重新启动”,则执行restart)之后的部分。

第一部分逐行:

#! /bin/sh
嘿,这是一个shell脚本!具体来说,使用sh shell执行此脚本。

test –f /usr/bin/sshd || exit 0

是否有名为/usr/bin/sshd的文件?如果没有,退出0返回状态。

case “$1” in

检查第一个命令行选项$1的值。

    start)

如果$1是'开始'......

            echo –n “Starting sshd: sshd”

打印“Starting sshd: sshd”。

            /usr/sbin/sshd

执行/usr/sbin/sshd

            echo “.”

打印“.”。

            ;;

退出case声明。

答案 1 :(得分:1)

sshd将其进程ID写入/ var / run中的文件。反引号导致它们内部的脚本由shell执行,结果用于它的位置。

最终结果是kill [sshd pid]

答案 2 :(得分:1)

你提到的部分开始了“sshd”程序。它是Secure Shell(SSH)守护程序(服务器进程)。

根据命令行参数,您的脚本将启动,停止或重新启动SSH服务器。 $1表示命令行参数,此值与caseesac之间的不同可能值进行比较。

答案 3 :(得分:1)

如果文件存在,test –f /usr/bin/sshd部分将返回true||,因此只有在第一部分返回false时才会执行|| exit 0(结束脚本)。

case "$1"部分,$1是传递给脚本的第一个参数。

答案 4 :(得分:1)

“我想知道这部分究竟是什么......因为其他部分是一样的!”

开始)假设sshd尚未启动,并启动它。

这与 restart)不同,后者首先停止sshd进程(如Joe描述的那样),然后再次启动它。