2014-10-11 60 views
0

有什么区别:我尝试的第一个有什么区别?须藤重启

sudo /etc/init.d/apache2 restart 

sudo service apache2 restart 

,并没有申请我的变化,而

sudo service apache2 restart 

没有摄取我变化。

+0

从'service'手册页中,'SCRIPT参数指定了位于/etc/init.d/ SCRIPT.'中的System V初始化脚本。它应该是同样的东西,你确定没有其他的东西导致你的改变被反映出来吗? – bruchowski 2014-10-11 08:13:35

+0

这个问题似乎是脱离主题,因为它是关于服务器管理,而不是_programming_。它属于[sf]。 – 2014-10-11 08:34:29

回答

2

这里是什么是真正发生的事情,当你运行sudo /etc/init.d/apache2 restart

if ! $APACHE2CTL configtest > /dev/null 2>&1; then 
    $APACHE2CTL configtest || true 
    log_end_msg 1 
    exit 1 
fi 
if check_htcacheclean ; then 
     log_daemon_msg "Restarting web server" "htcacheclean" 
     stop_htcacheclean 
     log_progress_msg apache2 
else 
     log_daemon_msg "Restarting web server" "apache2" 
fi 
PID=$(pidof_apache) || true 
if ! apache_wait_stop; then 
     log_end_msg 1 || true 
fi 
if $APACHE2CTL start; then 
     if check_htcacheclean ; then 
       start_htcacheclean || log_end_msg 1 
     fi 
     log_end_msg 0 
else 
     log_end_msg 1 
fi 

正如你所看到的;首先配置测试运行,如果这是成功的服务器停止,然后启动。

我发现很难相信,如果正确保存并且有效,运行此命令不会应用您的更改。我只使用这个命令,从来没有这个问题。

/usr/bin/service被描述为:

# A convenient wrapper for the /etc/init.d init scripts. 

它执行以下操作:

SERVICEDIR="/etc/init.d" 

# Otherwise, use the traditional sysvinit 
if [ -x "${SERVICEDIR}/${SERVICE}" ]; then 
    exec env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" ${ACTION} ${OPTIONS} 
else 
    echo "${SERVICE}: unrecognized service" >&2 
    exit 1 
fi 

所以命令是基本一致,sudo service apache2 restart只是为sudo /etc/init.d/apache2 restart的包装。

您也可以使用sudo /etc/init.d/apache2 reload,这将重新加载配置而不重新启动服务器。这只适用于如果你改变了配置,它不会加载你启用的模块,因为你需要重新启动Apache。

编辑:此代码是由Debian系统。

0

一般而言,这两个命令是否相同取决于您的Linux发行版。

第一个需要存在一个传统的SysV风格的初始化脚本。直到几年前,这几乎是控制服务和service脚本的唯一方法,它只是一个基本上添加了init脚本路径的简单包装。

现在很多Linux发行版已经切换到替代服务管理系统,如upstartsystemd。因此,service包装也可以利用这些系统,提供一定程度的兼容性。底线:根据您的Linux发行版的具体情况,/etc/init.d/apache2可能根本不存在,它可能只是使用service本身,或者它可能什么也不做。例如,我的Mageia Linix系统使用systemd服务文件启动Apache,并且根本没有SysV init脚本。

通常情况下,您最好使用service <service> <command>...