Linux脚本启动,停止,重新启动
任何人都可以告诉我这个脚本究竟做了什么?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 “.”
;;
确实因为其他部分是一样的! 请;)
哪一部分是一样的?脚本工作的方式是检查$1
的值,这是命令行上提供的脚本的第一个参数。如果它是'开始',则执行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
声明。
sshd将其进程ID写入/ var/run中的文件。反引号导致它们内部的脚本被shell执行,并且结果被用于它的位置。
最终的结果是杀[sshd的PID]
你提到的部分启动 “sshd的” 程序。这是安全外壳(SSH)守护进程(服务器进程)。
根据命令行参数,脚本启动,停止或重新启动SSH服务器。 $1
代表命令行参数,并将此值与case
和esac
之间的不同可能值进行比较。
如果文件存在,test –f /usr/bin/sshd
部分返回true
。||
是或,所以|| exit 0
只有在第一部分返回false时才会执行(结束脚本)。
在case "$1"
部分,$1
是传递给脚本的第一个参数。
“我想知道这部分究竟做了什么......因为其他部分是相同的!”
start)假定sshd尚未启动,并启动它。
这与重启)不同,它首先停止sshd进程(如Joe所述),然后再次启动它。
谢谢你,你很清楚;) – Erma 2011-01-25 19:12:11