24993


### 前提・実現したいこと

CentOS7 で、CentOS6 での runlevel に当たる設定がしたいです。  
service に対する設定方法と確認方法がわかりません。

具体的には、CentOS7 で以下の代替となるコマンドを教えていただきたいです。

[code]

    $ sudo chkconfig --level=2345 mysql on <- runlevel を設定
    $ chkconfig --list mysql <- 設定された runlevel を確認
    mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off
    
[/code]

### 調べたこと

CentOS7では、runlevel ではなく target という概念に変わっていることは  
なんとなくわかったのですが、  
service に対する設定方法と確認方法がわかりません。

以下コマンドが chconfig --list の代替とされていたのですが、  
target の確認ができません。また、target の変更方法もわかりませんでした。

[code]

    systemctl list-unit-files
    
[/code]


CC BY-SA 3.0
2016-05-19T04:27:34.337
24985
2016-05-19T08:28:44.523
15567
question
centos
CentOS7(Systemd) で service に target を設定する方法


### runlevel に対応する target の確認

`/lib/systemd/system/runlevel*.target` のリンク先を見ることで概ね理解できるかと思います。

[code]

    [centos@localhost ~]$ ls -l /lib/systemd/system/runlevel*.target
    lrwxrwxrwx. 1 root root 15 Feb 15 14:40 /lib/systemd/system/runlevel0.target -> poweroff.target
    lrwxrwxrwx. 1 root root 13 Feb 15 14:40 /lib/systemd/system/runlevel1.target -> rescue.target
    lrwxrwxrwx. 1 root root 17 Feb 15 14:40 /lib/systemd/system/runlevel2.target -> multi-user.target
    lrwxrwxrwx. 1 root root 17 Feb 15 14:40 /lib/systemd/system/runlevel3.target -> multi-user.target
    lrwxrwxrwx. 1 root root 17 Feb 15 14:40 /lib/systemd/system/runlevel4.target -> multi-user.target
    lrwxrwxrwx. 1 root root 16 Feb 15 14:40 /lib/systemd/system/runlevel5.target -> graphical.target
    lrwxrwxrwx. 1 root root 13 Feb 15 14:40 /lib/systemd/system/runlevel6.target -> reboot.target
    
[/code]

### runlevel(相当)設定変更

ユニット定義ファイル内`[Intall]`セクションの`WantedBy`ディレクティブに記述します。  
(以下`yum install mariadb-server`でインストールしたmariadbについて書きますので適宜読み替えてください。)

CentOSオフィシャルパッケージをインストールした場合、ユニット定義ファイルは `/usr/lib/systemd/system/` に置かれます。
ここにある `mariadb.service`ファイルを `/etc/systemd/system/` へコピーし、それを編集します。

デフォルトでは

[code]

    [Install]
    WantedBy=multi-user.target
    
[/code]

となっているので前節の情報と照らし合わせると`--level=2345`相当であることがわかります。  
これを、例えば`--level=5`相当に変更するのであれば、`multi-user.target`を`graphical.target`に書き換えます。

編集が終わったらサービスを有効化します。

[code]

    # systemctl enable mariadb.service
    
[/code]

### 設定確認

上記コマンド実行後、対応するディレクトリ `/etc/systemd/system/*.wants/`
にシンボリックリンクが置かれますので`ls`で確認できます。

[code]

    $ ls /etc/systemd/system/*.wants/
    (前略)
    /etc/systemd/system/graphical.target.wants/:
    mariadb.service
    (後略)
    
[/code]

正確な意味合いは異なる(WantedByだけが対象ではない)ようですが、ある特定のサービスについて調べたいのであれば`systemctl list-
dependencies --reverse`コマンド出力も役に立つかもしれません。

[code]

    $ systemctl list-dependencies --reverse mariadb.service
    mariadb.service
    ● └─graphical.target
    
[/code]

### 参考

  * [SysVinit to Systemd Cheatsheet - FedoraProject](https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet)
  * man page: systemd.special(7), systemd.directives(7), systemd.service(5), systemd.unit(5), systemctl(1)


CC BY-SA 3.0
2016-05-19T08:28:44.523
24993
2016-05-19T08:28:44.523
2808
24985
answer