GNU/Linux >> Linux の 問題 >  >> Ubuntu

LinuxでSystemdサービスとしてシェルスクリプトを実行する方法

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サービスとして実行する方法を説明します。あなたがあなた自身のサービスを作る方法を学んだことを願っています。フィードバックをお気軽に送信してください。


Ubuntu
  1. LinuxでSystemdサービスを作成する方法

  2. シェルスクリプトで一時ファイルを作成するにはどうすればよいですか?

  3. バックグラウンドでシェルスクリプトを実行する方法は?

  1. スクリプトを実行する方法??

  2. ファイルまたはディレクトリが変更されたときにシェルスクリプトを実行する方法は?

  3. 起動時にシェルスクリプトを実行する方法

  1. Linux – Fsckスクリプトの場所?

  2. systemd サービスの出力をファイルにリダイレクトする方法

  3. シェル スクリプトで Linux を使用してテンプレートを作成しますか?