ユーザ用ツール

サイト用ツール


systemd

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
systemd [2019/11/19 05:46] nullponsystemd [2023/03/16 18:01] (現在) nullpon
行 9: 行 9:
  
     $ systemctl list-unit-files --type service     $ systemctl list-unit-files --type service
 +    
 +有効なサービスの一覧を見る
 +
 +    $ systemctl list-unit --type service
          
 サービスの状態を確認 サービスの状態を確認
行 18: 行 22:
     $ systemctl start nginx.service     $ systemctl start nginx.service
     $ systemctl stop nginx.service     $ systemctl stop nginx.service
 +
 +自動起動を有効化する(普通は有効化されているが何らかの原因でdisabledになってしまった場合の修正)
 +
 +    $ systemctl enable nginx.service
          
 一部のサービスにはreload(再起動せずconfigファイルの読み直し)もある。いい感じのbashでは補完機能でreload可能なサービスのみリストアップされる、ただし少し重い。 一部のサービスにはreload(再起動せずconfigファイルの読み直し)もある。いい感じのbashでは補完機能でreload可能なサービスのみリストアップされる、ただし少し重い。
行 24: 行 32:
          
          
 +## 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-timesyncd
  
行 33: 行 59:
  
     $ sudo timedatectl set-timezone Asia/Tokyo     $ 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サーバの指定などは以下のファイルにある NTPサーバの指定などは以下のファイルにある
  
     $ less /etc/systemd/timesyncd.conf     $ 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> </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.1574142381.txt.gz · 最終更新: 2019/11/19 05:46 by nullpon