2017年11月

win10安装docker报错

错误信息为:You are not allowed to use Docker . You must be in the "docker-users" group.
解决步骤:
打开计算机管理,在运行里面 compmgmt.msc,然后回车
a1.png

在docker-users添加你的现在登录的用户
a2.png

mongodb占用太大内存的问题

mongodb对内存占用是否可怕,服务器内存是8G,但是mongodb并没有多少记录,大概删掉后只有几千条,但是却占用了35%的内存(先top后,然后 shift+m 把当前进场按占用内存的多少排序),惊人。没有使用swap。
mongodb把内存的管理交给了系统,所以在程序里面并没有办法处理这部分内存的占用,db.repairDatabase(),返回OK后,内存占用依然很高,最后只能暂用重启的办法,use admin;db.shutdownServer();或者kill,之后再启动,启动成功后,内存和CPU粉笔只占用l%.mongostat后看也很正常。
但是这个问题并没有很好的解决,怎样才能在不重启的情况下解决这个问题还不知道。另外,在linux里面,可以结合ulimit来控制mongodb的内存使用大小。

通过curl发送json数据报错syntax error, expect {, actual [, pos 0

在shell里面通过curl发送json数据到另外一个服务器的时候报错syntax error, expect {, actual [, pos 0,死活都无法通过,代码片段为:

postcontent=`sed ":a;N;s/\n//g;ta" $OUTFILE`
echo $postcontent
curl -l -H "Content-type: application/json" -X POST -d '$postcontent' http://vpn.ciika.com/vpnport/updatestatus

其中postcontent为:

{"id":"sg1","in":891,"out":1753,"list":[{"server":"172.26.2.174:22","rate":3011},{"server":"clients","rate":1782}]}

开始有两个猜测,json是否是否被切断了,从打印的结果来看,是完整的,另外猜测-d里面的单引号是否有问题,经过尝试后发现确实是单引号的问题,修改为双引号问题解决:

curl -l -H "Content-type: application/json" -X POST -d "$postcontent" http://vpn.ciika.com/vpnport/updatestatus

参考:
https://stackoverflow.com/questions/26614423/trouble-with-bash-shell-script-attempting-to-post-variable-json-data-using-curl

ubuntu crontab 不执行的解决方法

在linux上需要监控网络的流量,在crontab里面设置的是每分钟执行一次,但是没达到自己想要的结果,分析过程如下:
1.查看/var/log/syslog发现有错误,info (No MTA installed, discarding output),意识到crontab的脚本没有把输出到日志
2.输出到日志后,发现sorry,I can not detect any network device,please report this issue to author.,这个错误是脚本里面打印的,说明其实是crontab是执行了
3.输出这个是找不到网卡,crontab里面找不到eth0,ifconfig这个写全路径后/sbin/ifconfig,这个错误消失了
4.错误在一步步减少,但是任然和预想的有差距,在脚本里面输出echo $PATH后发现:/usr/bin:/bin,但是其实正式的环境变量应该是:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
5.修改脚本,在顶部直接导入环境变量PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games,问题解决