37,819 瀏覽數

Linux command – service

自從 Linux 的開機改成為 upstart / systemd 的模式之後,舊的指令 (如 /etc/init.d/network-manager restart) 方式無法使用,須使用 upstart / systemd 的指令來管理,啟動服務 daemon.

不過在 Linux 系統下並不是所有的服務都是透過 upstart / systemd 啟動,也有部分還是需要透過 system V 的方式.

  • System V
    如果在 /etc/init.d 目錄下有包含 System V init scripts 的就可以用下面的指令方式來啟動.

    ppny@benjr:$ sudo /etc/init.d/networking restart
    
  • Upstart
    但相反的在 /etc/init 目錄下有包含 upstart jobs configuration 的就可以用 initctl 指令方式來啟動.

    ppny@benjr:$ sudo initctl restart network-manager
    network-manager start/running, process 2273
    

    關於 initctl 的使用請參考 http://benjr.tw/94015

    在 Ubuntu 的 System V / Upstart .其實我們還是可以統一使用 #service 來啟動服務.

    ppny@benjr:$ sudo service network-manager restart
    network-manager stop/waiting
    network-manager start/running, process 2580
    

    但是 RedHat / CentOS 7 用的是 systemd 就沒有辦法透過 service 這個指令,還是只能乖乖的用 systemctl 來做了.

  • systemd
    如果你的系統是使用 systemd 來啟動服務那要使用 systemctl 這個指令來操作.

    [root@benjr ~]# service NetworkManager restart
    Redirecting to /bin/systemctl restart  NetworkManager.service
    [root@benjr ~]# systemctl restart NetworkManager
    

    關於 systemctl 的使用請參考 http://benjr.tw/94315

網友的想法

發表迴響