我的 yum 源是本地 iso 源,我使用yum install vsftpd -y
,我使用whereis
find the vsftpd
:
[root@localhost etc]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
原来在下/usr/sbin/
,为什么它不定位在/etc/rc.d/init.d
?
编辑
我用CentOS 7.2
。
答案1
/etc/init.d
或者/etc/rc.d/init.d
是软件应用程序的初始化脚本所在的位置。/usr/sbin
(或/usr/bin
) 是应用程序可执行文件实际安装的位置。
/etc/rc.d/init.d
仅包含一个调用应用程序的脚本(在您的例子中为 vsftpd)。该脚本通常用于在启动过程中将应用程序作为守护程序服务启动在里面过程。除此之外,脚本还/etc/init.d
提供启动、停止、状态和重新启动选项。
vsftpd 是应用程序,它通常有一个服务文件/etc/systemd/system/
而不是启动脚本。这就是为什么它不位于/etc/init.d/
答案2
因为如果您阅读man whereis
,它只会搜索标准中的二进制文件$PATH
。例如
# echo $PATH
/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
请注意,它/etc/init.d
不在PATH
.
您可以使用 .vsftpd RPM 查看由 vsftpd RPM 安装的所有文件rpm -q --dump vsftpd
。
正如 @Gilson_Varghese 所指出的,. 中不一定有脚本/etc/init.d
。可能只有一个 systemd 单元。如果两者都有,systemd 将只使用 systemd 单元!软件包将把 systemd 单元安装到/lib/systemd/system/
(不是/etc
!),并带有.service
文件扩展名。