Archive for freebsd

使用pkg命令的时候报错 pkg: warning: database version 34 is newer than libpkg(3) version 33, but still compatible pkg: sqlite error while executing INSERT OR ROLLBACK INTO pkg_search(id, name, origin) VALUES (?1, ?2 || '-' || ?3, ?4); in file pkgdb.c:1544: no such table: pkg_search 从网上找到解决办法 pkg shell sqlite> CREATE VIRTUAL TABLE pkg_search USING fts4(id, name, origin); sqlite> sqlite> pragma user_version=33; 然后使用pkg lock pkg 锁定pkg版本,就不会要你升级pkg版本了

Continue

编辑freebsd文件~/.cshrc setenv LANG zh_CN.UTF-8 setenv LC_CTYPE zh_CN.UTF-8 setenv LC_ALL zh_CN.UTF-8 就可以显示中文了。 这里碰到了一点问题,突然发现ssh登录不上,登录的时候得ctrl c 才能显示命令提示符。不知道啥问题,时间长了就说远程断开连接。然后登录一个shell,再登录一个shell,观察发现,ssh,csh进程内存疯长,ulimit datasize相对于虚拟机大多了。直接把swap爆掉了就。爆了一个"kernel: swap_pager_getswapspace(16): failed"的错误。查了一大顿发现好像没人碰到过这个问题。然后就找工具调试,发现自带的有个truss,就试了一下。 发现全是在进行read(6,"\M^B",1)内核调用。然后从头大体看了一下,各种读的前边是跟语言相关的东西。然后找目录还是啥的报了各种找不到,猜测是不是这里有问题。其实啥没看懂,,只能懵逼。 我之前是在~/.login里配置的中文,现在挪到.cshrc里边。就好了。好奇怪的问题。。

Continue

今天手贱升级了一个pkg版本,从pkg-1.9.3升级到pkg-1.9.4_1。然后就不能用了。提示 /usr/local/lib/libpkg.so.3: Undefined symbol "openat" pkg命令不能用了。好像是内核版本太低了。就找了一下怎么解决。 有个pkg-static命令可以使用,,然后/var/cache/pkg里边缓存的包。执行命令: pkg-static install -f /var/cache/pkg/pkg-1.9.3.txz 强制换低版本的pkg。然后就好了。。没有这个包可以去freebsd官网下一个。

Continue

为了看一下硬盘是否是翻新硬盘,找了一下命令有个smartctl命令,可以查看硬盘使用时间,不过怎么感觉有些数据不太对,, 命令 smartctl -A /dev/ada0 |grep Power_On_Hours

Continue

Freebsd下查看进程打开了那些文件 procstat -f PID FreeBSD 下的rc.conf 不重启立即生效 # sh /etc/rc vmstat结果内容的解释 最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样。如果只使用vmstat,无法反映真正的系统情况。 procs: r–>在运行的进程数 b–>在等待io的进程数(等待i/o,paging等等) w–>可以进入运行队列但被替换的进程 memoy(以k为单位,包括虚拟内核和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active) avm–>活动的虚拟内存 free–>空闲的内存 pages(统计错误页和活动页,每5秒平均一下,以秒为单位给出数值) flt–>错误页总数 re–>回收的页面 pi–>进入页面数 po–>出页面数 fr–>空余的页面数 sr–>每秒通过时钟算法扫描的页面 disk 显示每秒的磁盘操作(磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加-n来增加数字或在命令行下把磁盘名都填上。) fault 显示每秒的中断数 in–>设备中断 sy–>系统中断 cy–>cpu交换 cpu 表示cpu的使用状态 cs–>用户进程使用的时间 sy–>系统进程使用的时间 id–>cpu空闲的时间 解释: 如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。 如果pi,po 长期不等于0,表示内存不足。 如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

Continue

基本都是coreseek官网提供的命令安装,但是在freebsd上出现很多问题,都是查找解决的。 sh buildconf.sh最后没有生成configure脚本,且提示automake: warnings are treated as errors 在 csft-4.1/buildconf.sh 文件中,查找 && aclocal \ 后加上 && automake --add-missing \ 在 csft-4.1/configure.ac 文件中,查找: AM_INIT_AUTOMAKE([-Wall -Werror foreign]) 改为: AM_INIT_AUTOMAKE([-Wall foreign]) 这里支持pgsql接口 ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --without-mysql --with-pgsql --enable-id64 编译的时候出错 sphinxexpr.cpp:1746:43: error: ‘ExprEval’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] 可以直接修改src/sphinxexpr.cpp文件的1746, 1777和1823行,将三行中的ExprEval改为this->ExprEval undefined reference to `libiconv' 这个直接采用官方的第三种方法了,为了方便。。 配置完建立索引的时候 source 'src1': unknown type 'pgsql'; skipping. 卧槽 4.1编译完以后一直内存段错误 ,找不到问题。换成稳定版本,libiconv采用第二种方法,成功。 /usr/local/coreseek/bin/searchd -c /usr/local/etc/sphinx.conf启动 加-h查看参数 /usr/local/coreseek/bin/search -c /usr/local/etc/sphinx.conf -a mp4 搜索 明天详细研究一下配置文件 ########### 测试完真正安装的时候又报错了。 编译mmseg的时候报错ThesaurusDict.h:12:17: error: expected namespace name 编辑文件:ThesaurusDict.h 在头部找到:#include 再其下加入一行代码:#include 3.2修改src/sphinxexpr.cpp的1080,1013,1047行

Continue

从网上找到这个插件可以查看postgresql数据库执行的慢sql。于是安装试试,but   先写出文档来http://www.postgresql.org/docs/current/static/pgstatstatements.html 配置文件需要做的更改 # postgresql.conf shared_preload_libraries = 'pg_stat_statements' pg_stat_statements.max = 10000 pg_stat_statements.track = all 重启postgresql后,发现报错了“could not access file "pg_stat_statements": No such file or directory”。从网上也没找到问题,群里问也没说的。然后慢慢查postgresql插件的资料,发现我freebsd机器插件目录里没有这个插件。/usr/local/share/postgresql/extension 然后我看了pkg的包资料,发现应该是少装了一个包, pkg info | grep postgresql 安装之,修改配置文件,重启。这次正确重启了。然后 create extension pg_stat_statements; \dx查看 多了一个pg_stat_statements.成功了。我的程序一直在跑,然后直接就查这个表就能看到数据。给力的功能。 这个是官方给的sql查询的,我觉得看单次最大时间,和单条平均时间还是有用的。哈哈,这个看了还要再算一下。 清空数据:SELECT pg_stat_statements_reset();

Continue

今天freebsd上装nasm的时候,爆了这个奇怪的错误,开始以为不是本地的原因就源码安装,成功安装了。
晚上安装别的又出现这个错误了,于是找了一下解决方法。

sudo pkg update -f

Continue

折腾了好长时间,重新初始化好多次。 安装的时候,命令:pkg search postgresql.额 好多包,选择最新的9.4安装server,会一起安装client。安装完会有很多文字提示,这个很有用。安装完会新建一个用户pgsql,家目录为/usr/local/pgsql. 第一步, 要先切换到pgsql用户下,su root, su pgsql。然后在pgsql home目录创建data文件夹。root用户下好像是不允许的 初始化,initdb -D /usr/local/pgsql/data/ ,会生成很多文件。初始化数据库存储区,会自动创建一个 postgres的数据库,放乱七八糟的设置和第三方插件的数据。还会有一个模板 template1。这里还不是很清楚,以后创建数据库就会用这个模板创建。这里要说的是数据库编码的问题,这里悲剧的初始化了好多次。 默认执行上边的命令后,提示文字会跟你说(当时没看。。)默认数据库编码为“sql_ascii”,默认文本搜索设置为 english。。我靠执行的时候就瞅着屏幕发呆了,就等执行完。。。重新初始化的方法,我也是从提示中看到的,直接initdb会提示你 要清空原来文件夹或者新建。直接rm -rf *.initdb --help 可以看到字符编码的设定用--encoding ,initdb --encoding=UTF8 -D /usr/local/pgsql/data/ 启动postgresql,启动脚本/usr/local/etc/rc.d/postgresql。开始要添加到/etc/rc.conf文件,这个也是有提示的。 status not running,start成功 创建数据库,createdb --encoding=UTF-8 bt,使用客户端连接,qsql bt, 进去后 show server_encoding;查看server编码,utf8 \encoding 查看客户端编码。客户端还是SQL_ASCII,可以使用/encoding utf8改变客户端编码。 也可以直接使用\l查看。 ok了 基本没别的问题了。

Continue

以前用ubuntu系统的时候,查看系统信息 都是cat /proc来查看。比如查看内存信息,cat /proc/meminfo;查看系统版本,cat /proc/version. procfs是进程文件系统,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存。 换到freebsd以后,发现不能用了 ,虽然还有/proc/目录。官网说procfs已经不赞成使用了,改用了sysctl。 官网man:https://www.freebsd.org/cgi/man.cgi?query=sysctl&sektion=8 官网的命令man和系统的都一样没介绍全,没办法,只能靠经验和grep来查找相应的信息了。查找版本信息。 sysctl -a | grep version,当熟悉以后就可以直接使用sysctl 带名字直接查找了

Continue