我已经注意到,每当我使用ubuntu命令“ nginx”启动nginx时,我都会执行systemctl状态nginx。它表明systemctl已禁用。此外,如果我先使用systemctl命令启动nginx,然后尝试使用nginx命令启动nginx,它会检查端口的可用性,然后说nginx:[emerg]仍然无法bind()。所以我认为一定有一个区别和他们的目的。当我使用nginx命令strng nginx时,停止nginx的唯一方法是强制使用killlall nginx或kill -9(进程ID)或清除端口。因此,我敢肯定它们之间会有一些区别。
答案 0 :(得分:2)
您提供的示例之间的区别在于流程的启动方式。
运行命令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
返回“ disabled”的原因。
希望这很有道理。
答案 1 :(得分:1)
service
命令只是一个简单的脚本,基本上抽象地选择了底层的初始化系统(upstart,systemmd,/ etc / init.d或 systemctl )。
因为它是一个非常简洁的脚本,所以它仅支持非常有限的一组操作(start | stop | reload ..)。
但是,如果您实际上要执行其他操作,则在这种情况下需要使用实际的初始化系统systemctl
一个合适的示例是使用systemctl sudo systemctl enable the-name-of-service
在启动时启动服务,而使用service