我一直试图理解这段代码,但我无法完成整个代码。我得到了那个' init'是第一个启动过程,该程序用于启动或结束特定的提到的服务。但是' cat'是什么?在' kill'当这个程序启动,停止和重启时,系统内部会发生什么?
#!/bin/sh
test -f /usr/sbin/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
答案 0 :(得分:0)
当Unix操作系统启动时,它将运行/etc/init.d中的所有脚本,其中包括这个脚本,使用" start"论点。然后该脚本调用/ usr / sbin / sshd,它会分叉后台进程并终止。后台进程将再次fork并且其子将成为恶魔进程。恶魔进程将其PID写入/var/run/sshd.pid并开始服务。关闭操作系统后,将再次使用" stop"来调用此脚本。论点。它将从文件中收集恶魔的PID并优雅地终止它(没有开关杀死发送SIGTERM,就像杀死-15 $ pid')。