CentOS 7.0からサービスの管理が面倒になった。systemctl  というコマンドを使う。従来のようにchkconfigで管理されるサービスと新しい systemd  で管理されるサービスに分かれるようだ。
  (1) chkconfig  で確認してみる。
    chkconfigコマンドでサービスの有効/無効を設定しようと実行してみても以下のものしか出ない。ほとんどのものがsystemdの管理下に移動させられたようだ。
# chkconfig --list
mysqld     0:off 1:off 2:on 3:on 4:on 5:on 6:off  netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off  network    0:off 1:off 2:on 3:on 4:on 5:on 6:off    丁寧に「注記:  この出力は SysV サービスのみであり、ネイティブな   systemd のサービスは含まれていません。SysV 設定のデータはネイティブな   systemd の設定によって上書きされます。systemd サービスを一覧表示するには 'systemctl list-unit-files'  を使用してください。特定のターゲットにおいて有効化されているサービスを確認するには   'systemctl list-dependencies [target]' を使用してください。」とのメッセージが出る。従来のものがSysVサービスということか。
  (2) systemctl list-unit-files  で確認してみる。
    systemctl list-unit-files  を実行してみると300以上のサービスが一覧された。httpd,sshd,tomcat,NetworkManagerなどのサービスが含まてていた。
# systemctl list-unit-files
UNIT FILE                                   STATE     abrt-ccpp.service                           enabled   abrt-oops.service                           enabled   abrt-vmcore.service                         enabled   abrt-xorg.service                           enabled   ・・・(※300個以上のサービスが並ぶ)    httpd,tomcatなどのサービスは、これまで馴れ親しんできたコマンド(service   xxx start や chkconfig xxx on)では開始・停止、自動起動の設定などができなくなったということか。mysqld  のみ従来どおりに、service mysqld restartなどで利用することになるのか。この辺りを確認しておきたい。SysVサービスは、/etc/rc.d/init.d  配下にスクリプトを置くが、systemdサービスは、/lib/systemd/system  配下に置かれる。
# cd /etc/rc.d
# ls
init.d  rc.local  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  # ls rc0.d
K36mysqld  K50netconsole  K90network  # ls init.d
README     mysqld      network  vboxadd-service  functions  netconsole  vboxadd  vboxadd-x11    # cd /lib/systemd/system
# ls
・・・  httpd.service  tomcat.service  tomcat@.service  ・・・    mysqldは /etc/rc.d  にある。httpd、tomcat は /lib/systemd/system  配下にある。tomcat@  は何だろう。
  (4)   サービスのステータスを確認してみる。
    systemctl statusコマンドを試してみる。httpd、tomcatのサービスはどうなっているのか。
# systemctl status httpd
httpd.service - The Apache HTTP Server     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)     Active: active (running) since 2015-09-03 13:57:22 JST; 49min ago   Main PID: 4407 (httpd)     Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"     CGroup: /system.slice/httpd.service  ├─4407 /usr/sbin/httpd -DFOREGROUND
├─4408 /usr/sbin/httpd -DFOREGROUND
├─4409 /usr/sbin/httpd -DFOREGROUND
├─4410 /usr/sbin/httpd -DFOREGROUND
├─4411 /usr/sbin/httpd -DFOREGROUND
└─4412 /usr/sbin/httpd -DFOREGROUND
  9月 03 13:57:22 systemd[1]: Starting The Apache HTTP Server...
9月 03 13:57:22 httpd[4407]: AH00558: httpd: Could not reliably determine...ge
9月 03 13:57:22 systemd[1]: Started The Apache HTTP Server.
  # systemctl status tomcat
tomcat.service - Apache Tomcat Web Application Container     Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled)     Active: active (running) since 2015-09-03 13:58:03 JST; 48min ago    Process: 4485 ExecStop=/usr/libexec/tomcat/server stop (code=exited, status=0/SUCCESS)   Main PID: 4517 (java)     CGroup: /system.slice/tomcat.service  └─4517 java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-...
  9月 03 13:58:04 server[4517]: 9 03, 2015 1:58:04 午後 org.apache.catali...al
9月 03 13:58:04 server[4517]: 情報: サービス Catalina を起動します
9月 03 13:58:04 server[4517]: 9 03, 2015 1:58:04 午後 org.apache.catali...al
9月 03 13:58:04 server[4517]: 情報: Starting Servlet Engine: Apache Tom...54
9月 03 13:58:04 server[4517]: 9 03, 2015 1:58:04 午後 org.apache.coyote...rt
  # systemctl status tomcat@
Failed to issue method call: Unit name tomcat@.service is not valid.    httpd、tomcatは、VirtualBoxからCentOSを起動した時点でサービスが開始されている。このコマンドは、ログの一部も表示してくれる。tomcat@  は何なんだろう。
  (5)   サービスの起動・停止・再起動を確認してみる。
    サービスを再起動してみる。mysqldとhttpdで試してみた。
# service mysqld restart
Restarting mysqld (via systemctl):   [  OK  ]  # service httpd restart
Redirecting to /bin/systemctl restart  httpd.service    # systemctl start mysqld
# systemctl start httpd
# systemctl start httpd.service
# systemctl restart mysqld
# systemctl restart httpd
# systemctl restart httpd.service
  service httpd restart  でhttpdを再起動してくれているようだ。リダイレクトしたと出ている。ただ、systemctlはレスポンスの文字列が全くないので、成功したのか失敗したのか全然分からないな。都度、statusを確認してみる必要がありそう。
# service httpd restart
Redirecting to /bin/systemctl restart  httpd.service  # systemctl status httpd
httpd.service - The Apache HTTP Server     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)     Active: active (running) since 2015-09-03 15:03:40 JST; 13ms ago    Process: 6919 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)   Main PID: 6923 (httpd)     Status: "Processing requests..."     CGroup: /system.slice/httpd.service  ├─6923 /usr/sbin/httpd -DFOREGROUND
├─6925 /usr/sbin/httpd -DFOREGROUND
├─6926 /usr/sbin/httpd -DFOREGROUND
├─6927 /usr/sbin/httpd -DFOREGROUND
├─6928 /usr/sbin/httpd -DFOREGROUND
└─6929 /usr/sbin/httpd -DFOREGROUND
・・・  # systemctl restart mysqld
# systemctl status mysqld
mysqld.service - SYSV: MySQL database server.     Loaded: loaded (/etc/rc.d/init.d/mysqld)     Active: active (running) since 2015-09-03 15:03:44 JST; 1s ago    Process: 6942 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)    Process: 6973 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)   Main PID: 7228 (mysqld)     CGroup: /system.slice/mysqld.service  ├─7000 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mys...
└─7228 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/...
・・・    SysVのサービス(mysqldなど)も、systemdのサービス(httpd,tomcatなど)も同じように扱えることが分かった。ただし、実行後のステータスは都度確認した方がよさそうだ。これからは、systemctlのコマンドに馴染むようにしよう。
-   どちらも service xxx restart  で再起動できる。
-   どちらも systemctl restart xxx  で再起動できる。
-   どちらも systemctl status xxx  でステータスを確認できる。
  ちなみに、サービスの自動起動の設定は以下のようにenable/disableで行う。httpdの場合、サービス名は、"httpd"でも"httpd.service"でもいいようだ。
# systemctl enable httpd
# systemctl disable httpd
  
  
  
 
0 件のコメント:
コメントを投稿