Erlang-一般的な特殊ファイル
4916 ワード
$HOME/.erlang
ファイル
$HOME/.erlang
が存在し、合法的なerlang文である場合、erlang仮想マシンが起動するとデフォルトで文が実行されます.実行文はc:erlangc().
を参照します.これは、開いている間にconsoleやファイルにデフォルトでいくつかの内容を入力するなど、自分の仮想マシンの動作をカスタマイズするのに大きな用途があります.さらに、クッキーなどの起動パラメータを開いたときに上書きすることもできます.例は以下の通りです(もちろん、このような起動パラメータを修正する習慣は良い習慣ではありません).% .erlang
alking-mbp:~ dev$ erl -sname abc -setcookie cookie
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
Eshell V10.2 (abort with ^G)
(abc@alking-mbp)1> auth:cookie().
cookie
(abc@alking-mbp)2>
% .erlang
alking-mbp:~ dev$ cat .erlang
io:format("hello,alking.~n",[]).% console
auth:cookie("adcaca").%
alking-mbp:~ dev$ erl -sname abc -setcookie cookie
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
hello,alking.
Eshell V10.2 (abort with ^G)
(abc@alking-mbp)1> auth:cookie().
"adcaca"
$HOME/.erlang.cookie
ファイル
$HOME/.erlang.cookie
の用途は、仮想マシン起動パラメータ-setcookie
に相当し、ファイルに文字列を保存し、起動時に起動パラメータ-setcookie
がなければ、そのノードのcookie
がファイルの内容であり、このファイルのファイルモード(mod)は400である必要があり、auth:read_cookie().
参照このファイルの利点は、自分のマシンが黒くならない限り、ソースコードが自分のクッキーを露出しないことです.起動パラメータ
-setcookie
がファイルクッキーの内容を上書きする方法を説明します.alking-mbp:~ dev$ cat .erlang.cookie
NKEFXULSNLVBRFDHWYFC
% cookie
erl -sname abc -setcookie cookie
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
Eshell V10.2 (abort with ^G)
(abc@alking-mbp)1> auth:cookie().
cookie
$HOME/.erlang.crypt
ファイル
$HOME/.erlang.crypt
が存在する場合、erlファイルをbeamファイルにコンパイルするとデフォルトでコード暗号化されます.javaに詳しい学生はコード混同について知っているかもしれません.この暗号化には似たような機能があります.beam_lib:crypto_key_fun_from_file().
を参照してください.皆さんはテスト環境でコードをコンパイルする時、よくdebugを持っています.infoパラメータは、通常rebarに配置する.config内では、テストやオンラインデバッグが便利ですが、このオプションで生成されたbeamファイルは、他の人に入手されると、ソースコードに逆コンパイルされやすくなります.次に、説明します.
% erlang_bullet_sup.erl
alking-mbp:src dev$ cat erlang_bullet_sup.erl
-module(erlang_bullet_sup).
-behaviour(supervisor).
-export([start_link/0]).
-export([init/1]).
-define(SERVER, ?MODULE).
start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []).
init([]) -> {ok, {{one_for_all, 0, 1}, []}}.
% beam
alking-mbp:src dev$ erlc +debug_info erlang_bullet_sup.erl
alking-mbp:src dev$ erl
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
Eshell V10.2 (abort with ^G)
1> {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks("erlang_bullet_sup.beam",[abstract_code]).
{ok,{erlang_bullet_sup,[{abstract_code,{raw_abstract_v1,[{attribute,1,
file,
{"erlang_bullet_sup.erl",1}},
......
......
2> io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(AC))]).
%
-file("erlang_bullet_sup.erl", 1).
......
%
alking-mbp:src dev$ cat ~/.erlang.crypt
[{debug_info, des3_cbc, [], "secret"}].
erlc +encrypt_debug_info erlang_bullet_sup.erl
% crypt ,
alking-mbp:src dev$ mv ~/.erlang.crypt ~/.erlang.crypt.bak
alking-mbp:src dev$ erl
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
Eshell V10.2 (abort with ^G)
1> {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks("erlang_bullet_sup.beam",[abstract_code]).
** exception error: no match of right hand side value {error,beam_lib,
{key_missing_or_invalid,"erlang_bullet_sup.beam",
abstract_code}}
% .erlang.crypt
mv ~/.erlang.crypt.bak ~/.erlang.crypt
alking-mbp:src dev$ erl
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]
Eshell V10.2 (abort with ^G)
1> {ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks("erlang_bullet_sup.beam",[abstract_code]).
{ok,{erlang_bullet_sup,[{abstract_code,{raw_abstract_v1,[{attribute,1,
file
......
$HOME/.hosts.erlang or $OTP_ROOT/.hosts.erlang
ファイル
.hosts.erlang
の各ローは、次のようにホスト名です.'super.eua.ericsson.se'.
'renat.eua.ericsson.se'.
'grouse.eua.ericsson.se'.
'gauffin1.eua.ericsson.se'.
...
net_adm:world().
が実行されると、これらのホストと自動的にオンになります.詳細はnet_adm:world(). net_adm:host_file().
参照まとめ
開発された日常生活では、いくつかの特性を利用して柔軟かつ効率的に機能を実現することができます.