serviceコマンドとsystemctlコマンドを調べてみた

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()

以下を参照。

覚え書き: /etc/init.d/functions の解説

systemctlコマンド

CentOS 7.xからはsystemctlコマンドに切り替わったがこれまではchkconfigとserviceで設定していたことがsystemctlコマンド1つで可能になったことは分かりやすく一貫性があるようには思える。

systemctl enable httpd
systemctl disable httpd
systemctl start httpd
systemctl stop httpd

ただ、コマンドが長くて入力が面倒に感じる時もあるのでsysctlでalias貼っておいてもいいかもしれない。

systemctlって難しい

いろいろ調べたところ以下の記事が参考になった。自分が書くよりわかりやすいと思うので以下を参照。いろいろ勝手が変わって難しく感じる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です