我注意到,当我用ubuntu命令" nginx“启动nginx时,我会执行systemctl状态nginx。它显示了systemctl是禁用的。此外,如果我首先用命令systemctl启动nginx,然后尝试用命令nginx启动nginx,它会检查端口的可用性,然后说nginx: emerg仍然无法绑定()。所以我想一定有不同的目的和目的。当我用命令nginx来命令nginx时,阻止nginx的唯一方法是使用杀灭nginx或杀害-9 (进程id)或清除端口。所以我很肯定他们之间有一些不同。
发布于 2019-01-03 06:35:22
您提供的示例之间的区别在于进程是如何启动的。
运行命令nginx
将启动应用程序,并等待用户操作停止它。
systemctl
或service
命令几乎是一样的,运行service nginx start
或systemctl start nginx
将在后台启动服务,运行Nginx守护进程。
您还可以使用它来执行service nginx restart
或systemctl restart nginx
来重新启动服务,甚至可以使用service nginx reload
/ systemctl reload nginx
来重新加载配置,而无需完全停止Nginx服务器。
不能同时执行nginx
和systemctl start nginx
的原因是由于nginx配置已经侦听端口80,并且不能同时侦听单个IP地址上的同一个端口。
您还可以通过运行systemctl enable nginx
强制nginx服务启动,这就是为什么systemctl status nginx
返回“禁用”的原因。
希望这是有意义的。
发布于 2019-01-03 06:40:24
service
命令只是一个简单的脚本,它基本上抽象地选择了底层init系统(upstart、systemmd、/etc/init.d或systemctl)。
因为它是一个非常简洁的脚本,所以它只支持非常有限的一组操作(开始/停止/重新加载)。)。
但是,如果您实际上想要执行附加操作,则需要使用实际的init系统(在本例中为systemctl )。
一个apt示例是在启动时使用systemctl sudo systemctl enable the-name-of-service
启动服务,而使用service
是不可能的。
https://stackoverflow.com/questions/54017277
复制相似问题