Init-Script
無法從系統服務腳本啟動本地建構的 ntpd
我從原始碼建構了 ntpd,該過程將它放在 /usr/local/sbin 中。當然,ntp 服務指向 /usr/sbin。所以,我想我可以像這樣更改 init.d 配置文件中的路徑:
### BEGIN INIT INFO # Provides: ntp # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Start NTP daemon ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin . /lib/lsb/init-functions DAEMON=/usr/local/sbin/ntpd PIDFILE=/var/run/ntpd.pid ...[etc]
我更改了以“DAEMON”開頭的行以指向新二進製文件的位置。但是,當我嘗試重新啟動服務時,出現錯誤:
[ ok ] Stopping NTP server: ntpd. [....] Starting NTP server: ntpd/usr/local/sbin/ntpd: The 'user' option has been disabled. -- built without --enable-clockctl or --enable-linuxcaps or --enable-solarisprivs ntpd - NTP daemon program - Ver. 4.2.7p475 Usage: ntpd [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \ [ <server1> ... <serverN> ] Try 'ntpd --help' for more information. failed!
如何讓服務從 /usr/local/sbin 而不是 /usr/sbin 執行?
解決方案(基於接受的答案):
顯然,在 Linux 上建構時,您需要在 Linux 上
--enable-linuxcaps
建構時使用開關。以下是 Debian Wheezy 的必要步驟:cd ~/install/ntp-dev-4.2.7p475 # or wherever you have the source unpacked make clean # clean out the previous build sudo apt-get install libcap-dev # this library is required by linuxcaps ./configure --enable-linuxcaps # this is the critical switch make sudo make install sudo /etc/init.d/ntp restart # restart ntp ntpq -c "rv 0 version" # make sure you are running the right version
如上所述,您在 /etc/init.d/ntp 中唯一更改的行是 DAEMON 行。
您已經在
ntpd
沒有--enable-linuxcaps
選項的情況下建構了。沒有這個,ntpd
將無法辨識使用者選項-u
。您的選擇是:
- 使用正確的選項重新編譯
-u $UGID
從NTPD_OPTS
行中刪除/etc/init.d/ntp