Linux下systemctlコマンドとサービス、chkconfigコマンドの違い

9961 ワード

Systemctlとサービス、chkconfigコマンドの関係
  • systemctlコマンド:systemdツールで、主にsystemdシステムとサービスマネージャを制御します.
  • サービスコマンド:システム・サービスを起動、停止、再起動、および停止できます.また、すべてのシステム・サービスの現在のステータスを表示できます.
  • chkconfigコマンド:システムサービスを管理するコマンドラインツールです.システムサービス(service)とは、システムの起動に伴って起動し、システムが閉じるにつれて閉じるプログラムである.

  • Systemctlコマンドは、実際にserviceとchkconfigの2つのコマンドを組み合わせたシステムサービスマネージャコマンドです.
    Systemctlは、RHEL 7のサービス管理ツールの主なツールであり、従来のサービスとchkconfigの機能を一体化しています.永続性を使用するか、現在のセッションでのみサービスを有効/無効にできます.
    したがってsystemctlコマンドはサービスコマンドとchkconfigコマンドの集合と代替である.
    たとえば、サービス起動サービスを使用しても、実際にはsystemctlコマンドが呼び出されます.
    [root@localhost ~]# service httpd start
    Redirecting to /bin/systemctl start  httpd.service
    

    Systemctlコマンドの使い方
    Systemctlコマンドの概要:
    Systemctlはsystemdツールで、主にsystemdシステムとサービスマネージャを制御します.
    Systemdはシステム管理デーモン、ツール、ライブラリの集合であり、System V初期プロセスに取って代わる.Systemdの機能はクラスUNIXシステムの管理と構成を一元化するためのものです.
    Systemdはsystem daemonであり、linuxの下にあるinitソフトウェアである.
    Systemctlコマンドの一般的な使用方法:
    (1)利用可能なすべてのユニットを一覧表示します.
    [root@localhost ~]# systemctl list-unit-files 
    UNIT FILE                                  STATE   
    proc-sys-fs-binfmt_misc.automount          static  
    dev-hugepages.mount                        static  
    dev-mqueue.mount                           static  
    proc-fs-nfsd.mount                         static  
    proc-sys-fs-binfmt_misc.mount              static  
    sys-fs-fuse-connections.mount              static  
    sys-kernel-config.mount                    static  
    sys-kernel-debug.mount                     static  
    tmp.mount                                  disabled
    var-lib-nfs-rpc_pipefs.mount               static  
    brandbot.path                              disabled
    cups.path                                  enabled 
    

    (2)利用可能なすべてのユニットを一覧表示する.
    [root@localhost ~]# systemctl list-units
      UNIT                      LOAD      ACTIVE SUB       DESCRIPTION
      proc-sys-fs-binfmt_misc.automount loaded    active waiting   Arbitrary 
      sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda
      sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda
      sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda
      sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:1-2:0:1:0-block-sdb
      sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:1-2:0:1:0-block-sdb
      sys-devices-pci0000:00-0000:00:11.0-0000:02:01.0-net-ens33.device loade
      sys-devices-pci0000:00-0000:00:11.0-0000:02:02.0-sound-card0.device lo
     ..............
    

    (3)すべての失敗したユニットをリストする:
    [root@localhost ~]# systemctl --failed 
      UNIT                LOAD   ACTIVE SUB    DESCRIPTION
    ● network.service     loaded failed failed LSB: Bring up/down networking
    ● [email protected] loaded failed failed Team Daemon for device team0
    
    LOAD   = Reflects whether the unit definition was properly loaded.
    ACTIVE = The high-level unit activation state, i.e. generalization of SUB
    SUB    = The low-level unit activation state, values depend on unit type.
    
    2 loaded units listed. Pass --all to see loaded but inactive units, too.
    To show all installed unit files use 'systemctl list-unit-files'.
    

    (4)ユニットが起動しているかどうかを確認する.
    [root@localhost ~]# systemctl is-enabled httpd.service 
    enabled
    

    (5)あるサービスの運行状態を検査する:
    [root@localhost ~]# systemctl status httpd.service     
    ● httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
       Active: active (running) since   2018-10-14 18:21:46 CST; 1 day 2h ago
         Docs: man:httpd(8)
               man:apachectl(8)
     Main PID: 19020 (httpd)
       Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
       CGroup: /system.slice/httpd.service
               ├─19020 /usr/sbin/httpd -DFOREGROUND
               ├─27310 /usr/sbin/httpd -DFOREGROUND
               ├─27311 /usr/sbin/httpd -DFOREGROUND
               ├─27312 /usr/sbin/httpd -DFOREGROUND
               ├─27313 /usr/sbin/httpd -DFOREGROUND
               └─27314 /usr/sbin/httpd -DFOREGROUND
    
    10  14 18:21:46 localhost systemd[1]: Starting The Apache HTTP Serv....
    10  14 18:21:46 localhost httpd[19020]: AH00558: httpd: Could not r...e
    

    (6)すべてのサービスをリストする:
    [root@localhost ~]# systemctl list-unit-files --type=service
    UNIT FILE                                  STATE   
    abrt-ccpp.service                          enabled 
    abrt-oops.service                          enabled 
    abrt-pstoreoops.service                    disabled
    abrt-xorg.service                          enabled 
    abrtd.service                              enabled 
    accounts-daemon.service                    enabled 
    alsa-restore.service                       static  
    alsa-state.service                         static  
    alsa-store.service                         static  
    arp-ethers.service                         disabled
    atd.service                                disabled
    auditd.service                             enabled 
    auth-rpcgss-module.service                 static  

    (7)起動、停止、再起動サービス等:
    [root@localhost ~]# systemctl restart httpd.service
    # systemctl restart httpd.service
    # systemctl stop httpd.service
    # systemctl reload httpd.service
    # systemctl status httpd.service
    

    (8)サービスがアクティブになっているかどうかを確認し、起動するかどうかを設定します.
    [root@localhost ~]# systemctl is-active httpd
    active
    [root@localhost ~]# systemctl disable httpd
    Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
    [root@localhost ~]# systemctl enable httpd 
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
    

    (9)systemctlコマンドを使用してサービスを殺す:
    [root@localhost ~]# systemctl kill httpd
    

    (10)システムの各サービス、マウント、設備などをリストする.
    [root@localhost ~]# systemctl list-unit-files --type 
    automount  device     path       snapshot   swap       timer
    busname    mount      service    socket     target  

    (11)システムのデフォルト起動レベルを取得し、デフォルト起動レベルを設定する.
    [root@localhost ~]# systemctl get-default 
    graphical.target
    [root@localhost ~]# systemctl set-default multi-user.target 
    

    (12)運転レベルの起動:
     systemctl isolate multiuser.target
    

    (13)再起動、停止、保留、休眠システムなど:
    # systemctl reboot
    # systemctl halt
    # systemctl suspend
    # systemctl hibernate
    # systemctl hybrid-sleep
    

    サービスコマンドの使い方
    サービスコマンドは、システム・サービスを起動、停止、再起動、および停止したり、すべてのシステム・サービスの現在のステータスを表示したりすることができます.
    サービスコマンドの役割は除去/etc/initです.dディレクトリの下で対応するサービスを探し、オンとオフなどの操作を行う.
    使用例:
    サービスのクローズを開始:service httpd start/stop
    [root@localhost ~]# service httpd start
    Redirecting to /bin/systemctl start  httpd.service
    

    システム・サービスのステータスの表示:サービス--status-all
    [root@localhost ~]# service --status-all
        netconsole   
         :
    lo ens33 ens33.old team0 team0-port1 team0-port1.old team0-port2 team0-port2.old team0.old
          :
    lo ens33 virbr0 ens38 ens39 team0
    ● rhnsd.service - LSB: Starts the Spacewalk Daemon
       Loaded: loaded (/etc/rc.d/init.d/rhnsd; bad; vendor preset: disabled)
       Active: active (running) since   2018-10-12 14:53:19 CST; 3 days ago
         Docs: man:systemd-sysv-generator(8)
     Main PID: 1380 (rhnsd)
       CGroup: /system.slice/rhnsd.service
               └─1380 rhnsd
    
    

    chkconfigコマンドの使い方
    chkconfigは、システムサービスを管理するコマンドラインツールです.システムサービス(service)とは、システムの起動に伴って起動し、システムが閉じるにつれて閉じるプログラムである.
    chkconfigは、システムサービス(service)の実行レベル情報を更新(起動または停止)し、クエリーすることができる.より簡単に、chkconfigは/etc/rc[0-6]を維持するためのものである.dディレクトリのコマンドラインツール.
    chkconfigの一般的な使い方:
    [root@localhost ~]# chkconfig  --help
    chkconfig    1.7.2 -    (C) 1997-2000     
      GNU        ,          。
    
      :   chkconfig [--list] [--type ] [  ]
             chkconfig --add 
             chkconfig --del 
             chkconfig --override 
             chkconfig [--level ] [--type ]  
    

    (一)サービス起動の有無を設定する:
     chkconfig name on/off/reset
    
  • on、off、resetは、サービスの起動情報を変更するために使用される.
  • onはオン、offはオフ、resetはリセットを表します.
  • のデフォルトでは、onスイッチとoffスイッチは運転レベル2、3、4、5にのみ有効であり、resetはすべての運転レベルに有効です.
  • [root@localhost ~]# chkconfig httpd on
      :        “systemctl enable httpd.service”。
    

    Redhat 7でchkconfigコマンドを実行すると、systemcleコマンドに移動します.
    (2)サービス実行レベルの設定:
     chkconfig --level levels
    

    このコマンドは、サービスの実行レベル、すなわち、実行レベル2,3,4,5などを指定するために使用できます.
  • レベル0表示:シャットダウンを示す
  • レベル1表示:シングルユーザモード
  • レベル2は、ネットワーク接続のないマルチユーザコマンドラインモード
  • を示す.
  • レベル3は、ネットワーク接続のあるマルチユーザコマンドラインモード
  • を示す.
  • レベル4表示:使用不可
  • レベル5は、グラフィックインタフェース付きマルチユーザモード
  • を示す.
  • レベル6表示:
  • を再起動
    例:
    [root@localhost ~]# chkconfig --level 5 httpd on
      :        “systemctl enable httpd.service”
    

    (3)サービス起動情報をリストする:
    # chkconfig --list [name]
    

    nameを指定しない場合は、すべてのサービスの情報がリストされます.
    各サービスには、実行レベルごとに起動と停止スクリプトがあります.実行レベルを切り替えると、initは起動したサービスを再起動したり、停止したサービスを再停止したりしません.
    例:
    [root@localhost ~]# chkconfig --list
    
      :         SysV   ,       systemd   。SysV           systemd     。 
                 systemd   ,    'systemctl list-unit-files'。
                 target         
          'systemctl list-dependencies [target]'。
    
    netconsole      0:     1:     2:     3:     4:     5:     6: 
    network         0:     1:     2:     3:     4:     5:     6: 
    rhnsd           0:     1:     2:     3:     4:     5:     6: 
    

    **まとめ:**serviceコマンドの機能は基本的にsystemctに取って代わられます.システムctlコマンドを直接使用すればいいです.