查看当前有多少用户
cat /etc/passwd
将输出输出重定向为空
nohup ./bin/unimrcpserver -r $APP_PATH -o 2 > /dev/null 2>&1 &
用netstat命令查看其占用的端口
netstat -nap|grep 7779
-p 协议 、端口、进程名 -n以地址 端口的形式显示,-a 显示所有socket包括正在监听的 -l 正在监听的端口
链接
ldd命令 查看可执行程序的动态链接关系,可以通过正常的链接关系反推错误的链接关系
list, dynamic, dependencies
chmod +x 给shell执行权限,正常颜色改变,ll下有x,即为有执行权限
linux制作静态链接库命令
ln -s
ar rcs my_library.a file1.o file2.o
在Linux系统,标准的共享数序函数库是/usr/lib/libm.so
制作生成动态库
gcc -c hello.c
$ ls
hello.c hello.h hello.o main.c
$ gcc -fPIC -shared -o libmyhello.so hello.c
/usr/lib /lib linux目录下动态库文件
程序在运行时,会在/usr/lib和/lib等目录中查找需要的动态库文件
用export设置动态链接库的环境变量
第一种:export PATH=$PATH:/要添加的路径
export LIB_LIBNARY_PATH= L I B L I B N A R Y P A T H : . . / l i b / 第 二 种 : e x p o r t P A T H = / 要 添 加 的 路 径 : LIB_LIBNARY_PATH:../lib/ 第二种:export PATH=/要添加的路径: LIBLIBNARYPATH:../lib/第二种:exportPATH=/要添加的路径:PATHSS
export LIB_LIBNARY_PATH=…/lib/:$LIB_LIBNARY_PATH
$在shell中表示环境变量,不是普通的字符串
( ( ) ) 属 于 执 行 计 算 公 式 , 等 价 于 (( ))属于执行计算公式,等价于 (())属于执行计算公式,等价于[ ], ( ) 和 ‘ ‘ 属 于 命 令 替 换 , ( )和` `属于命令替换, ()和‘‘属于命令替换,{ }属于变量替换
脚本运行方式sh test.sh不需要脚本具有可执行权限
./test.sh需要脚本具有可执行权限通过 chmod + x
shell中 $代表获取环境变量的值或变量的值
cmd > file 把标准输出重定向到新文件中
cmd >> file 追加
cmd > file 2>&1 标准出错也重定向到1所指向的file里
cmd >> file 2>&1
标准输入 < 1 标准输出 > 2
cmd < file1 > file2 输入输出都定向到文件里
cmd < &fd 把文件描述符fd作为标准输入
cmd > &fd 把文件描述符fd作为标准输出
cmd < &- 关闭标准输入
查看挂载磁盘的大小
fdisk -l
测试tcp端口的连通情况
telnet ip port 只能查看tcp端口
nc -zuv ip port 查看udp端口使用情况
nc -vuz ip port
netstat -lnutp |grep port 查看端口状态 查看端口状态
netstat -pan |grep 30000
size_t 记录跨平台无符号类型整数 ,sizeof操作符返回的结果类型,size_t的定义在
sizeof计算字符\0 ( str.length == strlen() == str.size )不计算字符\0
重新加载系统配置 systemctl daemon-reload
understand 快捷鍵 ctr shift n ctr shift pan
SourceInsight 快捷鍵 alt . alt ,
Apache默认将网站的根目录指向/var/www/html 目录
默认的主配置文件是/etc/httpd/conf/httpd.conf
配置存储在的/etc/httpd/conf.d/目录
性能测试工具,要出内存,cpu 以及磁盘IO使用情况的图形软件,之前找到过没装上去,有空要找到装一下
cmd命令终端 ipconfig/all windows查看机器的ip
linux 更改网卡配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
linux可用的域名服务器配置
cat /etc/resolv.conf
查看使用的linux系统版本
yum install -y expat-devel
whereis gcc 查看用安装包安装的软件位置删除
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/share/man/man1/gcc.1.gz
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:
int i = 1;
i = i << 2; //把i里的值左移2位
也就是说,1的2进制是000…0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000…0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因)
service regAgent.service start
systemctl status regAgent service的状态
systemctl restart regAgent service重启
加载脚本 systemctl daemon-reload
开机自启动systemctl enable regAgent.service
service 为脚本systemctl的命令 放在路径/usr/lib/systemd/system/ 下
查看service 是否为自启动应用systemctl status ****
systemctl is-enabled ****
systemctl list-unit-files | grep firewalld
linxu sip 图形抓包工具 sngrep
查看进程命令:
ps aux | grep opensips
查看UDP链接状态;
netstat -ulpn | grep opensips
查看TCP链接状态:
netstat -tlpn | grep opensips
netstat -lntup | grep opensips
mysql 添加账户
grant all privileges on opensips.* to opensips@localhost identified by ‘passwordopensips’;
刷新权限
flush privileges;
用kill all杀死一类进程
killall -9 opensips
常规程序中,函数返回的指针通常应该是:
(1)指向静态(static)变量;
(2)指向专门申请分配的(如用malloc)空间;
(3)指向常量区(如指向字符串"hello");
(4)指向全局变量;
(5)指向程序代码区(如指向函数的指针)。
alarm( seconds) 配合SIGALRM使用 ,alarm和sleep不同,alarm不是睡眠是定时发送信号
TCP四次挥手时需要注意的点
IGPIPE信号产生的原因:
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,
不要再写了。又或者当一个进程向某个已经收到RST的socket执行写操作时,内核向该进程发送一个SIGPIPE信号。该信号的缺省操作是终止进程,因此进程必须捕获它以免不情愿的被终止。
对一个已经收到FIN包的socket调用read方法, 如果接收缓冲已空, 则返回0, 这就是常说的表示连接关闭. 但第一次对其调用write方法时, 如果发送缓冲没问题, 会返回正确写入(发送).
但发送的报文会导致对端发送RST报文, 因为对端的socket已经调用了close, 完全关闭, 既不发送, 也不接收数据. 所以, 第二次调用write方法(假设在收到RST之后), 会生成SIGPIPE信号,
导致进程退出.”
Linux 系统为大部分信号定义了缺省处理方法,当信号的缺省处理方法不满足需求时,可通过 sigaction()函数进行改变。
如:signal(SIGPIPE, SIG_IGN);
这时SIGPIPE交给了系统处理。
服务器采用了fork的话,要收集垃圾进程,防止僵尸进程的产生,可以这样处理:
signal(SIGCHLD,SIG_IGN);
交给系统init去回收。
这里子进程就不会产生僵尸进程了。
tls
安全传输层协议
tcpdump -i eth0 udp -w audio1.pcap
redis-cli -h 127.0.0.1 -p 6379
查看服务是否开机启动:systemctl is-enabled vsftpd.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
systemctl 提供了一组子命令来管理单个的 unit,其命令格式为:
systemctl [command] [unit]
command 主要有:
start:立刻启动后面接的 unit。
stop:立刻关闭后面接的 unit。
restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。
enable:设置下次开机时,后面接的 unit 会被启动。
disable:设置下次开机时,后面接的 unit 不会被启动。
status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
is-active:目前有没有正在运行中。
is-enable:开机时有没有默认要启用这个 unit。
kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
show:列出 unit 的配置。
mask:注销 unit,注销后你就无法启动这个 unit 了。
unmask:取消对 unit 的注销。
nohup
214
VOIP 网络电话
PBX小型交换机 集团内部电弧
Private Branch Exchange
查看TCP连接数
统计80端口连接数
netstat -npt | grep -i 11300 | wc -l
netstat -npt | grep -i 11300
统计httpd协议连接数
ps -ef | grep httpd | wc -l
统计已连接上的,状态为“established
netstat -npt | grep ESTABLISHED | wc -l
gdb /usr/local/sbin/opensips core.88662
sip:[email protected]:1300
Admin@tech
grep -rsn “6008” /var/log/opensips/opensips.log 3.2 3.3 rtpengine
数据库删除列名
alter table 表名 drop cloumn 列名 ;
框中输入IP或网站域名,点击查询。
curl -L ip.tool.lu
alter table acc drop cloumn caller and callee ;
systemctl restart rsyslog
数据库添加列名 ,删除列名
delete from acc where ; 192.168.1.252
alter table acc add MOS_average char(3) after dst_address;
alter table acc add callee char(32) after caller;
alter table missed_calls add caller char(32) after sip_reason;
alter table missed_calls add callee char(32) after caller;
查看列:desc 表名;
改动表名:alter table t_book rename to bbb;
加入�列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
改动列名MySQL: alter table bbb change nnnnn hh int;
改动列名SQLServer:exec sp_rename’t_student.name’,‘nn’,‘column’;
改动列名Oracle:lter table bbb rename column nnnnn to hh int;
改动列属性:alter table t_book modify name varchar(22);
mysql 加入�列,改动列,删除列。
插入新行
insert into subscriber (id , username, domain , password ,ha1 ,ha1b)
values (1, “1012” , “192.168.1.251” , “123456” ,“5f3890c950424486cc466b8ff02155c0” , “fc6e85e9a785f2d354cb5ec64868edd4”);
mysql 更改某一列
mysql 删除多列
alter table 表名 drop column 列名1,drop column 列名2,drop column 列名3;
DESCRIBE missed_calls;
ALTER TABLE missed_calls DROP COLUMN to_uri ;
insert into subscriber (id , username, domain , password ,ha1 ,ha1b) values (
http://www.ctiforum.com/news/guonei/557767.html
mysql
服务器 fs-no-opensips
账号root
密码 luzhiwei123
systemctl service 所在目录
/usr/lib/systemd/system/
另外的脚本路径
linux 查询公网ip地址 外网ip
curl ifconfig.me
curl icanhazip.com
curl ifconfig.me
curl curlmyip.com
curl ip.appspot.com
curl ipinfo.io/ip
curl ipecho.net/plain
curl www.trackip.net/i
sip 中继
SIP(Session Initiation Protocol,缩写SIP)与H.323一样,是用于VoIP最主要的信令协议之一。SIP 中继(SIP Trunking),是一种基于SIP协议的IP 连接,
在企业与其防火墙以外的网络电话服务提供商(ITSP) 之间建立SIP 通信链路,是企业将语音服务转移到网络上的一种方法
yum -y install telnet*
open --config client-0.conf --daemon --log-append /var/log/open.log
创建本地库,将远程 代码同步到本地仓库
进入本地文件夹右键打开git输入命令 git init
git clong xxxx
创建分支
通过git branch -r 命令查看远端库的分支情况
同步最新的代码
git pull origin master origin(远程操作源项目的别名 )
创建分支
git branch <分支名>
切换到新创建的分支
git checkout <分支名>
把本地分支推到远端,用于后面提交你的代码
git push origin <分支名>
提交在分支上写完的代码
git status 查看需要提交的东西
git add . 提交所有需要提交的文件
git commit -m ‘提交信息描述’
git push origin <分支名> ,push是从本地向远端推代码
git fetch --all 拉取所有远程操作文件
git fetch origin <分支名>
git remote add <源项目起的别名> 地址
比较快捷的杀死进程的方式
pkill -9 进程名称
delete from load_balancer where id = ‘2’ ;
关注一下 Tracert命令
iptables 命令详解 http://t.csdn.cn/yimcJ http://t.csdn.cn/hYPuu
使用nc命令来测试udp端口的连通性
语法:nc –z –v –u ip地址 udp端口号
linux路由问题 route netstat -rn
ssh连接
查看本机端口
lsof -i: port
lsof -p 进程号 进程打开的文件
netstat -lntup|grep port
能够实时显示rtp udp流消息的监控工具
open --daemon --cd /etc/open --config client1.o --log-append /var/log/open.log
–daemon:open以daemon方式启动。
–cd dir:配置文件的目录,open初始化前,先切换到此目录。
–config file:客户端配置文件的路径。
–log-append file:日志文件路径,如果文件不存在会自动创建。
1 Byte=1/128 kb
换算:
1个字节(Byte)=8个位(bit)
1千位(kb)=1024位(bit)=128字节(Byte)
字节和kb M是不同的 128字节等于1kb 等于1024 bit
帧率、码流与分辨率之间关系
公式:
带宽 / (码流 * 8) = 同时在线人数
文件大小 = 时间×码率/8
需要更换版本,更换
2101.810/8=472M
视频大小
curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i “http://www.baidu.com” 显示全部信息
curl -I “http://www.baidu.com” 只显示头部信息
curl -v “http://www.baidu.com” 显示get请求全过程解析
curl -v http://127.0.0.1:80/xcloud/test?version=1&client_version=1.1.0&seq=1001&host=aaa.com
curl -i -k -H “Content-type: application/json” -X POST -d ‘{“version”:“6.6.0”, “from”:“mu”, “product_version”:“1.1.1.0”}’ https://10.10.10.10:80/test
MRCP的消息通常是承载于其它协议之上,如RTSP,SIP等
720 分辨率 码率1024kb/s 1M/s
视频大小
1800*120/8/1024=26.3M
1
0.19 *120 =22.8
5
0.9*130=117
10
1.7*150=255
100
8*300=2400
30*300=9000
0.22*70 70000 kB 给出一组数据和总数居没太大的差别 1.7*8*60=740 7000
iptables -L iptables -L -n
iptables-restore < /etc/sysconfig/iptables.
iftop tun5
实际的流速和码流的关系
注意[]要有一个&,这个意思是指可修改当前作用域的变
[&](int val){t.fun(2);}
ping www.baidu.com -t -t显示延迟时间
Sublime Text
OpenSIPS启动的时候,会从load_balancer表中读出目的地集,保存到内存中。如果OpenSIPS启动后对目的地集做了修改,可以使用MI命令重新加载目的地集,使其生效:
opensipsctl fifo lb_reload
opensips 注册服务器是通过负载均衡模块或者调度模块 寻找下一跳的
控制层协议 websocket协议只是提供了路,但是至于语音流需要怎么走,需要mrcp这样的控制层协议是控制rtp流的流速走向
百问和权威指南中,都说明bridge送主叫号码使用origination_caller_id_number或effective_caller_id_number
送主叫号码的意思是,让被叫端显示送过去的origination_caller_id_number 号码
长号拨分机 tn_to_ext
在智能语音交互的时候使用的 tn_ivr
mgw2 中G 包头
sl_inc
信令间隙限制
ul_inc
呼叫间隙限制
PSTN ( Public Switched Telephone Network )定义:公共交换电话网络,一种常用旧式电话系统。
PSTN公共交换电话网络
数据的收发 从网络协议接口从内核空间到用户空间然后反转内存堆栈开销较大
正常的udp流或者tcp流涉及的开销其实可以忽略不记,但是例如 rtp流通常是许多小数据包以高速率传输,此时所涉及的开销不应该被忽略
ROUTING#添加iptables规则,将入站数据包转发到xt_RTPENGINE模块
iptables -I INPUT -p udp -j RTPENGINE --id $TableID
使用命令opensipsctl fifo ps可以具体查看各个子进程的Type
开启一个进程,可以参考的模块是http模块
开启一个新进程专门用来做http模块
下班前看能写完吗
$ru invite 消息的走的时候的消息的 request-uri地址
媒体超时
虚拟机数据库 mysql root 密码 opensipsrw 用户opensips 密码一样
sudo /etc/init.d/MySQL stop
(您可能有其它的方法,总之停止MySQLd的运行就可以了)
用以下命令启动MySQL,以不检查权限的方式启动;
MySQLd --skip-grant-tables &
然后用空密码方式使用root用户登录 MySQL;
MySQL -u root
mysql 修改某行的某个内容
update subscriber set domain=‘aab.wss.com’ where id = 1;
4. 修改root用户的密码;
MySQL> update MySQL.user set password=PASSWORD(‘newpassword’) where User=‘root’;
MySQL> flush privileges;
MySQL> quit
重新启动MySQL
/etc/init.d/MySQL restart
就可以使用新密码 newpassword 登录了。
mysql 有个用户的表格可以使用这个表格控制用户信息
select user,host,password from user;
select user,host,password from user;
root用户登录下修改用户名和密码
update user set password=password(‘opensipsrw’) where user=‘opensips’;
flush privileges;
alter user @‘%’ identified by ‘opensipsrw’;
update user set password=password(‘123’) where user=’opensips’ and host=’%’;
int2str 64整型转字符串
先将进程和队列加入进去,将整体的功能实现后再优化所有代码
on_misscall failed
fs 自动加载的模块在conf/autoload_configs/modules.conf.xml文件中加载到
redis-cli --cluster help
Cluster Manager Commands:
create host1:port1 … hostN:portN #创建集群
–cluster-replicas #从节点个数
check host:port #检查集群
–cluster-search-multiple-owners #检查是否有槽同时被分配给了多个节点
info host:port #查看集群状态
fix host:port #修复集群
–cluster-search-multiple-owners #修复槽的重复分配问题
reshard host:port #指定集群的任意一节点进行迁移slot,重新分slots
–cluster-from #需要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id,还可以直接传递–from all,这样源节点就是集群的所有节点,不传递该参数的话,则会在迁移过程中提示用户输入
–cluster-to #slot需要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过程中提示用户输入
–cluster-slots #需要迁移的slot数量,不传递该参数的话,则会在迁移过程中提示用户输入。
–cluster-yes #指定迁移时的确认输入
–cluster-timeout #设置migrate命令的超时时间
–cluster-pipeline #定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10
–cluster-replace #是否直接replace到目标节点
rebalance host:port #指定集群的任意一节点进行平衡集群节点slot数量
–cluster-weight
–cluster-use-empty-masters #设置可以让没有分配slot的主节点参与,默认不允许
–cluster-timeout #设置migrate命令的超时时间
–cluster-simulate #模拟rebalance操作,不会真正执行迁移操作
–cluster-pipeline #定义cluster getkeysinslot命令一次取出的key数量,默认值为10
–cluster-threshold #迁移的slot阈值超过threshold,执行rebalance操作
–cluster-replace #是否直接replace到目标节点
add-node new_host:new_port existing_host:existing_port #添加节点,把新节点加入到指定的集群,默认添加主节点
–cluster-slave #新节点作为从节点,默认随机一个主节点
–cluster-master-id #给新节点指定主节点
del-node host:port node_id #删除给定的一个节点,成功后关闭该节点服务
call host:port command arg arg … arg #在集群的所有节点执行相关命令
set-timeout host:port milliseconds #设置cluster-node-timeout
import host:port #将外部redis数据导入集群
–cluster-from #将指定实例的数据导入到集群
–cluster-copy #migrate时指定copy
–cluster-replace #migrate时指定replace
help
sofia status profile internal reg
sofia profile internal start
.跳到文本的最后一行:按“G”,即“shift+g”
2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。
3.跳到第一行的第一个字符:先按两次“g”,
e
4.跳转到当前行的第一个字符:在当前行按“0”或者按“^”,即“shift+6”。
5.vi加密。进入vi,输入":X" 之后按回车就提示你输入两次密码。之后:wq 保存退出。再次进入时就提示你输入密码了。如果你不想要密码了,就:X 提示你输入密码时连续按两次回车,就搞定了。哈哈。
.快速至当前行的行首;
2.快速至当前行的行尾使用$;
1)冒号(:)+行号+回车; 2)行号+gg; 3) 行号+G(注意大写);
fs 用户目录路由的优先级要比 sip_profile路由高
context 是 dialplan 中的环境。在此指定来话要落到 dialplan 的哪个 context 环境中。
需要指出,如果用户注册到该 profile 上(或是经过认证的用户,即本地用户),则用户目录(directory)中设置的 contex 优先级要比这里高。
撤回解压的操作
zipinfo -1 WebServer-master.zip | xargs rm -rf
tar -tf 文件名.tar | xargs rm -rf
三个项目是必写的, 一个是httpserver 一个是flamingo 即时通讯的项目, 还有一些项目是必看的
rfc项目
防火墙指定需要开放的端口
查看想开的端口是否已开:firewall-cmd --query-port=6379/tcp
添加指定需要开放的端口:firewall-cmd --add-port=123/tcp --permanent
重载入添加的端口:firewall-cmd --reload
查询指定端口是否开启成功:firewall-cmd --query-port=123/tcp
移除指定端口:firewall-cmd --permanent --remove-port=123/tcp
查看外网udp 端口是否打开
netstat -lntup
reoute -p add
git 查看当前使用的用户
git config --global user.name
git 切换用户和邮箱
2.git config --global user.name 'Kael’git初次使用配置个人用户名,如果以前已经配置,通过git config user.name查看。
3.git config --global user.email '[email protected]’git初次使用时要先配置个人邮箱,如果以前已经配置,通过git config user.email查看。
查看当前配置的用户名和邮箱等配置
git config --global --list
user.name=luzhiwei
[email protected]
credential.helper=manager
git 切换用户
git config --global user.name “xunlujiehuo”
git config --global user.email “[email protected]”
git checkout -b dev // 创建并切换到dev分支
git checkout master // 切换到主干分支
git branch // 查看分支
git branch -a // 查看所有分支
git fetch -a // 拉取所有分支, 拉取之后使用git branch -a才能看到别人新建的远程分支
git push origin dev // 推送dev分支代码到远程仓库的dev分支
git pull origin dev:dev // 拉取远程dev分支
git merge dev -m"xxx" // 合并dev分支到主干分支(当前分支必须是master分支)
git merge master -m"xxx" // 合并master分支到dev分支(当前分支是dev分支)
如果仓库地址是 https 开头,则需要输入用户名密码
git remote add origin xxx 关联远程仓库,例如:
git remote add origin https://gitee.com/huruqing/gitdemo.git
git remote remove origin 断开与远程仓库的关联
git remote -v 查看关联的远程仓库
git fetch 和push 的区别
ps命令的常用参数有:
-e,-A 显示所有进程
-f 显示完整格式的输出
-l 显示长列表
-a,所有进程,加上-x参数会显示没有控制终端的进程
-u username,显示指定用户的进程,例如ps -u ltc
-aux 按照CPU或者内存用量来筛选进程,例如ps -aux --sort -pcpu或ps -aux --sort -pmem
-C cmdlist,显示包含在cmdlist列表中的进程,例如ps -C test
-L 显示进程中的线程,例如ps -L 123,123为进程ID
-j 显示任务信息
-H 用层级显示进程,树状结构
对linux系统下性能调优有一定经验,使用过top、vmstat、iotop等工具优先
grep -v 是反向查询的意思,grep -v grep的作用是除去包含grep的项。
ps -ef| grep nginx | grep -v “grep”| grep -v “check”|wc -l
wc 命令用于计算字数。
参数:
-c, --bytes:统计字节数。
-m, --chars:统计字符数。
-w, --words:统计字数。
-l, --lines:统计行数。
-L, --max-line-length:统计最长行的长度。
-eq //equals等于
-ne //no equals不等tp于
-gt //greater than 大于
-lt //less than小于
-ge //greater equals大于等于
-le //less equals小于等于
nmap -sU 192.168.1.188 -p 10086 默认tcp -sU udp
vim 移到行首 0 移到行尾 shift + 4
vim 替换命令
文件替换命令 sed
、 undefined reference to symbol ‘OPENSSL_add_all_algorithms_noconf@@libcrypto.so.10’
xshell 问题 如果只剩下当前窗口,只能开启一个会话,在查看里点击会话选项卡即可出现多会话
将所有apple替换成pear
:%s/apple/pear/g
查看哪个目录占用内存最高
du -h / -x --max-depth=1
查看路径下文件的大小
rtpengine 在opensips 端开启start_recording,rtpengine会将语音流数据写在内核模块
强记
行首行尾
替换字符
sed
编译makefile 文件
v=0
o=‐ 3409821183230872764 2 IN IP4 127.0.0.1
…
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
…
a=rtpmap:111 opus/48000/2
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
音频支持三种形式数据负载
gdb 设置参数 gdb /usr/sbin/***
set args 1 2 3
按键错误问题,解决方法在错乱的输入源 setting中设置了 中文输入源
在左下角同样设置重启后即可
将搜狗输入法删除,CLion效果暂时看得到改善
PBX
先rtpengine 优化
149049 | 6008 | aab.wss.com | pdyYQ82g9PL5iBVg | | 5b148f07c8edc6212828ba73c8e2124a | ef4dab3af3bbc97ee0ca1eda0edc973d | NULL
6008 注册在其他环境上,查一下6008 在什么环境上
把秒数转换成标准时间格式(方法2)
$ date -d @1233631748
window tasklist|findstr "2016"通过进程号查询正在使用的进程
windows netstat -aon|findstr “提示的端口” 通过端口号查询正在使用的进程号
构建dpkg-checkbuilddeps 开发文件依赖关系
PBX
Private Branch eXchange
VOIP 基于IP的语音传输
Voice over Internet Protocol,缩写为VoIP
PSTN ( Public Switched Telephone Network )定义:公共交换电话网络
NAT
sip协议
传输层必须要采用UDP来传输媒体,那么必然需要利用一种可靠的协商机制来保障通信的可达性,实际上需要通信的客户端在真正建立起通信前(也就是发送媒体之前),
必须确保对方是“可被通信”的,在VoIP领域,负责这个任务主要就落在应用层,SIP也是因此而生,当然SIP制定并不只考虑可靠性的问题,还有很多其他方面的需求
SIP(Session initialization Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。
它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点
Internet 传输实时数据的实时传输协议(RTP) 外
传输层
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议, IETF的RFC 793 [1] 定义。
Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,
几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。 [2
SBC之所以存在的意义
SBC也同样由于处于VoIP边界,对经过SBC的所有流量从应用层——SIP协议对数量进行控制,监测,识别,丢弃甚至修改。
这就是SBC强大的原因之一,它能像医生的手术刀一样,对过往的SIP及SDP进行精准的操控,以达到各种业务目的。
O口网关
基于SIP网关落地
早期PSTN不支持SIP协议,需要通过SIP网关完成VoIP与PSTN的互通。
有两种类型的SIP网关,针对两类不同的PSTN接入方式
1)用户网关:针对模拟用户线接入方式
2)中继网关:针对数字中继线接入方式
于SIP用户网关通过普通用户电话线就可以实现企业IP PBX连接PSTN的目的。
这种类型的SIP用户网关是FXO网关,俗称O口网关,它相当于一个传统固定话机,通过模拟用户线接入PSTN,转成SIP,再连接IP PBX。
FXO FXS O 口和S口 O口指向外部线路 S口指向内部线路
大型项目编译的错误的时候,主看error信息
查看进程中线程数
ps hH p | wc -l
cat /proc/进程号 |grep Threads