shell 脚本中的初始化程序

init program in shell script

我一直在努力理解这段代码,但我无法理解它的全部。我知道 'init' 是第一个启动过程,该程序用于启动或结束特定提到的服务。但是 'kill' 中的 'cat' 是做什么的?当这个程序启动、停止和重新启动时,系统内部会发生什么?

#!/bin/sh
test -f /usr/sbin/sshd || exit 0
case "" 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

当 Unix OS 启动时,它将 运行 /etc/init.d 中的所有脚本,其中这个脚本带有 "start" 参数。然后该脚本调用 /usr/sbin/sshd 分叉后台进程并终止。后台进程将再次 fork,它的子进程将成为恶魔进程。恶魔进程将其 PID 写入 /var/run/sshd.pid 并开始服务。 OS 关闭后,将使用 "stop" 参数再次调用此脚本。它将从文件中收集恶魔的 PID 并优雅地终止它(没有开关 kill 发送 SIGTERM 就好像 'kill -15 $pid')。