systemd
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
systemd [2018/03/22 18:02] – 作成 nullpon | systemd [2023/03/16 18:01] (現在) – nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | < |
+ | # Systemd | ||
- | SysVinitやupstartに代わるLinuxの起動処理の仕組み。2018年現在のLinuxディストリビューションはほぼ全てSystemdを採用している | + | Linuxのシステム管理、起動処理を行う仕組み。SysVinitやupstartなどの起動処理の代替だけではなく、cronなどの処理も置き換えている。2018年現在のLinuxディストリビューションはほぼ全てSystemdを採用している |
- | ===== デーモン化 ===== | + | ## コマンド |
- | systemdは通常のフォアグラウンドプロセスをデーモン化できる。daemontoolsやsupervisord相当の機能がOS標準になったと考えても良い。このためsystemd対応のデーモンを自作するのは非常に簡単でforkによるdaemonize処理を書く必要はない。 | + | サービス(旧来のデーモンに当たる常駐プロセス)の一覧 |
- | すなわち | + | $ systemctl list-unit-files --type service |
+ | |||
+ | 有効なサービスの一覧を見る | ||
- | <code ruby> | + | $ systemctl list-unit --type service |
- | while a = gets | + | |
- | puts a | + | サービスの状態を確認 |
- | end | + | |
- | </ | + | |
- | このようなRubyプログラムをsystemdのサービスとして起動するだけでechoサーバが出来上がる | + | $ systemctl status nginx.service |
+ | |||
+ | サービスの起動と停止 | ||
+ | |||
+ | $ systemctl start nginx.service | ||
+ | $ systemctl stop nginx.service | ||
+ | |||
+ | 自動起動を有効化する(普通は有効化されているが何らかの原因でdisabledになってしまった場合の修正) | ||
+ | |||
+ | $ systemctl enable nginx.service | ||
+ | |||
+ | 一部のサービスにはreload(再起動せずconfigファイルの読み直し)もある。いい感じのbashでは補完機能でreload可能なサービスのみリストアップされる、ただし少し重い。 | ||
+ | |||
+ | $ systemctl reload nginx.service | ||
+ | |||
+ | |||
+ | ## systemd-resolved | ||
+ | |||
+ | systemdで提供されるDNSクライアント。詳細は以下のコマンドで確認できる | ||
+ | |||
+ | $ systemd-resolve --status | ||
+ | |||
+ | systemd-resolvedは名前解決用のサーバを立ち上げている。/ | ||
+ | |||
+ | ``` | ||
+ | nameserver 127.0.0.53 | ||
+ | options edns0 trust-ad | ||
+ | search localdomain | ||
+ | ``` | ||
+ | |||
+ | のようになっている。systemdで管理されているLinuxサーバ上で各アプリケーションは127.0.0.53をネームサーバとして利用できる。 | ||
+ | |||
+ | 実際に使用される外部ネームサーバは`/ | ||
+ | |||
+ | ## systemd-timesyncd | ||
+ | |||
+ | 時刻合わせもsystemdの管理下になり、従来のntpからsystemd-timesyncdに変わっている | ||
+ | |||
+ | $ systemctl status systemd-timesyncd | ||
+ | |||
+ | なお、時刻やタイムゾーンの設定はtimedatectlというコマンドで行う | ||
+ | |||
+ | $ sudo timedatectl set-timezone Asia/ | ||
+ | |||
+ | 現在のTimeZone設定もtimedatectlで確認できる | ||
+ | |||
+ | ``` | ||
+ | $ timedatectl | ||
+ | Local time: 土 2023-01-28 01:44:40 JST | ||
+ | | ||
+ | RTC time: 金 2023-01-27 16:44:40 | ||
+ | Time zone: Asia/Tokyo (JST, +0900) | ||
+ | System clock synchronized: | ||
+ | NTP service: active | ||
+ | RTC in local TZ: no | ||
+ | ``` | ||
+ | |||
+ | NTPサーバの指定などは以下のファイルにある | ||
+ | |||
+ | $ less / | ||
+ | |||
+ | すぐに時刻合わせをしたい場合はrestartすると良い | ||
+ | |||
+ | $ sudo systemctl restart systemd-timesyncd | ||
+ | |||
+ | ## timer | ||
+ | |||
+ | 定期実行ジョブを作成できる。cronのようなもの | ||
+ | |||
+ | 設定されているタイマーを確認 | ||
+ | |||
+ | ``` | ||
+ | systemctl list-timers | ||
+ | ``` | ||
+ | |||
+ | ### timerを自作する | ||
+ | |||
+ | 例)mysqlバックアップジョブを作る | ||
+ | |||
+ | / | ||
+ | |||
+ | ``` | ||
+ | [Unit] | ||
+ | Description=backup mysql | ||
+ | Wants=mysql.service | ||
+ | |||
+ | [Service] | ||
+ | Type=oneshot | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | ``` | ||
+ | |||
+ | これを有効にする | ||
+ | |||
+ | ``` | ||
+ | sudo systemctl enable backup-mysql.service | ||
+ | ``` | ||
+ | |||
+ | / | ||
+ | |||
+ | ``` | ||
+ | [Unit] | ||
+ | Description=backup mysql timer | ||
+ | |||
+ | [Timer] | ||
+ | OnCalendar=*-*-* 03:00:00 | ||
+ | Persistent=true | ||
+ | Unit=backup-mysql.service | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=timers.target | ||
+ | ``` | ||
+ | |||
+ | これを有効にして、タイマーを開始する | ||
+ | |||
+ | ``` | ||
+ | sudo systemctl enable backup-mysql.timer | ||
+ | sudo systemctl start backup-mysql.timer | ||
+ | ``` | ||
+ | |||
+ | バックアップスクリプトはいい感じに作る | ||
+ | |||
+ | </ | ||
+ | |||
+ | <file bash / | ||
+ | #!/bin/bash -e | ||
+ | |||
+ | cd / | ||
+ | |||
+ | mysqldump --defaults-extra-file=/ | ||
+ | |||
+ | gzip mysql_hoge_buckup.sql | ||
+ | |||
+ | mv mysql_hoge_buckup.sql.gz " | ||
+ | |||
+ | find . -name " | ||
+ | </ | ||
+ | |||
+ | 単にバックアップ目的なら cron.daily に上記のスクリプトを設置する方が楽 | ||
- | Systemdは従来のfork型のサーバアプリケーションも扱える。 |
systemd.1521741737.txt.gz · 最終更新: 2018/03/22 18:02 by nullpon