Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183133
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 622
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-19 19:12
文章分类

全部博文(67)

分类: C/C++

2014-11-19 19:59:52

安装默认在/usr/local/freeswitch,/usr/local/freeswitch/bin下为可执行文件,运行其中的freeswitch文件即可在当前控制台打开freeswitch。
为了可在任意地方运行freeswitch,有以下两个方法
1. 将 /usr/local/freeswitch/bin 添加到环境变量
方法:在/etc/profile文件末尾加上PATH=$PATH:/usr/local/freeswitch/bin ,source /etc/profile
2. 建立命令的软连接
ln -s /usr/local/freeswitch/bin/freeswitch /usr/local/bin/freeswitch
ln -s /usr/local/freeswitch/bin/fs_cli /usr/local/bin/fs_cli        fs_cli命令下面细说

命令
-nf                    -- no forking
-u [user]              -- 启动后以非 root 用户 user 身份运行
-g [group]             -- 启动后以非 root 组 group 身份运行
-help                  -- 显示本帮助信息
-version               -- 显示版本信息
-waste                 -- 允许浪费内存,FreeSWITCH 仅需 240K 的栈空间
                          你可以使用 ulimit -s 240 限制栈空间使用,或使用该选择忽略警告信息
-core                  -- 出错时进行内核转储
-hp                    -- 以高优先级运行
-vg                    -- 在 valgrind 下运行,调试内存泄露时使用
-nosql                 -- 不使用 SQL,show channels 类的命令将不能显示结果
-heavy-timer           -- 更精确的时钟。可能会更精确,但对系统要求更高
-nonat                 -- 如果路由器支持 uPnP 或 NAT-PMP,则 FreeSWITCH 
                          可以自动解决 NAT 穿越问题。如果路由器不支持,则该选项可以使启动更快
-nocal                 -- 关闭时钟核准。FreeSWTICH 理想的运行环境是 1000 Hz 的内核时钟
                          如果你的内核时钟小于 1000 Hz 或在虚拟机上,可以尝试关闭该选项
-nort                  -- 关闭实时时钟
-stop                  -- 关闭 FreeSWTICH,它会在 run 目录中查找 PID文件 
-nc                    -- 启动到后台模式,没有控制台 
-c                     -- 启动到控制台,默认
-conf [confdir]        -- 指定其它的配置文件所在目录,须与 -log、 -db 合用
-log [logdir]          -- 指定其它的日志目录
-run [rundir]          -- 指定其它存放 PID 文件的运行目录
-db [dbdir]            -- 指定其它数据库目录
-mod [moddir]          -- 指定其它模块目录
-htdocs [htdocsdir]    -- 指定其它 HTTP 根目录
-scripts [scriptsdir]  -- 指定其它脚本目录
红色标出了最重要的参数,启动到后台的freeswitch我们怎么用命令去控制呢?这就需要刚才提到的fs_cli,运行此命令可以连接到本机的freeswitch,如果加上参数也可以连接远程freeswitch
	
	

fs_cli 是一个类似 Telnet 的客户端(也类似于 Asterisk 中的 asterisk -r命令),它使用 FreeSWITCH 的 ESL(Event Socket Library)库与 FreeSWITCH 通信。当然,需要加载模块 mod_event_socket。该模块是默认加载的。

正常情况下,直接输入 bin/fs_cli 即可连接上,并出现系统提示符。如果出现:

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

这样的错误,说明 FreeSWITCH 没有启动或 mod_event_socket 没有正确加载,请检查TCP端口8021端口是否处于监听状态或被其它进程占用。

fs_cli 也支持很多命令行参数,值得一提的是 -x 参数,它允许执行一条命令后退出,这在编写脚本程序时非常有用(如果它能支持管道会更有用,但是它不支持):

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

其它的参数都可以通过配置文件来实现,在这里就不多说了。可以参见:

使用fs_cli,不仅可以连接到本机的 FreeSWITCH,也可以连接到其它机器的 FreeSWITCH 上(或本机另外的 FreeSWITCH 实例上),通过在用户主目录下编辑配置文件.fs_cli_conf(注意前面的点“.”),可以定义要连接的多个机器:

[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 

注意:如果要连接到其它机器,要确保 FreeSWITCH 的 Event Socket 是监听在真实网卡的 IP 地址上,而不是127.0.0.1。另外,在UNIX中,以点开头的文件是隐藏文件,普通的ls 命令是不能列出它的,可以使用 ls -a

一旦配置好,就可以这样使用它:

bin/fs_cli server1
bin/fs_cli server2 

在 fs_cli 中,以 “/” 开头的命令并不直接发送到 FreeSWITCH,而是先由 fs_cli 处理。

/quit、/bye、/exit、Ctrl + D 都可以退出 fs_cli;/help是帮助。

其它一些 “/”开头的指令与 Event Socket 中相关的命令相同,如:

/event       -- 开启事件接收
/noevents    -- 关闭事件接收
/nixevent    -- 除了特定一种外,开启所有事件
/log         -- 设置 log 级别,如 /log info 或 /log debug 等 
/nolog       -- 关闭 log
/filter      -- 过滤事件 

另外,一些“重要”命令不能直接在 fs_cli 中执行,如 shutdown 命令,在控制台上可以直接执行,但在 fs_cli中,需要执行 fsctl shutdown。

除此之外,其它命令都与直接在 FreeSWITCH 控制台上执行是一样的。它也支持快捷键,最常用的快捷键是 F6(reloadxml)、F7(关闭 log输出)、F8(开启 debug 级别的 log 输出)。

在 *nix上,两者都通过 libeditline 支持。可以通过上、下箭头查看命令历史。

对于发给freeswitch的命令,有几个应该熟记于心,

Help-  FSAPI列表

version—正运行的服务器版本

status—统计当前FreeSWITCH状态信息

showchannels—显示所有活动的channell(call-leg)

show calls—显示所有当前被bridge的呼叫

对于呼叫,有几个概念,即 channel, call-leg, call; channel等同于call-leg,从服务器角度看,

Call-leg或者channle是服务器与客户端之间的单独连接实例,call为两个终端被bridge在一起,是两个call-leg. 比如呼叫进入freeswitch,被路由到留言,这是一条call-leg,如果被freeswitch桥接到另一个客户端,则为两个call-leg,by the way, freeswitch对于每个call-leg(freeswitch中也叫session)被单独线程处理。



系统启动脚本

在学习调试阶段,你可以启动到前台,而系统真正运行时,你可以使用 -nc 参数启动到后台,然后通过查看 log/freeswitch.log 跟踪系统运行情况(你可以用 tail -f 命令实时跟踪,我一般使用 less)。

一般情况下,启动到前台更容易调试,但你又不想在每次关闭 Terminal 时停止 FreeSWITCH,那么,你可以借助 来实现。

在真正的生产系统上,你需要它能跟系统一起启动。在 *nix 系统上,启动脚本一般放在 /etc/init.d/。你可以在系统源代码目录下找到不同系统启动脚本 debian/freeswitch.init 及 build/freeswitch.init.*,参考使用。

阅读(2018) | 评论(0) | 转发(0) |
0

上一篇:pcap文件格式

下一篇:RTP payload type

给主人留下些什么吧!~~