サービスの管理を行うsystemctlコマンドについて調べてた
ISUCON9の練習をするため、Vagrant ISUCONを利用しました。チームはGoで参加するので、初期実装はPythonでした。言語を切り替える方法がわからず、悪戦苦闘していたのですがsystemctl
コマンドを用いることで実現できることがわかりました。
解決する過程で、systemctl
について学んだことをまとめます。
systemctl
systemctl
コマンドは、サービスの管理を行うコマンドです。
Apache HTTP Serverを起動するためのコマンドにsystemctl start httpd
があるように、かなり身近なコマンドであることがわかります。
man systemctl
すると、頻繁に利用しそうなコマンドがわかりました。
コマンド | 意味 |
---|---|
stop | サービスの停止 |
start | サービスを開始 |
restart | サービスを再起動 |
status | サービスの状態を確認する |
enable | サービスを有効にする |
disable | サービスを無効にする |
Vagrant ISUCON7の言語切り替え
まず、初めに管理しているサービスを把握する必要があるため
systemctl
またはsystemctl list-units
を実行します。すると、たくさんのサービスが存在していることがわかりました。
systemctl list-units --help
からtype指定をすることで、絞り込みができることがわかります。
Unit Commands: systemctl [OPTIONS...] {COMMAND} ... Query or send control commands to the systemd manager. -h --help Show this help --version Show package version --system Connect to system manager --user Connect to user service manager -H --host=[USER@]HOST Operate on remote host -M --machine=CONTAINER Operate on local container -t --type=TYPE List units of a particular type ......
typeは、systemctl list-units
で下記のような出力された時の2番目の文字を指定できます。
- system-getty.slice
- type=slice
- ssh.service
- type=service
以上からsystemctl list-units --type=service
を実行するとisubata.golang.serviceという、いかにも言語切り替えに必要なサービスがあることがわかりました。
表示をわかりやすくするため、systemctl list-unit-files
に切り替え、systemctl list-units --type=service | grep isubata
をすると、pythonが動いていることがわかります。
isubata.golang.service disabled isubata.nodejs.service disabled isubata.perl.service disabled isubata.php.service disabled isubata.ruby.service disabled isubata.python.service enabled
ここまでくれば、python実装のサービスを無効化し好きな言語を有効化すれば、言語が切り替わります。
sudo systemctl disabled isubata.python.service sudo systemctl enabled isubata.golang.service
systemctl
についての詳細な説明は、参考文献をご覧下さい。
参考文献
CentOS 7で作るネットワークサーバ構築ガイド 1804対応 第2版
- 作者: サーバ構築研究会
- 出版社/メーカー: 秀和システム
- 発売日: 2018/11/29
- メディア: Kindle版
- この商品を含むブログを見る