SELinux
が有効になっているとWebUI
が動作しないのでSELinux
を無効にする必要があり付録
F SCIENTIFIC LINUX
インストール方法SELinux
が有効になっているかどうかはgetenforce
コマンドでわかります。% getenforce
有効の場合は
Enforcing
あるいはPermissive
と表示されます。無効の場合はDisabled
と表示さ れます。無効にするには
/etc/sysconfig/selinux
でSELINUX=
で始まる行を SELINUX=disabledと書き換えてリブートします。
パケットフィルターが有効な状態だと
DAQ-Middleware
で必要とするパケットの送信、受信が できない場合があります。トラブルを避けるにはパケットフィルターを停止させるのが単純でよい と思います。Scientific Linux 7.x
からはfirewalld
でパケットフィルターの設定をするようになり ました。現在パケットフィルターが有効になっているかどうかは以下のコマンドを実行して確認し ます。root# systemctl status firewalld
このコマンドの出力に以下のように
Active: active (running) since ...
の行が含まれてい ればパケットフィルターが有効になっています:
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Thu 2015-02-26 08:04:36 JST; 23s ago Main PID: 584 (firewalld)
CGroup: /system.slice/firewalld.service
584 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Feb 26 08:04:28 hostname.kek.jp systemd[1]: Starting firewalld - dynamic fir....
Feb 26 08:04:36 hostname.kek.jp systemd[1]: Started firewalld - dynamic fire....
Hint: Some lines were ellipsized, use -l to show in full.
すぐに停止するには以下のコマンドを実行します。
root# systemctl stop firewalld
再起動後も無効にするには
root# systemctl disable firewalld
と入力します。
付録
G
コマンドラインからDAQ
オペレータに指示を出す付録 G コマンドラインから DAQ オペレータに指示を出す
http
を使ってDAQ
オペレータに指示を出すツールとしてウェブブラウザ以外にPython
を使っ たコマンドラインツールを用意しました。/usr/bin/daqcom
が実行ファイルです。単にdaqcom
と実行するとヘルプメッセージがでます。SL 5.x
ではdaq% daqcom http://localhost/daqmw/operatorPanel/ -g state
とすると状態が取得できます。
SL 6.x
ではURL
が変更になって daq% daqcom http://localhost/daqmw/scripts/ -g stateになりました。くわしくは参考文献
[4]
を御覧ください。付録
H INPORT
リングバッファのパラメータの設定付録 H InPort リングバッファのパラメータの設定
DAQ-Middleware 1.3.0
からInPort
のリングバッファのパラメータ値を設定できるようにな りました。設定は設定ファイル(
config.xml)
を使って行います。設定例を下記に示します。設定 ファイルで指定しない場合はデフォルト値が適用されます。設定可能なパラメータ、値、デフォル ト値は以下のとおりです。<inPorts>
<inPort from="SampleReader0:samplereader_out"
buffer_length="4096"
buffer_read_timeout="0.010"
buffer_write_timeout=0.010">samplemonitor_in</inPort>
</inPorts>
buffer_length (単位: 個、デフォルト値256)
InPort
リングバッファ長を指定します。単位はバッファ数(
個)
です。デフォルトは256
個 です(1.2.2
およびそれ以前は128
個の固定値でした)
。たとえばハードディスクのように 大抵は、すばやく書けるがときどき書きだしに時間がかかる(
たとえば0.1
秒以上かかる)
場合に、書きだしに時間がかかっている間に到着したデータをバッファリングする目的でbuffer_lengthの値を大きくしてデータ収集速度を確保するためにこのパラメータを使いま
す。
(
註)InPort
リングバッファ中のバッファは、上流から送られてきたデータ長にあわせて動的に確保されます。
buffer_read_timeout (単位: 秒、デフォルト値 0.005)
buffer_read_empty_policyがblockの場合
(
blockがデフォルトです)
のリードの最大待ち 時間を指定します。単位は秒です。デフォルト値は0.005 (5
ミリ秒)
です(1.2.2
およびそれ 以前は0.1
秒(100
ミリ秒)
の固定値でした)
。buffer_read_empty_policyについては下記を ごらんください。buffer_write_timeout (単位: 秒、デフォルト値 0.005)
buffer_write_full_policyがblockの場合
(
blockがデフォルトです)
のライトの最大待ち 時間を指定します。単位は秒です。デフォルト値は0.005 (5
ミリ秒)
です(1.2.2
およびそれ 以前は0.1
秒(100
ミリ秒)
の固定値でした)
。buffer_write_full_policyについては下記を ごらんください。buffer_read_empty_policy (デフォルト値: block)
InPort
のリングバッファが空のときのInPort.read()の動作を設定します。指定できる値 はblock、および do_nothingです。デフォルト値は blockです(1.2.2
およびそれ以前はblockで動作しており、指定はできませんでした
)
。通常はblockを指定しておくことを推奨します。
付録
H INPORT
リングバッファのパラメータの設定blockを指定するとリングバッファが空のとき、最大buffer_read_timeoutで指定した秒
数までデータがくるのを待ちます。待っている間にデータがきた場合はInPort.read()は きたデータをすぐに読みます最大時間待ってもデータがこなかった場合、InPort.read()は
falseを返します。この場合、エラーかどうかの判定はcheck_inPort_status() メソッドで
行います。エラーの場合はcheck_inPort_status()はBUF_FATALを返し、単にデータがこな くて読めなかった場合はBUF_TIMEOUTを返します。
do_nothingを指定するとノンブロッキングリードの動作になります。これを指定した場
合は
InPort
のリングバッファが空の場合InPort.read()は、すぐにfalseで返ります。エ ラーかどうかの判定にはcheck_inPort_status()を使います。リングバッファにデータがな く読めなかった場合はcheck_inPort_status() はBUF_NODATAを返します。エラーの場合はBUF_FATALを返します。do_nothingを指定すると、
InPort
リングバッファが空の状態が続くときに連続してリードするようにプログラムを作ると
CPU
を著しく消費し、結果として データ収集速度が劣化することがあるので注意が必要です。buffer_write_full_policy (デフォルト値: block)
InPort
のリングバッファがフルのときのOutPort.write()の動作を設定します。指定でき る値はblock、およびdo_nothingです。デフォルト値はblockです(1.2.2
およびそれ以前はblockで動作しており、指定はできませんでした
)
。通常はblockを指定しておくことを推奨します。
block を 指 定 し た 場 合 、下 流 側
InPort
リ ン グ バ ッ フ ァ が フ ル の と き 、最 大 buffer_write_timeout で 指 定 し た 秒 数 ま で 空 き が で き る の を 待 ち ま す 。待 っ て い る 間に空きができた場合はOutPort.write()はすぐに書きます。最大時間待ってもデータを書 けなかった場合、OutPort.write()はfalseを返します。この場合、エラーかどうかの判定 はcheck_outPort_status()メソッドで行います。エラーの場合はcheck_outPort_status()はBUF_FATALを返し、バッファがフルで書けなかった場合はBUF_TIMEOUTを返します。
do_nothingを指定するとノンブロッキングライトの動作になります。これを指定した場
合は、下流側