CentOS7.xで勝手が変わったので、改めてserviceコマンドとsystemctlコマンドを調べてみた。
(けど、完全に理解できていない気がする。)
serviceコマンド
CentOS 6.xまではサービスの起動/停止がserviceコマンドだった。個人的には慣れているせいかこちらの方が使いやすいように感じる。
実際はシェルスクリプト
このコマンドの実態はシェルスクリプトで /etc/init.d/ 内のスクリプトを実行しているだけらしい。たしかに以下のどちらでもサービスの起動/停止は可能である。
service httpd restart /etc/init.d/httpd restart
/etc/init.d/ 内のスクリプトを漁っているとfunctionsというファイルがあった。このファイルはその名の通り関数を定義している。調べてみると関数は26あり読むのが億劫になったので先人に頼ることにした。
user@localhost:~$ grep ".*() {" functions | sed 's/ {//' systemctl_redirect () checkpid() __kill_pids_term_kill_checkpids() __kill_pids_term_kill() __pids_var_run() __pids_pidof() daemon() killproc() pidfileofproc() pidofproc() status() echo_success() echo_failure() echo_passed() echo_warning() update_boot_stage() success() failure() passed() warning() action() strstr() is_ignored_file() is_true() is_false() apply_sysctl()
以下を参照。
systemctlコマンド
CentOS 7.xからはsystemctlコマンドに切り替わったがこれまではchkconfigとserviceで設定していたことがsystemctlコマンド1つで可能になったことは分かりやすく一貫性があるようには思える。
systemctl enable httpd systemctl disable httpd systemctl start httpd systemctl stop httpd
ただ、コマンドが長くて入力が面倒に感じる時もあるのでsysctlでalias貼っておいてもいいかもしれない。
systemctlって難しい
いろいろ調べたところ以下の記事が参考になった。自分が書くよりわかりやすいと思うので以下を参照。いろいろ勝手が変わって難しく感じる。
http://alpha.mixi.co.jp/entry/2013/12063/
コメントを残す