背景:在vim中看比如最近流行的SSDB,听说想替代redis,里面有一个配置文件叫:/usr/local/ssdb/ssdb.conf ,写道:# MUST indent by TAB!
在vim里看不到tab,或你已经修改一个tab不是它默认的tab了(一个tab修改为4个空格),如何看tab成问题,有时你还想分是不是tab还是空格?
在VI中,也有类似功能,可以查看TAB及行尾空格。
如下设置,第一行运行时看起来比较不顺眼(^I填充TAB),再运行第二行(TAB会被显示成 ">---" ("-" 的个数不定) 而行尾多余的空白字符显示成 "-"。
看起来好多了):


set list是设置显示TAB,默认是用^I填充TAB。
listchars选项用来设置TAB和行尾空格的显示。
详见vi帮助:VIEWING TABS




参考:http://www.361way.com/vi-char/362.html
参考:http://blog.csdn.net/jq0123/article/details/5600426
背景:在Linux下的c也好windows下的c也好,这两者不太好理解,再研究一下,指针数组就是像数组下标一样获取一个数组里面的值,不过前面有括号(*b)[N],N {1,N}。

1、指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针;数组指针:a pointer to an array,即指向数组的指针。
int* a[4]     指针数组    
                  表示:数组a中的元素都为int型指针    
                  元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*
int (*a)[4]  数组指针    
                  表示:指向数组a的指针
                  元素表示:(*a)[i]  

2、下面通过实例来说明数组指针与指针数组的区别:  


背景:做物联网时候有时候咱不搞p2p通讯而用服务器中转,而中转时候有些变量想共享如手机端的温度值的websocket推送,和硬件传感器的网络上报温度基于tcp/ip,这个温度值经过swoole的多端口实时共享,那么这个需求在swoole1.8.0里面得到实现和满足。

https://linkeddestiny.gitbooks.io/easy-swoole/content/book/chapter02/port.html
linxu平台解压rpm包的方法可以输入命令 rpm2cpio xxx.rpm | cpio -divRPM包括是使用cpio格式打包的,所以可以先转cpio然后解压示例例如:[root@localhost oracle]# rpm2cpio mentohust-0.3.4-1.el5.i386.rpm  | cpio -div来自:http://jingyan.baidu.com/album/73c3ce28e9c996e50343d9c0.html?stepindex=6&st=5&os=1&bd_page_type=1&net_type=4&ssid=&from=

[root@iZ25z0ugwgtZ tmp]# rpm2cpio php-5.4.16-36.3.el7_2.x86_64.rpm |cpio -div
背景:看PHP的慢日志一般来讲主要是看网络接口上的问题,有时间一台服务器会调用api接口,而该接口呢在另一吧机器上,而有人恶意透过这个接口频繁调用,飙高带宽,进而导致一堆TIME_WAIT,nginx出现白页,此时,这是现象,如何由现象看到本质,那就打开php-fpm的slow的日志吧,如何打开,接着向下看吧。
——————————————————————————————————————————————————————————————————————
众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题。作为mysql的好搭档,php也有这样的功能。如果你使用php-fpm来管理php的话,你可以通过如下选项开启。
PHP 5.3.3 之前设置如下:
<value name="request_slowlog_timeout">5s</value>
<value name="slowlog">logs/php-fpm-slowlog.log</value>

说明:
request_slowlog_timeout 是脚本超过多长时间 就可以记录到日志文件
slowlog 是日志文件的路径

开启后,如果有脚本执行超过指定的时间,就会在指定的日志文件中写入类似如下的信息:


[19-Dec-2013 16:54:49] [pool www] pid 18575
script_filename = /home/web/htdocs/sandbox_canglong/test/tt.php
[0x0000000003a00dc8] curl_exec() /home/web/htdocs/sandbox_canglong/test/tt.php:2
[0x0000000003a00cd0] exfilter_curl_get() /home/web/htdocs/sandbox_canglong/test/tt.php:6
日志说明:
script_filename 是入口文件
curl_exec() : 说明是执行这个方法的时候超过执行时间的。
exfilter_curl_get() :说明调用curl_exec()的方法是exfilter_curl_get() 。
每行冒号后面的数字是行号。

开启后,在错误日志文件中也有相关记录。如下:





参考:http://www.bo56.com/%E5%96%84%E7%94%A8php-fpm%E7%9A%84%E6%85%A2%E6%89%A7%E8%A1%8C%E6%97%A5%E5%BF%97slow-log%EF%BC%8C%E5%88%86%E6%9E%90php%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98/
一般都要sort排序一下后再比对为好:
sort eee.txt > eeee.txt
sort fff.txt > ffff.txt
diff -c eeee.txt ffff.txt
——————————————————

抄来抄去,直接看这篇文章得了:
http://blog.chinaunix.net/uid-26000296-id-3507646.html

这儿注意大于小于的含义:
diff  cccc.txt dddd.txt
19a20
> 999 备注:大于是指左边文件没有右边有。
而用-c提示相比上面这种方法更直观一些:
diff -c  cccc.txt dddd.txt
*** cccc.txt    2016-12-02 16:00:25.378913370 +0800
--- dddd.txt    2016-12-02 16:00:58.528306679 +0800
***************
*** 17,19 ****
--- 17,20 ----
  10.71.182.93
  10.71.182.96
  10.71.182.99
+ 999


注意:改变位置会在其前面三行和后面三行,因此一共显示7行。
文件内容的每一行最前面,还有一个标记位。如果为空,表示该行无变化;如果是感叹号(!),表示该行有改动;如果是减号(-),表示该行被删除;如果是加号(+),表示该行为新增。
=====================================

假设有两个文件:

//file1.txt

I need to buy apples.

I need to run the laundry.

I need to wash the dog.

I need to get the car detailed.

//file2.txt

I need to buy apples.

I need to do the laundry.

I need to wash the car.

I need to get the dog detailed.

我们使用diff比较他们的不同:diff file1.txt file2.txt


2,4c2,4 前面的数字2,4表示第一个文件中的行,中间有一个字母c表示需要在第一个文件上做的操作(a=add,c=change,d=delete),后面的数字2,4表示第二个文件中的行。

2,4c2,4 的含义是:第一个文件中的第[2,4]行(注意这是一个闭合区间,包括第2行和第4行)需要做出修改才能与第二个文件中的[2,4]行相匹配。接下来的内容则告诉我们需要修改的地方,前面带 < 的部分表示左边文件的第[2,4]行的内容,而带> 的部分表示右边文件的第[2,4]行的内容,中间的 --- 则是两个文件内容的分隔符号。

打patch的比较最常用:
-e 将比较的结果保存成一个ed脚本,之后ed程序可以执行该脚本文件,从而将file1修改成与file2一样的文字内容:
[root@iZ25dcp92ckZ diff]# diff -e 1.txt 2.txt > script.txt
diff: 1.txt: 没有那个文件或目录
diff: 2.txt: 没有那个文件或目录
[root@iZ25dcp92ckZ diff]# diff -e file1.txt file2.txt > script.txt
[root@iZ25dcp92ckZ diff]# cat script.txt
7c
I need to get the dog detailed.
.
5c
I need to wash the car.
.
3c
I need to do the laundry.
.
1c
need to buy apples.
.
[root@iZ25dcp92ckZ diff]#

这样就是生成了一个ed可以执行的脚本文件script.txt,生成脚本文件之后我们还需要做一个操作, 在脚本文件末尾添加ed的write指令,只需要执行 echo "w" >>script.txt 将w指令附加到脚本文件的最后一行即可。

那么如何应用该脚本文件呢,可以这样使用:

ed - file1.txt < script.txt

注意中间的 – 符号表示从标准输入中读取,而 < script.txt 则重定向script.txt的内容到标准输入。这样执行之后1.txt的内容将与2.txt完全相同。

[root@iZ25dcp92ckZ ~]# cd /tmp/diff
[root@iZ25dcp92ckZ diff]#  echo "w" >>script.txt
[root@iZ25dcp92ckZ diff]# ed - file1.txt < script.txt
[root@iZ25dcp92ckZ diff]# diff file1.txt file2.txt
[root@iZ25dcp92ckZ diff]#

比对发现一样,得证。
来自:
【diff详解,读懂diff结果】
http://m.pstatp.com/group/6321440713972171010/?iid=5181229840&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

需要安装ruby
在开始搭建redis之前,你需要确保你本地有ruby(2.0以上),且该ruby 中有redis 扩展包。

需要有ruby redis包
//验证是否安装好ruby redis扩展包:[这里查看ruby 扩展包有更好的办法请告诉我,我对ruby完全不熟悉]//如果没有安装好ruby redis,请看"2.1 安装ruby redis 扩展包",//如果已经安装好,直接看"二 实施阶段"# find / -name "redis"/Library/Ruby/Gems/2.3.1/gems/redis-3.0.6/lib/redis


安装ruby redis 扩展包
//查看你本地是否有gem,如果没有安装,请看"2.2 安装gem",否则请看下面内容$ gem -v2.0.14#gem install redis -v 3.0.6//因为gems官网的镜像在国外,所以国内网络经常断连。你需要链接一个国内镜像,我用的是https://ruby.taobao.org//查看现在镜像的来源地址$ gem sources -l*** CURRENT SOURCES ***https://rubygems.org//** * 增加https://ruby.taobao.org为镜像,并且移除官网的https://rubygems.org/镜像*/$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org///查看现在镜像的来源地址$ gem sources -l*** CURRENT SOURCES ***https://ruby.taobao.org//安装ruby redis 3.0.6包[这个包需要与你本地的redis包的版本一致哦]#gem install redis -v 3.0.6//验证是否安装好redis扩展包:[这里查看ruby 扩展包有更好的办法请告诉我,我对ruby完全不熟悉]# find / -name "redis"/Library/Ruby/Gems/2.3.1/gems/redis-3.0.6/lib/redis


安装gem
rubygems官网下载地址
下载后就按照正常的安装步骤安装即可
//"./configure" 该步骤可以配置安装路径,以及其他参数,请查看帮助$ ./configure$ make$ sudo make install$ gem -v2.0.14


你需要了解redis的架构
redis架构相关 http://blog.csdn.net/naixiyi/article/details/51335059

认识redis.conf文件关于redis集群(redis cluster)的配置
要使redis以集群方式启动,而不是普通单例方式启动,需要更改redis.conf文件以下字段.保存为demo_redis.conf

//这里的port 随意你定,你只要保证该端口7000以及(7000+10000)端口是空闲的即可。前者是用于服务client的端口。后者是用于各个实例相互通信的bus port,默认为服务client端口加10000port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yes



.认识redis-trib.rb脚本
该脚本的位置在./../redis-3.0.6/src/redis-trib.rb。你可以查看有的各个命令

$ ./../redis-3.0.6/src/redis-trib.rb Usage: redis-trib <command> <options> <arguments ...>  create          host1:port1 ... hostN:portN                  --replicas <arg>  check           host:port  info            host:port  fix             host:port                  --timeout <arg>  reshard         host:port                  --from <arg>                  --to <arg>                  --slots <arg>                  --yes                  --timeout <arg>                  --pipeline <arg>  rebalance       host:port                  --weight <arg>                  --auto-weights                  --threshold <arg>                  --use-empty-masters                  --timeout <arg>                  --simulate                  --pipeline <arg>  add-node        new_host:new_port existing_host:existing_port                  --slave                  --master-id <arg>  del-node        host:port node_id  set-timeout     host:port milliseconds  call            host:port command arg arg .. arg  import          host:port                  --from <arg>                  --copy                  --replace  help            (show this help)

摘自 :http://www.th7.cn/Program/Ruby/201605/853077.shtml
更多: http://blog.csdn.net/huwei2003/article/details/50973967
一)过滤出三次握手的第一次:
tcp.flags.syn == 1  //YN置1就表示这是一个连接请求或连接接受报文。首先由Client发出请求连接即 SYN=1 ACK=0  (请看头字段的介绍), TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=0
二)跟踪一个IP和另一个IP的数据包:
(ip.addr eq 123.130.127.180 and ip.addr eq 172.20.156.35) and (tcp.port eq 80 and tcp.port eq 16616)

ip.addr == 123.130.127.180 and ip.addr == 172.20.156.35 //注意,一是两个等号,二是ip不用双引或单引号想起来,否则属于错误语句。
(ip.addr == 123.130.127.180 and ip.addr == 172.20.156.35) and (tcp.port == 80 and tcp.port == 16616)

ip.addr==123.130.127.180 and ip.addr==172.20.156.35
阅读全文
今天查看了一下服务器,发现/var/log/btmp日志文件比较大(38M     /var/log/btmp),搜索一下,此文件是记录错误登录的日志,就是说有很多人试图使用密码字典登录ssh服务,此日志需要使用lastb程序打开。
通过此文件发现有几个ip总是试图登录,可以使用防火墙把它屏蔽掉。
命令如下:
iptables -A INPUT -i eth0 -s *.*.*.0/24 -j DROP
查看恶意ip试图登录次数:
lastb | awk ‘{ print $3}’ | sort | uniq -c | sort -n
删除这个日志:
rm -rf /var/log/btmp
touch /var/log/btmp

来自:http://blog.chinaunix.net/uid-20329764-id-5016539.html
背景:想把sublime改成vim,但是对于列模式可视块这种需要ctrl+v这种变成粘贴了,而产生冲突,最后还是修改回去了。
本文部分摘自:http://www.cnblogs.com/zuike/p/4402022.html
启用 Vim 模式

      在菜单栏中: Preferences -> Setting - User ,即可打开配置文件进行编辑,将 ignored_packages 项的[]里面内容清空:

"ignored_packages":
 [
 ]

  这样就启用了 Vim 模式,按 Esc 退出编辑模式,即进入了 Vim 模式。

     vim 模式快捷键说明请查看 http://feliving.github.io/Sublime-Text-3-Documentation/vintage.html

我的实践:
{
  "color_scheme": "Packages/User/SublimeLinter/Solarized (Dark) (SL).tmTheme",
  "font_size": 14,
  "ignored_packages":
  [
    "Markdown Preview",
    "Vintage"
  ],
  "show_encoding": true,
  "theme": "Soda Light 3.sublime-theme"
}

删除掉:

    "Markdown Preview",
    "Vintage"







启用 Ctrl 功能键及自定义功能键

  Preference->Setting User 添加如下内容:

  

"vintage_ctrl_keys": true
   这样就支持以下命令了:  

Ctrl+[ : Esc键的别名
Ctrl+R : Redo
Ctrl+Y : 向下滚动一行
Ctrl+E : 向上滚动一行
Ctrl+F : 下一页
Ctrl+B : 上一页
  如果觉得以上按键太复杂,可以自定义按键,找到 Vintage.sublime-package这个文件,其实是一个压缩包,改名zip后缀后解压得出文件,使用记事本打开 Default.sublime-keymap 文件,找到需要修改的快捷键进行修改即可。

  例如我需要将 ctrl+f 下一页修改成 f+f 下一页:

  搜索 “ctrl+f”,找到以下代码:

  

{ "keys": ["ctrl+f"], "command": "set_motion", "args": {
"motion": "move",
"motion_args": {"by": "pages", "forward": true, "extend": true }},
"context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}]
},



修改成

{ "keys": ["f","f"], "command": "set_motion", "args": {
"motion": "move",
"motion_args": {"by": "pages", "forward": true, "extend": true }},
"context": [{"key": "setting.command_mode"}, {"key": "setting.vintage_ctrl_keys"}]
},

这样,你 按esc退出编辑模式,按两下f键,即可实现向下翻页了,大家可以尝试下将 ctrl+b 向上翻页修改成 b+b 。
杨永(杨永) 08-19 15:14:56
tcpdump -vnn host  要挂载服务器的IP
杨永(杨永) 08-19 15:15:07
tcpdump -vnn host 192.168.151.201
杨永(杨永) 08-19 15:17:01
看情况得开下4046端口
杨永(杨永) 08-19 15:17:12
发给张腾让他开下
杨永(杨永) 08-19 15:18:02
10.71.182.97.55818 > 192.168.151.201.4046
卡在这了
杨永(杨永) 08-19 15:18:09
访问4046端口没权限 (ength 0)
    10.71.182.97.37218 > 192.168.151.201.4046: Flags [S], cksum 0xf506 (correct), seq 2144183597, win 14600, options [mss 1460,sackOK,TS val 1372580057 ecr 0,nop,wscale 9], length 0
——————————————————————————————————————————————
   10.71.182.97.48860 > 192.168.151.201.111: Flags [F.], cksum 0x0a06 (correct), seq 61, ack 33, win 29, options [nop,nop,TS val 1372580057 ecr 798553157], length 0
15:16:24.794577 IP (tos 0x0, ttl 64, id 19956, offset 0, flags [DF], proto TCP (6), length 60)
    10.71.182.97.37218 > 192.168.151.201.4046: Flags [S], cksum 0xf506 (correct), seq 2144183597, win 14600, options [mss 1460,sackOK,TS val 1372580057 ecr 0,nop,wscale 9], length 0
15:16:24.795999 IP (tos 0x0, ttl 57, id 8451, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.151.201.111 > 10.71.182.97.48860: Flags [.], cksum 0xe7ea (correct), ack 62, win 8760, options [nop,nop,TS val 798553157 ecr 1372580057], length 0
15:16:24.796009 IP (tos 0x0, ttl 57, id 8707, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.151.201.111 > 10.71.182.97.48860: Flags [F.], cksum 0xe7e9 (correct), seq 33, ack 62, win 8760, options [nop,nop,TS val 798553157 ecr 1372580057], length 0
15:16:24.796014 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.71.182.97.48860 > 192.168.151.201.111: Flags [.], cksum 0x0a04 (correct), ack 34, win 29, options [nop,nop,TS val 1372580058 ecr 798553157], length 0
15:16:25.794390 IP (tos 0x0, ttl 64, id 19957, offset 0, flags [DF], proto TCP (6), length 60)
    10.71.182.97.37218 > 192.168.151.201.4046: Flags [S], cksum 0xf11e (correct), seq 2144183597, win 14600, options [mss 1460,sackOK,TS val 1372581057 ecr 0,nop,wscale 9], length 0
15:16:27.794397 IP (tos 0x0, ttl 64, id 19958, offset 0, flags [DF], proto TCP (6), length 60)
    10.71.182.97.37218 > 192.168.151.201.4046: Flags [S], cksum 0xe94e (correct), seq 2144183597, win 14600, options [mss 1460,sackOK,TS val 1372583057 ecr 0,nop,wscale 9], length 0
背景:问个技术问题:  如果代码中数据库连接使用域名,域名解析切换的时候,PHP是立即生效,还是会有DNS缓存?我知道CURL有缓存,数据库连接不太清楚,hosts绑定也 不靠谱,也会出现缓存。还是会有DNS缓存的,这块我遇到过好几次,最好restart php-fpm,甚至重启,有一个哥们大致总结了一下,特转之。

1、Linux修改本机别名/etc/hosts的hostName后经常不生效解决
Linux修改本机别名/etc/hosts的hostName后经常不生效,

比如我们/etc/hosts的内容如下:

#192.68.1.10 message.xxx.com

192.68.1.11 message.xxx.com


但是ping

message.xxx.com还是指向192.68.1.10。


一般2种解决方案:


1). 重启,这是最直接最可靠稳定的一种方法,如果有些时候不方便重启,则可以使用第二种方法。

2). 修改/etc/sysconfig/network文件,将HOSTNAME修改成对应的别名,如下:



NETWORKING=yes

HOSTNAME=host1
修改后重启网络服务
service network restart
(本质是/etc/init.d/network)


3).
如果重启服务器后,还是不起作用,应该是本机的dns缓存引起的。



查看nscd是否启用:
ps -ef|grep nscd

直接关闭Linux nscd 缓存服务:

/etc/init.d/nscd stop

2、Linux的DNS

     linux本身是没有dns缓存的,想使用dns缓存的话需要自己安装一个服务程序NSCD(name service cache daemon).

    nscd缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL).

     安装:

  yum install nscd

    修改配置文件/etc/nscd.conf,开启dns缓存,修改这一行

  enable-cache hosts yes。

如果启用了nscd 服务,才有dns 缓存,否则是没有dns缓存的。




     开启 、停止、 重启服务
     service nscd start | stop | restart

nscd的配置:

通过编辑/etc/nscd.conf文件,在其中增加如下一行可以开启本地DNS cache:

enable-cache hosts yes

阿里云主机上的配置如下:

[plain] view plain copy print?
[root@iZ2571ykq ~]# cat /etc/nscd.conf  
#logfile        /var/log/nscd.log  
threads         6  
max-threads     128  
server-user     nscd  
debug-level     5  
paranoia        no  
enable-cache    passwd      no  
enable-cache    group       no  
enable-cache    hosts       yes  
positive-time-to-live   hosts   5  
negative-time-to-live   hosts       20  
suggested-size  hosts       211  
check-files     hosts       yes  
persistent      hosts       yes  
shared          hosts       yes  
max-db-size     hosts       33554432  
相关参数的解释如下:

logfile debug-file-name:指定调试信息写入的文件名。

debug-level value:设置希望的调试级别。

threads number:这是启动的等待请求的线程数。最少将创建5个线程。

server-user user:如果设置了该选项,nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项

enable-cache service <yes|no>:启用或禁用制定的 服务 缓存。

positive-time-to-live service value:设置 service 在指定缓存中正的项目(成功的请求)的TTL(存活时间)。 Value 以秒为单位。较大的值将增加缓存命中率从而减低平均响应时间,但是将增加缓存的一致性问题。

negative-time-to-live service value:设置 service 在指定缓存中负的项目(失败的请求)的TTL(存活时间)。 Value 以秒为单位。如果存在由不在系统数据库中的uid(用户ID)(例如在以root身份解包linux 内核源代码时)所拥有的文件将明显改善性能;应该维持较小的值以降低缓存一致性问题。

suggested-size service value:这是内部散列表的大小, value 应该保持一个素数以达到优化效果。

check-files service <yes|no>:启用或禁用检查属于指定 服务 的文件的改变。这些文件是 /etc/passwd, /etc/group, 以及/etc/hosts。







nscd的查看和清除




nscd缓存DB文件在/var/db/nscd下。
nscd -g  查看统计信息

清除 nscd缓存:
nscd -i passwd
nscd -i group
nscd -i hosts
当然也先删除缓存库或者停掉nscd服务:
rm -f /var/db/nscd/hosts

service nscd restart

或者是直接停止nscd 服务
service nscd stop。

  


来自:http://blog.csdn.net/hguisu/article/details/49278355
第一步:
在sublimetext的tools中developer下面的new plugin输入,保存为copyfile.py:
import sublime, sublime_plugin, os  
class FilenametoclipboardCommand(sublime_plugin.TextCommand):  
   def run(self, edit):  
      sublime.set_clipboard(os.path.basename(self.view.file_name()))  
      print(os.path.basename(self.view.file_name()))  

第二步:
保存到pakages/user/filenametoclipboard.py
class ListOpenFilesCommand(sublime_plugin.TextCommand):  
    def run(self, edit):  
        window = sublime.active_window()  
        views = window.views()  
        fileNames = ''  
        for view in views:  
            if view and view.file_name():  
                fileNames += os.path.basename(view.file_name())+'\n'  
        window.new_file().insert(edit, 0, "List of open files:\n\n"+fileNames)

第三步:preferences下面的key-bindings-user下面添加:
然后取key-bindings下加如
{ "keys": ["ctrl+alt+c"], "command": "filenametoclipboard" },
{ "keys": ["ctrl+alt+l"], "command": "list_open_files" }
保存,重启sublitext,即可,简单吧,呵呵

来自:http://blog.csdn.net/zhuboyan123/article/details/41249685
背景:想搭建一个Gitlab的两台机器进行都访问NAS网盘作为数据共享,而这样的好处是网盘内容是一致的,达到高可用,而同时对这个NAS网盘进行Git命令备份,防止网盘挂了,也能恢复,也是代码数据的高可用。
在阿里云上也申请了一个类似的NFS磁盘,但是挂载时是ROOT权限,我那个/home/git/.ssh想是git权限,于是提起工单:




售后工程师 :    您好,这样不支持,mount后的目录权限有ans服务端决定,目前不支持修改。  
2017-07-06 23:42:54
售后工程师 :    您好,技术反馈这个是nas服务端决定的,目前我方设置的权限是777 root:root  

经实践:
mkdir -p /home/git/mnt
ll  -d /home/git/mnt/
drwxr-xr-x 2 root root 4096 Jul  8 23:52 /home/git/mnt/  #Linux root用户id号是0
挂载NFS:
mount -t nfs -o vers=3,tcp 10.71.15.98:/Vol-01/backup /home/git/mnt
ll  -d /home/git/mnt/
drwxr-xr-x 11 1000 1000 114688 Jun 11 20:04 /home/git/mnt/
变成1000了,这个值是NFS服务端设置的,但是阿里云是0,也就不是Git账户的ID了。它是0,root用户id号是0,不敢该RootID值为非0值。

推测其配置如下:
打开/etc/exports文件,在末尾加入:
/home/kevin *(rw,sync,no_root_squash)
注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:
/home/kevin:要共享的目录
* :允许所有的网段访问
rw :读写权限
sync:资料同步写入内在和硬盘
no_root_squash:nfs客户端共享目录使用者权限


nfs中exports中no_root_squash的意义:
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。

增加no_root_squash可以轻松获得NFS主机共享目录读写权限.

showmount -e
Export list for mainboard_virtualbox_docker_10_10_0_106:
/backup 10.10.0.91,10.10.0.90,10.10.0.89,10.10.0.88,10.10.0.77,10.10.0.72,10.10.0.71,10.10.0.70,10.10.0.69,10.10.0.67,10.10.0.66,10.10.0.65,10.10.0.64,10.10.0.63,10.10.0.62,10.10.0.61,10.10.0.60,10.10.0.59,10.10.0.58,10.10.0.57,10.10.0.56,10.10.0.46,10.10.0.45,10.10.0.44,10.10.0.33

配置完需要nfs重启一下
service nfs reload
systemctl restart nfs
=================================================================================
在文章后面有讲如何搭建NFS服务器:http://jackxiang.com/post/8299/
阅读全文
软件无法启动
常见原因1: 未获得管理员权限
解决方法:右 键点击图标,选择以管理员身份运行。如果觉得每次这样操作很麻烦,可以直接在“我的电脑”点击右键选择管理。打开界面后,选择本地用户和组,单击用户,选 择administrator账户即可。打开administrator账户之后,把帐户已禁用选项关闭,重启电脑后即可获得管理员最高权限。
点击在新窗口中浏览此图片

摘自:http://tech.china.com/news/11146420/20160811/23265628.html
MAC下面的windows10就不行因为虚拟出来的不支持虚拟化BIOS,Hyper-V:要打开虚拟化支持就可以了。但前提是电脑要支持虚拟化。重启进入BIOS打开虚拟化支持。可能不同的bios可能选项不同,如图的是在configuration标签中的  intel virtual technology选项,将原来的 disabled改为enabled,按F10保存修改退出。
步骤:https://www.cnblogs.com/shengChristine/p/9284969.html
Win8的Hyper-V无法连接到本地服务器:https://jingyan.baidu.com/article/5d368d1e0150803f61c05779.html



Q:Win10 Build9841 64位系统。没有建立虚拟机的菜单,怎么办?
A:右上角那个“连接到服务器”,你要先把本机添加成hyper-v服务器才能创建虚拟机。



Q:选连接到本地计算机后,出现Hyper-V开启失败无法连服务器/无效类,怎么办?

微软也有一个本身自带的虚拟机叫做Hyper-V,但是并不好用。如题,打开Hyper-V,提示:尝试连接“XXX”时出错。请检查……此服务器。计算机"XXX"上的操作失败:无效类。参考:

http://jingyan.baidu.com/article/8275fc866ecb1f46a03cf6a1.html


如果还是不行?有可能是这样的:
那很可能是因为你的系统不是64位的,注意32位系统是无法在本地运行Hyper-V的!
此时建议改用VMware Workstation。
有用的插件:
SublimeCodeIntel 让sublime跳转到变量定义的地方:
http://www.xuebuyuan.com/1122417.html
需要在用户目录添加配置文件。linux就是创建 ~/.codeintel/config 文件,具体readme,win也是用户目录下
sublimecodeintel 安装后需要配置,文件:插件目录/.codeintel/config 中 增加

"PHP": {
        "php": 'D:\SaeServer\php\php.exe',
        "phpExtraPaths": ['D:\SaeServer\php\stdlib'],
        "phpConfigFile": 'D:\SaeServer\apache\php.ini'
    },


ctags。 这个插件能跨文件跳转,跳转到指定函数声明的地方。 使用package control 搜索ctags 进行安装(安装ctags插件就可以了, 还有一个 CTags for PHP 插件没什么用)。注意安装好插件后要需要安装ctags命令。window 下载 ctags.exe  http://vdisk.weibo.com/s/7QZd7 。 将ctags.exe文件放在一个环境变量能访问到的地方。打开cmd, 输入ctags,如果有这个命令,证明成功了。 ubuntu下安装运行命令:sudo apt-get install exuberant-ctags 。
    然后在sublime项目文件夹右键, 会出现Ctag:Rebuild Tags 的菜单。点击它,然后会生成.tags的文件。也可:
    ctags -R -f .tags生成  .tags文件,然后在sublime下就可以用ctrl+t ctrl+t来跳转,用ctrl+t ctrl+b来返回到原来位置。 From:http://www.cnblogs.com/cchun/p/3794018.html

ctags

生成.ctags ctrl + t + r  同时t r。

跳转到声明 ctrl + t + t ,ctrl+> ,ctrl+shift+left_click (按两次t,> 这个在笔记本键盘上得按下shift上档键的点上面才有> ,ctrl+shift+.)
返回 ctrl + t + b ,ctrl+< ,ctrl+shift+right_click         (t b两次,或直接按ctrl+shift+,),   ,这个就是, 上面的<符号。


sublime配置全攻略:
http://blog.csdn.net/w6611415/article/details/7725566/

以下来处:http://www.cnblogs.com/lchg/p/5304168.html
对你有助请点赞,请顶,不好请踩------送人玫瑰,手留余香!
目录放错地了是关键,目录在:D:\Program Files\sublime\Data\Packages\sublime-phpcs-master ,win7好像真没有这个目录。
C:\Users\admin\AppData\Roaming\Sublime Text 3\Packages 放这儿才是:
"D:\Program Files\SublimeText3\Data\Packages\User\phpcs.sublime-settings"
但是window10的sublime路径的确在:
阅读全文
分页: 35/272 第一页 上页 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 下页 最后页 [ 显示模式: 摘要 | 列表 ]