ユーザ用ツール

サイト用ツール


systemd

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
systemd [2018/03/22 18:02] – 作成 nullponsystemd [2023/03/16 18:01] (現在) nullpon
行 1: 行 1:
-====== Systemd ======+<markdown> 
 +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 +
-</code>+
  
-のような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は名前解決用のサーバを立ち上げている。/etc/resolv.confを見ると 
 + 
 +``` 
 +nameserver 127.0.0.53 
 +options edns0 trust-ad 
 +search localdomain 
 +``` 
 + 
 +のようっている。systemdで管理されているLinuxサーバ上で各アリケーションは127.0.0.53をネーサーバとして利用できる。 
 + 
 +実際に使用される外部ネームサーバは`/run/systemd/resolve/resolv.conf`に書かれている。これ変更したい場合はこのファイルには触らず、[netplan](/netplan)を経由して行うとよい 
 + 
 +## systemd-timesyncd 
 + 
 +時刻合わせもsystemdの管理下になり、従来のntpからsystemd-timesyncdに変わっている 
 + 
 +    $ systemctl status systemd-timesyncd 
 + 
 +なお、時刻やタイムゾーンの設定はtimedatectlというコマンドで行う 
 + 
 +    $ sudo timedatectl set-timezone Asia/Tokyo 
 +     
 +現在のTimeZone設定もtimedatectlで確認できる 
 + 
 +``` 
 +$ timedatectl 
 +               Local time: 土 2023-01-28 01:44:40 JST 
 +           Universal time: 金 2023-01-27 16:44:40 UTC 
 +                 RTC time: 金 2023-01-27 16:44:40 
 +                Time zone: Asia/Tokyo (JST, +0900) 
 +System clock synchronized: yes 
 +              NTP service: active 
 +          RTC in local TZ: no 
 +``` 
 + 
 +NTPサーバの指定などは以下のファイルにある 
 + 
 +    $ less /etc/systemd/timesyncd.conf 
 +     
 +すぐに時刻合わせをしたい場合はrestartすると良い 
 + 
 +    $ sudo systemctl restart systemd-timesyncd 
 +     
 +## timer 
 + 
 +定期実行ジョブを作成できる。cronのようなもの 
 + 
 +設定されているタイマーを確認 
 + 
 +``` 
 +systemctl list-timers 
 +``` 
 + 
 +### timerを自作する 
 + 
 +例)mysqlバックアップジョブを作る 
 + 
 +/etc/systemd/system/backup-mysql.serviceを作成。バックアップクリプトを起動するジョブを定義 
 + 
 +``` 
 +[Unit] 
 +Description=backup mysql 
 +Wants=mysql.service 
 + 
 +[Service] 
 +Type=oneshot 
 +ExecStart=/opt/backup/backup-mysql.sh 
 + 
 +[Install] 
 +WantedBy=multi-user.target 
 +``` 
 + 
 +これを有効にする 
 + 
 +``` 
 +sudo systemctl enable backup-mysql.service 
 +``` 
 + 
 +/etc/systemd/system/backup-mysql.timerを作成。先に作ったserviceをいつ起動するか定義する。時刻はlocal timeが適用される。ファイル名をservice同じ名前にしておくと、どのサービスを起動するかの指定(Unit)が不要になるよう 
 + 
 +``` 
 +[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 
 +``` 
 + 
 +ックアップスクリプトはいい感じに作る 
 + 
 +</markdown> 
 + 
 +<file bash /opt/backup/backup-mysql.sh> 
 +#!/bin/bash -e 
 + 
 +cd /opt/backup/data 
 + 
 +mysqldump --defaults-extra-file=/opt/backup/backup-mysql.extra --opt --single-transaction --databases hoge > mysql_hoge_buckup.sql 
 + 
 +gzip mysql_hoge_buckup.sql 
 + 
 +mv mysql_hoge_buckup.sql.gz "mysql_hoge_buckup.$(date +%Y%m%d).sql.gz" 
 + 
 +find . -name "*.sql.gz" -mtime +7 -print0 | xargs --no-run-if-empty -0 rm 
 +</file> 
 + 
 +単にバックアップ目的なら cron.daily に記のスクリプトを設置す方が楽
  
-Systemdは従来のfork型のサーバアプリケーションも扱える。 
systemd.1521741737.txt.gz · 最終更新: 2018/03/22 18:02 by nullpon