Systemdは、デーモンの管理、プロセストラッキング、マウント、自動マウントの機能を提供するサービスマネージャーです。 Linuxコントロールグループを使用してタスクを管理します。古いinitdに置き換わるもので、Debian、Fedora、RedHat、ubuntu、centos、archLinuxディストリビューションで利用できます。
この記事では、systemdを使用してサービスを作成する方法を紹介します。 Linuxシステムのディスク使用率を見つけるプロセスのように機能する手動スクリプトを作成します。
始めましょう。ファイル内の日付とディスク使用率をリダイレクトするbashスクリプトを作成します。任意の場所にファイルを作成できます。ここでは、実行可能ディレクトリ/ usr / bin
に作成します。$ sudo vim /usr/bin/script.sh
次のスクリプトをコピーして貼り付け、ファイルを保存します。
#!/bin/bash # Script generates disk utilization by the system and store in a file while true do date >> /var/storage-monitor.txt sudo du -sch / >> /var/storage-monitor.txt sleep 120 done
次のコマンドを実行して、ファイルを実行可能にします。
$ chmod +x /usr/bin/script.sh
それでは、スクリプトを実行するためのサービスを作成しましょう。次のディレクトリにファイルを作成するだけです。任意の名前を付けることができますが、末尾が.serviceである必要があることに注意してください。
$ vim /etc/systemd/system/monitor-disk.service
そして、以下を追加します、
[Unit] Description=My disk monitoring service Documentation=https://www.kernel.org/ #After=networking.service [Service] Type=simple User=root Group=root TimeoutStartSec=0 Restart=on-failure RestartSec=30s #ExecStartPre= ExecStart=/usr/bin/script.sh SyslogIdentifier=Diskutilization #ExecStop= [Install] WantedBy=multi-user.target
説明
- [ユニット]セクションは、説明、ドキュメントの詳細で構成されています。ここで、作成するサービスを最初に実行する必要があることを示す「After」について説明しました。
- [サービス]セクションでは、サービスタイプ、ユーザー名、グループ、失敗した場合の対処方法、再起動タイムアウトを定義します。メインは「ExecStart」で、スクリプトファイルを開始するように指示します。 「ExecStartPre」を定義して、実際のスクリプトファイルの前に何かを定義することもできます。 「syslogIdentifier」は、syslogでサービスを識別するためのキーワードです。同様に、ExecStopは、サービスを停止するために何をすべきかを指示する命令です。
- [インストール]セクションは、システム内のさまざまなレベルのターゲットを定義するために使用されます。
ファイルを保存し、systemctlコマンドを使用してサービスを開始するだけです。
$ systemctl start monitor-disk.service
systemctlstatusコマンドを使用してサービスステータスを確認します。また、サービス名、systemdサービスがロードされるファイル形式、ドキュメント、実行中のプロセス、ログも表示されます。
$ systemctl status monitor-disk.service
スクリプトファイルで定義されているファイルを調べて、スクリプトが正しく機能していることを確認します。
$ cat /var/storage-monitor.txt
systemdマネージャーの有効化機能と無効化機能を確認することもできます。
$ systemctl enable monitor-disk.service
$ systemctl disable monitor-disk.service
また、サービスを停止して再起動して確認してください。エラーはスローされません。
$ systemctl stop monitor-disk.service
$ systemctl restart monitor-disk.service
Systemdは、syslogでのデフォルトのロギングも有効にします。したがって、次のコマンドを使用して、サービスのライブログを表示できます。キーワード「SyslogIdentifier=Diskutilization」を検索
上記のサービスファイルで拒否しました。
$ tail -f /var/log/syslog
結論
この記事では、独自のシェルスクリプトをsystemdサービスとして実行する方法を説明します。あなたがあなた自身のサービスを作る方法を学んだことを願っています。フィードバックをお気軽に送信してください。