![如何正确创建服务?](https://linux22.com/image/1352905/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E5%88%9B%E5%BB%BA%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
这是我所做的:
1) 创建一个用户some_deployer
2) 然后创建一个文件夹来编写脚本,如/company/script/<service name>
3) 在此文件夹中,我创建start.sh
和stop.sh
脚本,并将所有权授予用户some_deployer
,并将权限授予chmod 755
。
4) 然后在文件夹中创建脚本/etc/init.d/
,如<service name>-service
和将所有权授予用户some_deployer
,并将权限授予chmod 755
。
5) 然后将这项服务添加到服务列表中,仍然在/etc/init.d/
里面
/sbin/chkconfig --add -service (suse) 或 update-rc.d <service name>
defaults (ubuntu)
这是正确的吗?这是最好的处理方式吗?我问这个问题是因为我正在创建的一项服务突然不再工作了,我尝试了命令 /etc/init.d/-service,它说command is not found
,这是为什么?
答案1
没有必要创建用户,但如果这对您有利,您当然可以这样做。不确定您所说的 /company/script/ 是什么意思,但没有理由不这样做。只需确保您的脚本文件在运行 update-rc.d 之前位于 /etc/init.d 中。我不确定您为什么要使用 /company/script/,但从您的错误来看,您的服务名称没有显示出来。
在此处查看 init.d 脚本的 LSB 规范:http://wiki.debian.org/LSBInitScripts 您创建一个具有 stop/start/restart/force-reload/status 功能的单个脚本,然后按照您的建议使用 update-rc.d 或任何方式进行注册。这将允许 update-rc.d 指向单个文件,但使用它执行所有必需的操作。
答案2
不要太相信 LSB,大多数发行版早已放弃sysvinit
使用 Ubuntu、RHEL upstart
(在 RHEL 的情况下主要处于 SysV 兼容模式),Fedora 已经使用了systemd
一年多,在 Fedora 18 中几乎所有服务都是原生 systemd。systemd 的承诺之一是继续处理与 LSB 兼容的设置,但如果使用原生配置,它会提供许多优势。看看它的广泛文档。