内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
systemd
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
<markdown> # Systemd Linuxのシステム管理、起動処理を行う仕組み。SysVinitやupstartなどの起動処理の代替だけではなく、cronなどの処理も置き換えている。2018年現在のLinuxディストリビューションはほぼ全てSystemdを採用している ## コマンド サービス(旧来のデーモンに当たる常駐プロセス)の一覧 $ systemctl list-unit-files --type service 有効なサービスの一覧を見る $ systemctl list-unit --type service サービスの状態を確認 $ 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.txt
· 最終更新: 2023/03/16 18:01 by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ