Help us understand the problem. What is going on with this article?

systemctl コマンド

More than 1 year has passed since last update.


この記事は Linux コマンド 全部オレ Advent Calendar 2017 の8日目の記事です。

       systemctl - Control the systemd system and service manager

       systemctl [OPTIONS...] COMMAND [NAME...]

       systemctl may be used to introspect and control the state of the "systemd" system and service manager. Please refer to systemd(1) for an introduction into the basic concepts
       and functionality this tool manages.

これまでサービス起動デーモンとして、SysVinit/Upstart が使われてきたが Red Hat Enterprise Linux 7 や CentOS 7 からは systemd が使われるようになり、それをコントロールするためのコマンド。
サービスは Unit という単位で作られる。


操作 コマンド
サービス起動 systemctl start ${Unit}
サービス停止 systemctl stop ${Unit}
サービス再起動 systemctl restart ${Unit}
サービスリロード systemctl reload ${Unit}
サービスステータス表示 systemctl status ${Unit}
サービス自動起動有効 systemctl enable ${Unit}
サービス自動起動無効 systemctl disable ${Unit}
サービス自動起動設定確認 systemctl is-enabled ${Unit}
サービス一覧 systemctl list-unit-files --type=service
設定ファイルの再読込 systemctl daemon-reload


  1. サービスのユニット定義ファイルを作る
  2. ユニット定義ファイルを再読込
  3. 起動
## 動かすサービスを作る
$ sudo vim /usr/local/bin/
$ cat /usr/local/bin/

while :
    echo "Hello, World. (PID=$(echo $$), DATE=$(date))"
    sleep 30

## ユニット定義ファイルを作る
$ sudo vim /etc/systemd/system/hello_world.service
$ cat /etc/systemd/system/hello_world.service



## 起動
$ sudo systemctl start hello_world

## 自動起動の設定
$ sudo systemctl enable hello_world
Created symlink from /etc/systemd/system/ to /etc/systemd/system/hello_world.service.


systemd によって起動された Unit のログは、/var/log/journal 以下にバイナリ形式で保存されるようになっています。そのため、ログの確認には journalctl コマンドを利用する。
-ftail -f 的な動きになる。

## tail -f 的な動きをさせる。
$ sudo journalctl -f -u hello_world
-- Logs begin at Fri 2017-11-24 12:20:20 JST. --
Dec 08 12:59:40 test[27804]: Hello, World. (PID=27804, DATE=Fri Dec  8 12:59:40 JST 2017)
Dec 08 13:00:10 test[27804]: Hello, World. (PID=27804, DATE=Fri Dec  8 13:00:10 JST 2017)
Dec 08 13:00:40 test[27804]: Hello, World. (PID=27804, DATE=Fri Dec  8 13:00:40 JST 2017)
Dec 08 13:01:10 test[27804]: Hello, World. (PID=27804, DATE=Fri Dec  8 13:01:10 JST 2017)
Dec 08 13:01:40 test[27804]: Hello, World. (PID=27804, DATE=Fri Dec  8 13:01:40 JST 2017)
Dec 08 13:02:10 test[27804]: Hello, World. (PID=27804, DATE=Fri Dec  8 13:02:10 JST 2017)

## pager(less) をやめる。
$ sudo journalctl --no-pager -u hello_world
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away