トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

systemd の使い方

Systemdについて

systemd はLinuxにおけるinitデーモンの代替であり、CentOS7から導入された。

使い方

http://blog.yuryu.jp/2014/07/systemd-quick-guide.html
操作 SysV Init Systemd
起動 /etc/init.d/sshd start systemctl start sshd
終了 /etc/init.d/sshd stop systemctl stop sshd
状態確認 /etc/init.d/sshd status systemctl status sshd
強制終了 PID探してkill -9 systemctl kill -s 9 sshd
再起動 /etc/init.d/sshd restart systemctl restart sshd
設定反映 /etc/init.d/sshd reload systemctl reload sshd
状態取得 /etc/init.d/sshd status systemctl status sshd
自動起動を有効 chkconfig sshd on systemctl enable sshd
自動起動を無効 chkconfig sshd off systemctl disable sshd
自動起動の状態確認 chkconfig --list sshd systemctl is-enabled sshd(status でも表示される)
自動起動の状態確認2 chkconfig --list systemctl list-unit-files
サービス一覧の表示 ls /etc/init.d systemctl --type service

 ページャ

systemctl の出力結果がページャに渡されるを防ぐには

 systemctl --no-pager

のように、--no-pager オプションを使う

 ランレベルについて

Systemd ではランレベルに似たものとしてターゲットを使っています。
基本的に各サービスのランレベルを変える必要はないはず・・・。
SysV ランレベル systemd ターゲット 説明
0 runlevel0.target, poweroff.target システムを停止。
1, s, single runlevel1.target, rescue.target シングルユーザーモード。
2, 4 runlevel2.target, runlevel4.target, multi-user.target ユーザー定義・サイト指定ランレベル。デフォルトでは、3 と同一。
3 runlevel3.target, multi-user.target マルチユーザー、非グラフィカル。一般的にマルチコンソールやネットワークを介してログインするのに使われます。
5 runlevel5.target, graphical.target マルチユーザー、グラフィカル。通常、ランレベル 3 の全てのサービスにグラフィカルログインを付加。
6 runlevel6.target, reboot.target 再起動
emergency emergency.target 緊急シェル

各サービスのランレベルを変更する

各ターゲット内にサービスへのシンボリックリングを作成したり消したりする・・・でいいのかな?
ただ、各ターゲット間で依存関係があったりするので注意。


OSの起動時のターゲット(ランレベル)を変更する

systemctl set-default multi-user.target

 依存関係の一覧

http://d.hatena.ne.jp/enakai00/20130914/1379146157

systemctl list-dependencies

unitの一覧

systemctl list-unit-files

稼働しているserviceの一覧

systemctl list-units

設定ファイルのディレクトリ

http://d.hatena.ne.jp/enakai00/20130914/1379146157

ディレクトリ 説明
/usr/lib/systemd/system システムデフォルトの設定。RPMパッケージが提供するデフォルト設定を配置する。
/etc/systemd/system ユーザ設定。ここに同名のファイルを配置するとこちらのファイルの内容が優先される。

 Unitの種類

Unitのタイプ 説明
mount 指定のファイルシステムをマウントする
automount オートマウント処理を実施する(automountdの代替的な機能)
service 指定のバイナリを実行する(主にはデーモンの起動に使用する)
socket systemdがSocketをListenして、接続があるとプロセスに受け渡す(xinetdの代替的な機能)
path 指定のファイルが作成されると、指定されたサービスを起動する
device udevから通知されたデバイスを表す
target 複数のUnitをまとめるために使用する

任意のシェルスクリプトを serviceとして実行する

https://wiki.archlinux.org/index.php/Systemd_FAQ_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29#.E3.83.96.E3.83.BC.E3.83.88.E3.83.97.E3.83.AD.E3.82.BB.E3.82.B9.E3.81.AE.E9.96.93.E3.81.AB.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.82.92.E8.B5.B7.E5.8B.95.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.99.E3.82.8C.E3.81.B0.E3.81.84.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F
http://qiita.com/masami256/items/ef0f23125cf8255e4857

 サンプル1

シェルを実行するだけのサンプル。
デーモンとしてではく、一回処理するだけならサンプル2のように

RemainAfterExit=yes

を設定したほうがいいかもしれない。

任意のシェルスクリプトを準備する

vi /etc/systemd/system/myscript.service

[Unit]
Description=My script

[Service]
ExecStart=/usr/bin/my-script

[Install]
WantedBy=multi-user.target 

実行権限を付加

他のserivceファイルと同じように

chmod 755 myscript.service


サービスを有効にする

systemctl enable myscript.service

 サンプル2

[Unit]
Description=Load dump capture kernel
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/opt/bin/run-kexec.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

サンプル1との大きな違いは、

Type=oneshot
RemainAfterExit=yes

の2行。


デーモンではなく、一度だけのシェル実行等の場合は

Type=oneshot

とする。また、

RemainAfterExit=yes
を設定することで systemd はプロセスが終了した後もサービスがアクティブだとみなします。 

 サンプル3(dice)

http://blogs.yahoo.co.jp/oguri0821/63640997.html
https://ospry.wordpress.com/2013/12/09/fedora20-ddns-with-ieserver-dice/

vi /usr/lib/systemd/system/dice.service

[Unit]
Description=The ddojp
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=notify
EnvironmentFile=/usr/local/src/DiCE/diced
ExecStart=/usr/local/src/DiCE/diced -d -l
ExecReload=/usr/local/src/DiCE/diced $OPTIONS
ExecStop=/usr/local/src/DiCE/diced $OPTIONS
RemainAfterExit=yes
PrivateTmp=true

[Install]
WantedBy=runlevel3.target


任意のプログラムをデーモンとして実行する

 サンプル1

http://hakaikosen.hateblo.jp/entry/2014/07/15/215546

[Unit]
Description=hoge server daemon
After=syslog.target network.target

[Service]
ExecStart=hoge オプション(実行したいプログラムを実行)
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

プログラムの終了は強制的にkillしているので注意

[カテゴリ: OS > Linux]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2016年05月08日 17時25分26秒