有什麼區別:我嘗試的第一個有什麼區別?須藤重啓
sudo /etc/init.d/apache2 restart
和
sudo service apache2 restart
,並沒有申請我的變化,而
sudo service apache2 restart
沒有攝取我變化。
有什麼區別:我嘗試的第一個有什麼區別?須藤重啓
sudo /etc/init.d/apache2 restart
和
sudo service apache2 restart
,並沒有申請我的變化,而
sudo service apache2 restart
沒有攝取我變化。
這裏是什麼是真正發生的事情,當你運行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系統。
一般而言,這兩個命令是否相同取決於您的Linux發行版。
第一個需要存在一個傳統的SysV風格的初始化腳本。直到幾年前,這幾乎是控制服務和service
腳本的唯一方法,它只是一個基本上添加了init腳本路徑的簡單包裝。
現在很多Linux發行版已經切換到替代服務管理系統,如upstart
或systemd
。因此,service
包裝也可以利用這些系統,提供一定程度的兼容性。底線:根據您的Linux發行版的具體情況,/etc/init.d/apache2
可能根本不存在,它可能只是使用service
本身,或者它可能什麼也不做。例如,我的Mageia Linix系統使用systemd
服務文件啓動Apache,並且根本沒有SysV init腳本。
通常情況下,您最好使用service <service> <command>...
。
從'service'手冊頁中,'SCRIPT參數指定了位於/etc/init.d/ SCRIPT.'中的System V初始化腳本。它應該是同樣的東西,你確定沒有其他的東西導致你的改變被反映出來嗎? – bruchowski 2014-10-11 08:13:35
這個問題似乎是脫離主題,因爲它是關於服務器管理,而不是_programming_。它屬於[sf]。 – 2014-10-11 08:34:29