ファイル名に基づいてファイルコンテンツを作成できますか?
.conf
内容がファイル名にのみ依存する同様のファイルがたくさん必要です。
「動的」ファイルを作成してそれを指すシンボリックリンクを作成できますか?
多分fifoは解決策かもしれませんが、ビルドスクリプトからファイル名を取得できません。
zsh$ mkfifo ./dynamic.conf
zsh$ ln -s ./dynamic.conf ./case1.conf
zsh$ echo $0 > ./dynamic.conf &
zsh$ cat ./case1.conf
私はzsh
(が必要ですcase1.conf
)を持っています。
ベストアンサー1
全く異なるアプローチ私が知っているのは、最後の答えが目を転がすようにするということだけだから。
inotify
このチュートリアルでは、これは実際にはLinuxにのみ適用されることを意味します。問題は完全に解決されます。個々の設定ファイルはまだ存在しますが、自動的に再生成されます。毎回マスターを変える。
master.conf
すべてのセクション、サブセクションなどを含む「デフォルト」プロファイルがあります。inotify
スクリプトが変更されたら、そのファイルをすべて書き換えるようにスクリプトを設定します。 (競合状態を避けるために、ファイルをサブディレクトリに保存し、ディレクトリを置き換えて「コミット」を実行するなど、いくつかの追加トリックを実行できます。)
~からhttps://stackoverflow.com/q/5316178/3849157デフォルトのPerlスクリプトを取得します。
my $inotify = Linux::Inotify2->new;
$inotify->watch("/etc/master.conf", IN_MODIFY);
while () {
my @events = $inotify->read;
unless (@events > 0){
print "read error: $!";
last ;
}
foreach my $event (@events) {
next unless $event->IN_MODIFY;
# 1. TODO: RE-READ IN THE CONFIG FILE
# (example)
$config_hash = &parse_master_file;
# 2. TODO: RE-GENERATE YOUR CONFIG FILES
# (example)
for $section qw( section1 section2 misc ) {
open(S,"> /etc/${section}.conf")
print S &dump_config($config_hash,$section)
close(S)
}
}
}
実行はあなた次第parse_master_file
です。dump_config
また、メインループでスリープを呼び出す必要があるかもしれません。それ以外の場合は、CPUに点灯します。