質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

3回答

1157閲覧

linuxのservice登録時に利用する$optionsという変数は、どこから持って来た内容を展開しますか?

nuridayo

総合スコア14

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

1クリップ

投稿2019/07/17 02:19

linuxのservice登録時に利用する$optionsという変数は、どこから持って来た内容を展開しますか?

<環境> CentOS7.2
今linux環境で、BINDのインストールを行ってます。
だいたいの設定が終わり、次にSysemCtlコマンドからBINDサービスのリロード等ができるよう
Serviceファイルの作成を行っているのですが、参考にしているWEBページでは、次のような1文がありました。

ExecStart=/usr/local/sbin/named -u named $OPTIONS

この中の$OPTIONSは環境変数のように思えますが、いったどこから取得してきた値を
展開しているのかわかりません。このキーワードで検索した結果、BINDに限らず
HTTPD等、他のサービス登録時にも利用されていました。

$OPTIONSはどこの値なのかご存じの方、すみませんが教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazto

2019/07/17 04:33

参考にしているwebページのURLを追記お願いします。スクリプトの全容がわからないと、$OPTIONSという変数がどこで定義されているのか(あるいは、定義されていないのか)がどなたも判断できません。
guest

回答3

0

なるほど。状況が理解できました。

systemctl の serviceスクリプトは、単純なBashスクリプトではありません。
ですので、echo などを記述しても端末上に表示されたりはしません。

それでは、$OPTIONS がどこから来ているか、ですが、下記の記事が参考になるかと思います。

https://wiki.archlinux.jp/index.php/Systemd/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC#.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0

結論を申しますと、本来は /etd/defaults/named あたりにOPTIONS変数を定義することで、オプションを与えることができる、という仕組みですが、Qiitaの記事に不備があります。

より詳細には、以下の流れになります。

まず、systemctl の service スクリプトでは、Environment= ないし EnvironmentFile=ディレクティブにより、環境変数を定義することが可能です。
一方、ご提示のQiitaに記載されているスクリプトには上記ディレクティブの記載がありません。
この点、おそらくはQiitaの記事の手落ちと思われます。

本来は、

EnvironmentFile=/etc/defaults/named

のような一行があり、指定のファイル内に

OPTIONS="--some-useful-option --other-option"

と記載(上記のオプションは実際のnamedには存在しません)することで、サービス起動時に環境変数を渡すことができる仕組みとなっています。

投稿2019/07/17 05:23

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nuridayo

2019/07/23 03:00

参考に挙げたページまで確認してもらい、ありがとうございました。 また教えて頂いた内容により、自身でファイルを用意しそこを参照すればいい点についても理解できました。
guest

0

ベストアンサー

この中の$OPTIONSは環境変数のように思えますが、いったどこから取得してきた値を展開しているのかわかりません。

どこにも設定されていないので、参照したサイトのサンプルのミスだと思います。

このキーワードで検索した結果、BINDに限らずHTTPD等、他のサービス登録時にも利用されていました。

httpd.service を見ましたが、

EnvironmentFile=/etc/sysconfig/httpd

が指定されていますので、この場合、/etc/sysconfig/httpd の中で OPTIONS= を指定できます。
実際に /etc/sysconfig/httpd を見るとコメントで書かれています。

sh

1# To pass additional options (for instance, -D definitions) to the 2# httpd binary at startup, set OPTIONS here. 3# 4#OPTIONS=

サンプルでは、 EnvironmentFile= が指定されていないので、単なるミスだと思います。推測ですが、サンプルのもとになったサンプルには、

EnvironmentFile=/etc/sysconfig/named

があったのですが、そのファイルを作るのもめんどくさいので、その行を削除したのではないでしょうか。

投稿2019/07/17 05:49

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nuridayo

2019/07/23 03:05

参考に挙げたページまで確認してもらい、ありがとうございました。 教えて頂いた内容で、 自身でOption用のファイルを準備し、 サービス用のファイルからはそのファイルを参照する事で、 OPTION値を取得するという仕組みについて理解でき、すっきりしました。 ありがとうございます。
guest

0

echo $OPTIONS で みえませんか?

投稿2019/07/17 04:00

nanami12

総合スコア1015

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nuridayo

2019/07/17 04:37

やってみましたが、何も表示されません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問