首頁 > 新聞 > 專家觀點(diǎn) >

《FreeSWITCH: VoIP實(shí)戰(zhàn)》: 運(yùn)行 FreeSWITCH

2012-08-15 13:55:53   作者:杜金房   來源:FreeSWITCH    評論:0  點(diǎn)擊:


  命令行參數(shù)

  一般來說,F(xiàn)reeSWITCH 不需要任何命令行參數(shù)就可以啟動,但在某些情況下,你需要以一些特殊的參數(shù)啟動。在此,僅作簡單介紹。如果你知道是什么意思,那么你就可以使用,如果不知道,多半你用不到。

使用 freeswitch -help 或 freeswitch --help 會顯示以下信息:

-nf                    -- no forking
-u [user]              -- 啟動后以非 root 用戶 user 身份運(yùn)行
-g [group]             -- 啟動后以非 root 組 group 身份運(yùn)行
-help                  -- 顯示本幫助信息
-version               -- 顯示版本信息
-waste                 -- 允許浪費(fèi)內(nèi)存,F(xiàn)reeSWITCH 僅需 240K 的?臻g
                          你可以使用 ulimit -s 240 限制?臻g使用,或使用該選擇忽略警告信息
-core                  -- 出錯(cuò)時(shí)進(jìn)行內(nèi)核轉(zhuǎn)儲
-hp                    -- 以高優(yōu)先級運(yùn)行
-vg                    -- 在 valgrind 下運(yùn)行,調(diào)試內(nèi)存泄露時(shí)使用
-nosql                 -- 不使用 SQL,show channels 類的命令將不能顯示結(jié)果
-heavy-timer           -- 更精確的時(shí)鐘?赡軙_,但對系統(tǒng)要求更高
-nonat                 -- 如果路由器支持 uPnP 或 NAT-PMP,則 FreeSWITCH
                          可以自動解決 NAT 穿越問題。如果路由器不支持,則該選項(xiàng)可以使啟動更快
-nocal                 -- 關(guān)閉時(shí)鐘核準(zhǔn)。FreeSWTICH 理想的運(yùn)行環(huán)境是 1000 Hz 的內(nèi)核時(shí)鐘
                          如果你的內(nèi)核時(shí)鐘小于 1000 Hz 或在虛擬機(jī)上,可以嘗試關(guān)閉該選項(xiàng)
-nort                  -- 關(guān)閉實(shí)時(shí)時(shí)鐘
-stop                  -- 關(guān)閉 FreeSWTICH,它會在 run 目錄中查找 PID文件
-nc                    -- 啟動到后臺模式,沒有控制臺
-c                     -- 啟動到控制臺,默認(rèn)
-conf [confdir]        -- 指定其它的配置文件所在目錄,須與 -log、 -db 合用
-log [logdir]          -- 指定其它的日志目錄
-run [rundir]          -- 指定其它存放 PID 文件的運(yùn)行目錄
-db [dbdir]            -- 指定其它數(shù)據(jù)庫目錄
-mod [moddir]          -- 指定其它模塊目錄
-htdocs [htdocsdir]    -- 指定其它 HTTP 根目錄
-scripts [scriptsdir]  -- 指定其它腳本目錄

  系統(tǒng)啟動腳本

  在學(xué)習(xí)調(diào)試階段,你可以啟動到前臺,而系統(tǒng)真正運(yùn)行時(shí),你可以使用 -nc 參數(shù)啟動到后臺,然后通過查看 log/freeswitch.log 跟蹤系統(tǒng)運(yùn)行情況(你可以用 tail -f 命令實(shí)時(shí)跟蹤,我一般使用 less)。

  一般情況下,啟動到前臺更容易調(diào)試,但你又不想在每次關(guān)閉 Terminal 時(shí)停止 FreeSWITCH,那么,你可以借助 screen 來實(shí)現(xiàn)。

  在真正的生產(chǎn)系統(tǒng)上,你需要它能跟系統(tǒng)一起啟動。在 *nix 系統(tǒng)上,啟動腳本一般放在 /etc/init.d/。你可以在系統(tǒng)源代碼目錄下找到不同系統(tǒng)啟動腳本 debian/freeswitch.init 及 build/freeswitch.init.*,參考使用。在 Windows 上,你也可以注冊為 Windows 服務(wù),參見附錄中的 FAQ。

  控制臺與命令客戶端

  系統(tǒng)不帶參數(shù)會啟動到控制臺,在控制臺上你可以輸入各種命令以控制或查詢 FreeSWITCH 的狀態(tài)。試試輸入以下命令:

version           -- 顯示當(dāng)前版本
status            -- 顯示當(dāng)前狀態(tài)
sofia status      -- 顯示 sofia 狀態(tài)
help              -- 顯示幫助

  為了調(diào)試方便,F(xiàn)reeSWITCH 還在 conf/autoload_configs/switch.conf.xml 中定義了一些控制臺快捷鍵。你可以通過F1-F12來使用它們(不過,在某些操作系統(tǒng)上,有些快捷鍵可能與操作系統(tǒng)的相沖突,那你就只直接輸入這些命令或重新定義他們了)。

<cli-keybindings>
  <key name="1" value="help"/>
  <key name="2" value="status"/>
  <key name="3" value="show channels"/>
  <key name="4" value="show calls"/>
  <key name="5" value="sofia status"/>
  <key name="6" value="reloadxml"/>
  <key name="7" value="console loglevel 0"/>
  <key name="8" value="console loglevel 7"/>
  <key name="9" value="sofia status profile internal"/>
  <key name="10" value="sofia profile internal siptrace on"/>
  <key name="11" value="sofia profile internal siptrace off"/>
  <key name="12" value="version"/>
</cli-keybindings>

  FreeSWITCH 是 Client-Server結(jié)構(gòu),不管 FreeSWITCH 運(yùn)行在前臺還是后臺,你都可以使用客戶端軟件 fs_cli 連接 FreeSWITCH.

  fs_cli 是一個(gè)類似 Telnet 的客戶端(也類似于 Asterisk 中的 asterisk -r命令),它使用 FreeSWITCH 的 ESL(Event Socket Library)庫與 FreeSWITCH 通信。當(dāng)然,需要加載模塊 mod_event_socket。該模塊是默認(rèn)加載的。

  正常情況下,直接輸入 bin/fs_cli 即可連接上,并出現(xiàn)系統(tǒng)提示符。如果出現(xiàn):

  [ERROR] libs/esl/fs_cli.c:652 main() Error Connecting [Socket Connection Error]

  這樣的錯(cuò)誤,說明 FreeSWITCH 沒有啟動或 mod_event_socket 沒有正確加載,請檢查TCP端口8021端口是否處于監(jiān)聽狀態(tài)或被其它進(jìn)程占用。

  fs_cli 也支持很多命令行參數(shù),值得一提的是 -x 參數(shù),它允許執(zhí)行一條命令后退出,這在編寫腳本程序時(shí)非常有用(如果它能支持管道會更有用,但是它不支持):

bin/fs\_cli -x "version"
bin/fs\_cli -x "status"

  其它的參數(shù)都可以通過配置文件來實(shí)現(xiàn),在這里就不多說了?梢詤⒁姡篽ttp://wiki.freeswitch.org/wiki/Fs_cli

  使用fs_cli,不僅可以連接到本機(jī)的 FreeSWITCH,也可以連接到其它機(jī)器的 FreeSWITCH 上(或本機(jī)另外的 FreeSWITCH 實(shí)例上),通過在用戶主目錄下編輯配置文件 .fs_cli_conf(注意前面的點(diǎn)“.”),可以定義要連接的多個(gè)機(jī)器:

[server1]
host     => 192.168.1.10
port     => 8021
password => secret_password
debug    => 7

[server2]
host     => 192.168.1.11
port     => 8021
password => someother_password
debug    => 0

  注意:如果要連接到其它機(jī)器,要確保 FreeSWITCH 的 Event Socket 是監(jiān)聽在真實(shí)網(wǎng)卡的 IP 地址上,而不是127.0.0.1。另外,在UNIX中,以點(diǎn)開頭的文件是隱藏文件,普通的 ls 命令是不能列出它的,可以使用 ls -a。

  一旦配置好,就可以這樣使用它:

bin/fs_cli server1
bin/fs_cli server2

  在 fs_cli 中,有幾個(gè)特殊的命令,它們是以 “/” 開頭的,這些命令并不直接發(fā)送到 FreeSWITCH,而是先由 fs_cli 處理。/quit、/bye、/exit、Ctrl + D 都可以退出 fs_cli;/help是幫助。

分享到: 收藏

專題