我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案。
读到本章,你应该对 FreeSWITCH 有了一个比较全面的了解,迫切地想实验它强大的功能了。让我们从最初的运行开始,一步一步进入 FreeSWITCH 的神秘世界。
命令行参数
一般来说,FreeSWITCH 不需要任何命令行参数就可以启动,但在某些情况下,你需要以一些特殊的参数启动。在此,仅作简单介绍。如果你知道是什么意思,那么你就可以使用,如果不知道,多半你用不到。
使用 freeswitch -help 或 freeswitch --help 会显示以下信息:
-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] -- 指定其它脚本目录
系统启动脚本
在学习调试阶段,你可以启动到前台,而系统真正运行时,你可以使用 -nc 参数启动到后台,然后通过查看 log/freeswitch.log 跟踪系统运行情况(你可以用 tail -f 命令实时跟踪,我一般使用 less)。
一般情况下,启动到前台更容易调试,但你又不想在每次关闭 Terminal 时停止 FreeSWITCH,那么,你可以借助 screen 来实现。
在真正的生产系统上,你需要它能跟系统一起启动。在 *nix 系统上,启动脚本一般放在 /etc/init.d/。你可以在系统源代码目录下找到不同系统启动脚本 debian/freeswitch.init 及 build/freeswitch.init.*,参考使用。在 Windows 上,你也可以注册为 Windows 服务,参见附录中的 FAQ。
控制台与命令客户端
系统不带参数会启动到控制台,在控制台上你可以输入各种命令以控制或查询 FreeSWITCH 的状态。试试输入以下命令:
version -- 显示当前版本
status -- 显示当前状态
sofia status -- 显示 sofia 状态
help