http://winmerge.org/
使用 CMAKE_INSTALL_PREFIX 来指定。
方法1:
[plain] view plain copy print?
cmake -DCMAKE_INSTALL_PREFIX=/usr ..  

方法二:
修改cmake文件,加入:
SET(CMAKE_INSTALL_PREFIX < install_path >)  

要加在 PROJECT(< project_name>) 之后。


摘录:
Default Build and Installation:

Installing vidstab library:

cd path/to/vid.stab/dir/
cmake .
make
sudo make install
默认会安装到:
1).h文件:
/usr/local/include/vid.stab
2).so文件:
/usr/local/lib/libvidstab.so


于是,想安装到指定目录,经rpmbuild打包修改成:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ffmpeg



来自:http://blog.csdn.net/caspiansea/article/details/53526725
零、少了20G的查看:
df -h
Filesystem                     Size    Used   Avail Capacity  Mounted on
/dev/ufsid/59a7effe7885633c     19G    5.6G     12G    31%    /
devfs                          1.0K    1.0K      0B   100%    /dev

一、gpart show 查看磁盘空间情况,可以看到磁盘大小是 40G,但是FreeBSD系统盘空间有20G,少了20G。
Welcome to Alibaba Cloud Elastic Compute Service !

root@iZ2ze0upl89i15wngnott5Z:~ # gpart show [img]=>      63  83886017  vtbd0  MBR  (40G)
        63         1         - free -  (512B)
        64  41942975      1  freebsd  [active]  (20G)
  41943039  41943041         - free -  (20G)

二、gpart recover ada0 恢复磁盘的空闲大小,然后再执行 gpart show 就可以看到磁盘的空闲空间了。
gpart recover vtbd0
vtbd0 recovering is not needed

三、gpart resize -i 3 -a 4k -s 40G vtbd0
gpart resize -i 1 -a 4k -s 39G vtbd0   #注意编号是1: -i 1
vtbd0s1 resized

resize磁盘,我这里是50G的磁盘,但是不只能直接写50G,因为1G被swap占用了,512K被启动分区占用,最多只能使用48G,如果扩容到其他的大小,都需要在磁盘的总大小上减掉2G

growfs /dev/ada0p3
growfs /dev/vtbd0s1
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/vtbd0s1 from 20GB to 39GB? [yes/no] yes
growfs: /dev/vtbd0s1: Operation not permitted
扩容文件系统,执行完成以后会提示是否同意从 19G 扩容到 48G,以及一些风险提醒,直接Yes。


解决办法:freebsd resize partition
将growfs当做service来执行
service growfs onestart
实践OK如下:

4 、df -h看下能看到成功扩容。

aliyun do the resize the freebsd size:
attachment.php?fid=475[/img]

service growfs onestart
Growing root partition to fill device
vtbd0s1 resized
growfs: requested size 40GB is not larger than the current filesystem size 40GB

https://help.aliyun.com/document_detail/35099.html
因为Service php-fpm或mysql及nginx出现Freebsd重启不了,于是这样写就Ok了:
vi /etc/rc.conf


/etc/rc.d的启动需要在 /etc/rc.conf里打开,用Service就能启动,前面出问题不知道啥原因:
/etc/rc.d/php-fpm




你可能会因为种种原因而想在 FreeBSD 服务器上彻底禁用 sendmail,那么你可以尝试这样∶

1,如果你不想重新启动服务器的话(应急措施)∶

# killall sendmail
2,如果你想让 sendmail 在启动的时候就不做任何行为的话,你需要把以下这几行加入到 /etc/rc.conf 中∶

sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
加入之后需要重新启动服务器让设置生效。


来自:http://www.chinaz.com/server/2010/0226/107257.shtml


=============禁用freebsd ntpd 时间同步================
vi /etc/rc.conf
ntpd_enable="NO"

1.首先在rc.conf里面添加:ntpd_enable=”YES”。
2.修改/etc/ntp.conf
server 0.freebsd.pool.ntp.org iburst maxpoll 9
server 1.freebsd.pool.ntp.org iburst maxpoll 9
server 2.freebsd.pool.ntp.org iburst maxpoll 9
其他全部注释掉。
3.启动ntpd之前需要手动运行ntpdate pool.ntp.org先同步一下时间,避免因为系统时间与时间服务期时间相差太大导致渐次逼近无法实施而造成的ntpd运行失败。
4.运行/etc/rc.d/ntpd start启动服务。
5.可以通过ntpq -p命令来检查当前ntpd服务状态,注意看输出的表格中st这一项值,必须小于16,16代表无法连接时间服务器,如果都为16,则对时不能完成,需要检查网络原因。
6.ntpd服务需要开放对udp端口123的访问。

来自:http://www.voidcn.com/article/p-ebfmvhcn-ve.html

disable syslogd:
echo syslogd_enable=NO >> /etc/rc.conf

syslogd_enable="NO"  # vi /etc/rc.conf
来自:https://superuser.com/questions/626305/disabling-syslogd-in-freebsd

devd进程禁用开机启动:
devd_enable="NO" # vi /etc/rc.conf

iftop在Port下的安装:
cd /usr/ports/net-mgmt/iftop/ && make install clean

Freebsd下面加大SWAP实践OK:


/etc/fstab
md99       none         swap    sw,file=/swapfile,late  0   0

手工生效,否则用这个swapinfo -m就会发现只有1M:
mdconfig -a -t vnode -f  /swapfile -u 0 && swapon /dev/md0
swapinfo -m
Device          1M-blocks     Used    Avail Capacity
/dev/md0              512        0      512     0%
查看新增加的swap是否生效:top
CPU:  0.0% user,  0.0% nice,  0.0% system,  0.4% interrupt, 99.6% idle
Mem: 8616K Active, 11M Inact, 45M Wired, 4396K Buf, 1900M Free
Swap: 512M Total, 512M Free
From:http://darren2000.pixnet.net/blog/post/2180080-freebsd%E4%B8%8A%E6%96%B0%E5%A2%9Eswap%E7%A9%BA%E9%96%93
https://www.cyberciti.biz/faq/create-a-freebsd-swap-file/

Freebsd下实时查看各种信息:
systat 能实时查看各种信息
systat -pigs 默认值CPU
systat -iostat 硬盘IO
systat -swap 交换分区
systat -mbufs 网络缓冲区
systat -vmstat 虚拟内存
systat -netstat 网络
systat -icmp ICMP协议
systat -ip IP协议
systat -tcp TCP协议
systat -ifstat 网卡

显示PCI总线设备信息
pciconf -lv
显示内核加载的模块
kldstat -v
显示指定模块
klsdstat -m ipfilter

即插即用设备
pnpinfo

显示设备占用的IRQ和内存地址
devinfo -u

cpu
sysctl -a|grep cpu
sysctl -a|grep sched 查看使用的调度器,我编译的是ULE

虚拟内存
vmstat

硬盘
gstat
systat -iostat
iostat

网卡
ifconfig
systat -ifstat

网络
netstat
sockstat
tcpdump
trafshow
systat -mbufs
systat -icmp
systat -ip
systat -tcp

只是看流量的话,用systat -netstat
https://my.oschina.net/u/187928/blog/37049
背景:TCP高并发时用 netstat反应不过来,用ss,ss --help查不到下面的参数,得用 man ss查看。



Linux下的SS查看Linux的Http端口完成情况


Netid  Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32331                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32329                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32347                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32322                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32346                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32321                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32327                
tcp    0      0      101.200.228.135:http                 61.150.114.230:32328                
tcp    0      0      101.200.228.135:http                 61.150.114.230:23159                
tcp    0      0      101.200.228.135:http                 1.85.216.135:50864                
tcp    0      0      101.200.228.135:http                 140.205.205.4:63844  



#ss dst  10.51.77.34
Netid State      Recv-Q Send-Q          Local Address:Port                           Peer Address:Port                
tcp   ESTAB      0      0                 10.51.77.34:6379                            10.51.77.34:53590                
tcp   ESTAB      0      0                 10.51.77.34:6379                            10.51.77.34:53586                
tcp   ESTAB      0      0                 10.51.77.34:53586                           10.51.77.34:6379                
tcp   CLOSE-WAIT 1      0                 10.51.77.34:43714                           10.51.77.34:6379                
tcp   ESTAB      0      0                 10.51.77.34:53590                           10.51.77.34:6379                
tcp   CLOSE-WAIT 1      0                 10.51.77.34:43718                           10.51.77.34:6379


加个源端口过滤一下(sport = 6379,等号之间得有空格):

Netid State      Recv-Q Send-Q          Local Address:Port                           Peer Address:Port                
tcp   ESTAB      0      0                 10.51.77.34:6379                            10.51.77.34:53590                
tcp   ESTAB      0      0                 10.51.77.34:6379                            10.51.77.34:53586


查看源地址Http端口的一个情况:

tcp   ESTAB      0      0             101.200.228.135:http                         101.81.172.212:41352                
tcp   ESTAB      0      0             101.200.228.135:http                           36.110.2.171:35007                
tcp   ESTAB      0      0             101.200.228.135:http                        115.236.174.162:55497                
tcp   ESTAB      0      0             101.200.228.135:http                           36.110.2.171:33458
https://morvanzhou.github.io
背景:搞一些Nginx的扩展啥的都用那个hiredis进行静态编译后,编译进Nginx,这儿先研究一下这个Redis的C连接认证以及取数据先。

代码@/usr/local/src/hiredis:

编译一下:
gcc redisTest.c /home/test/rpmbuild/BUILD/ngx_http_monitor_module-2.2.0/hiredis/libhiredis.a -I/home/test/rpmbuild/BUILD/ngx_http_monitor_module-2.2.0/
关于头文件之 linux下C include搜索的路径:http://blog.csdn.net/chosen0ne/article/details/7210946
编译静态的resis静态链接库make static,别make 会生成动态连接库,如果只指定 -L路径,会弄成了动态编译,有依赖SO的情况,静态文件大点无所谓了:
  cd hiredis
  make clean
  make static
静态编译出来就是这样的:
ldd a.out
        linux-vdso.so.1 =>  (0x00007ffeec95e000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003771400000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003771000000)

执行:
./a.out
Connect to redisServer Success
Authentication success
Succeed to execute command[set stest1 value1]
The length of 'stest1' is 6.
Succeed to execute command[strlen stest1]
The value of 'stest1' is value1
Succeed to execute command[get stest1]
Succeed to execute command[get stest2]


参考:http://blog.csdn.net/mniwc/article/details/12851837
outlook2013怎么配置提醒对方查察回覆邮件?有时候给对方发邮件的时候,但愿能在邮件到期之前查察,这时候我们就可以在发邮件的时候配置邮件提醒,详细的配置进程请看下文具体先容

用outlook给收件人发邮件,有时候但愿到期之前再次提醒对方查察回覆邮件,该怎么配置呢?如何通过outlook2013配置邮件回覆到期提醒。

From:http://m.jb51.net/softjc/412733.html
背景:有的人一台服务搞好几个PHP版本,麻烦,建议用Docker隔离~
由于系统环境变量之前同事安装的laravel是5.1...php默认的环境变量是:

不想破话原有环境变量,因为现在新的项目是laravel5.4.。。所以在用默认composer require安装时提示php版本过低滴问题
问题是这样滴:

默认composer安装会调用原来的php5.5环境变量,所以这里安装会出现兼容问题
新项目使用的是php7.1

那么如何在多个php版本中互不干扰安装composer呢,折腾了半个多小时,
现在说下解决办法吧:
1:下载composer.phar,官网有直接下载的链接,https://getcomposer.org/download/

2:composer.phar 复制到项目根目录,比如我的是:/home/www/web

3:执行 /usr/local/php7/bin/php composer.phar update (这里我的安装路径是/usr/local/php7/bin/php,不一定适合你额,请对号入座即可吧)

4:安装依赖包:/usr/local/php7/bin/php composer.phar require laravel/scout

OK,大功告成!


高效、有效、实效
狗是人类朋友,他为主人看家护院;如陌生人进入它的领地,它会狂吠;如果主人出来叫喊一声,它立马摇头摆尾蹲在一旁。 这里我也提醒养狗的主人,请为了大家安全;请看好你家的看门狗,一但咬伤人;你将负全责。

假如我们遇见狗(不是藏獒、牧羊犬烈犬,这类犬主人应用链子锁好)你千万别跑,你一跑它以为你是贼;狗眼看人它会毫不犹豫追你咬你;

如果你就地一蹲不动,捡一棍子或砖头,狗立马转身躲在一旁叫吠;你这时可以慢慢的离开,一段距离后;就安全了。请牢记:千万别跑!它毕竟是动物;它也怕揍。

农村人有这样一句俗话,狗怕摸,狼怕错,意思狗追你的时候,弯腰或者蹲下,它以为你拿地上的东西,要打它,它就跑了,这就是狗的天性。狼追你的时候,你停它停,你走它走,手中有树条的话。手一举起。狼夹着尾巴就跑了。这就是狼和狗的区别。特别主意的,一人进山,有狼的地方。带个鞭子最好。狼最怕举起手中的鞭子。
孩子发热了怎么办?只要孩子发热时精神不是很差,温度没超过39.5℃,家长也可以自己处理。
孩子发烧有个规律:如果发烧时手脚冰冷、面色苍白,则说明孩子的体温还会上升;而如果孩子手脚变暖,出汗了,就说明体温不会再上升。

家长遇到孩子发热时的处理方法有以下几种:
1.一岁半以内的婴幼儿,前囟门还未完全闭合,家长可以在孩子睡着后,用手心捂住孩子的前囟门,一直捂到孩子的头微微出汗,这时再看小婴儿,鼻子通了,呼吸平稳了,温度也降下来了。这时,家长再把宝宝叫醒,多给喂一些温开水或红糖水,宝宝很快就能恢复如初。我儿子一岁前有几次感冒发烧都是用这种方法治好的,最短的一次只用了15分钟,最长的一次捂了一个半小时,我的手都麻了,才见儿子头上冒汗。所以在给宝宝用手心捂前囟门时,家长千万不要着急,最好是由孩子爸爸来操作,男士的热量大,宝宝容易出汗。
2.多数孩子还是受凉感冒引起的发热,发热时手脚发冷、舌苔发白、面色苍白、小便颜色清淡,家长可以用生姜红糖水给孩子祛寒,效果是不错的,如果生姜红糖水里再加上2~3段切成一寸长的葱白,效果会更好。若孩子怕辣,可以在给孩子煮的稀饭里面加上两片生姜、两段葱、几滴醋,煮好后,去掉姜、葱,喂给孩子吃,能祛寒、发汗,退热的效果不错,孩子也愿意吃。家长可以一天给孩子喂2~3次,孩子退热后就不要加葱了,舌苔不再发白时,姜也可以不放。
3.如果孩子发烧时手脚不冷,但面色发红,咽喉肿痛,舌苔黄或红,小便颜色黄、气味重,眼睛发红,则说明孩子身体内热较重,就不能喝生姜红糖水了,家长应该让孩子大量喝温开水,也可以在水中加少量的盐,冲成淡盐开水给孩子喝,能消内热。孩子只有大量喝水,多解几次小便,让身体的内热随着尿液排出,体温才会下降,上火的症状也才会好转。

4.如果孩子白天、晚上都发热,则说明体内有内热或炎症,家长可以用苦瓜切成薄片,取10片,加水煮5~10分钟后给孩子喝,一天2~3次,到孩子白天不发热时,就不要再喝了。同时尽量给孩子多喝水,吃新鲜的水果,饮食要相对清淡,不能吃鱼、虾,只能吃其他肉类及蔬菜。
5.如果孩子白天体温正常,一到傍晚就升高,到早晨又退热,说明孩子发热是身体内寒重及亏虚引起的,这时仍要给孩子喝生姜红糖葱水,最好再配合艾叶水泡脚祛寒,而且可以让孩子喝肉汤和淡淡的鸡汤,固元膏可以一天吃2次,一次小半勺,给孩子及时补充营养,同时让孩子多喝水。


/etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]


From:http://www.huo119.com/post/738.shtm
下面这个没有用:http://jingshengsun888.blog.51cto.com/1767811/1169111
背景: 一批老机器出现还没打开Nginx等负载就1了,一看是一个进程点用CPU几乎100%了,于是查了下网上,有这样一个说法。
kipmi0进程CPU占用率的问题

支持 IPMI 的服务器主板上运行 Linux,有的时候经常容易出现 top 命令列表中显示 kipmi0 进程的 CPU 占用接近 100%,禁用开机加载 IPMI 驱动才不会出现。

IPMI 驱动 CPU 占用说明
kipmi 导致的 CPU 使用增长是很常见的,这个硬件设备接口不是中断设备,所以驱动必须轮询设备的状态和消息。这个轮询显示成一个繁忙的CPU。

kipmi内核线程的优先级非常低(一般为 19),所以不会影响系统中的其他进程。甚至当轮询进入死循环(通常是它认为 BMC 有活跃事件需要它处理),它仍然会在任何进程需要CPU资源时放弃占用资源。

CPU通常视 kipmi0 内核线程为 IDLE 时间,kipmi0在没有其他任务运行时运行,并且是系统最低优先级的进程。

降低 CPU 占用的方法
可以通过以下方法使得 kipmi0 内核线程只使用 10% 的 CPU:

echo 100 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us
如果想使此改动永久生效,那可以修改 ipmi_si 内核模块的加载参数,例如增加 /etc/modprobe.d/ipmi.conf 配置文件:

# Prevent kipmi0 from consuming 100% CPU
options ipmi_si kipmid_max_busy_us=100


  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                    
  182 root      39  19     0    0    0 R 100.0  0.0  55364:09 kipmi0

实践是临时修改:
echo 100 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us
一会再看就会发现降下来了:
uptime
14:51:57 up 58 days, 22:50,  1 user,  load average: 0.00, 0.00, 0.12

来自:https://wiki.zohead.com/%E6%8A%80%E6%9C%AF/Linux/kipmi0%E8%BF%9B%E7%A8%8BCPU%E5%8D%A0%E7%94%A8%E7%8E%87%E7%9A%84%E9%97%AE%E9%A2%98.md
背景:做同步有Rsyncd,有配置版本的sersync,使用过,这儿介绍了一个新的东西:lsyncd,值得尝试。
参考:http://www.datura.me/2017/09/22/lsyncd%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E5%90%8C%E6%AD%A5%E7%AE%80%E8%A6%81%E8%AF%B4%E6%98%8E/
Sync里面是定义同步参数,指定默认以直接模式direct运行。Lsyncd支持rsync、rsyncssh、direct三种模式。
default.rsync,
sync{
    default.rsync, --default.rsyncssh,or default.direct,
    source ="/usr/local/src/aa",

实践如下:
mkdir -p /usr/local/lsyncd-2.1.5/etc/
mkdir -p /usr/local/lsyncd-2.1.5/var/
touch /usr/local/lsyncd-2.1.5/var/lsyncd.log      
chmod -R 777 /usr/local/lsyncd-2.1.5/var/lsyncd.log
chmod -R 777 /usr/local/lsyncd-2.1.5/var
tail -f /usr/local/lsyncd-2.1.5/var/lsyncd.log
Thu Oct 26 16:36:04 2017 Normal: recursive startup rsync: /backup/yum.qr.cntv.net/ -> /data/www/
Thu Oct 26 16:36:04 2017 Exec: /usr/local/rsync/bin/rsync [--delete] [--ignore-errors] [-gpzsoltD] [--bwlimit=2000] [-r] [/backup/yum.qr.cntv.net/] [/data/www/]


2.1 安装lsyncd
安装lsyncd极为简单,已经收录在ubuntu的官方镜像源里,直接通过apt-get install lsyncd就可以。
在Redhat系(我的环境是CentOS 6.2 x86_64 ),可以手动去下载 lsyncd-2.1.5-6.fc21.x86_64.rpm,但首先你得安装两个依赖yum install lua lua-devel。也可以通过在线安装,需要epel-release扩展包:

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install lsyncd
源码编译安装
从源码编译安装可以使用最新版的lsyncd程序,但必须要相应的依赖库文件和编译工具:yum install lua lua-devel asciidoc cmake。

从 googlecode lsyncd 上下载的lsyncd-2.1.5.tar.gz,直接./configure、make && make install就可以了。

从github上下载lsyncd-master.zip 的2.1.5版本使用的是 cmake 编译工具,无法./configure:

# uzip lsyncd-master.zip
# cd lsyncd-master
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd-2.1.5
# make && make install
我这个版本编译时有个小bug,如果按照INSTALL在build目录中make,会提示:

[100%] Generating doc/lsyncd.1
Updating the manpage
a2x: failed: source file not found: doc/lsyncd.1.txt
make[2]: *** [doc/lsyncd.1] Error 1
make[1]: *** [CMakeFiles/manpage.dir/all] Error 2
make: *** [all] Error 2
解决办法是要么直接在解压目录下cmake,不要mkdir build,要么在CMakeList.txt中搜索doc字符串,在前面加上${PROJECT_SOURCE_DIR}。

2.2 lsyncd.conf
下面都是在编译安装的情况下操作。

2.2.1 lsyncd同步配置
# cd /usr/local/lsyncd-2.1.5
# mkdir etc var
# vi etc/lsyncd.conf
settings {
    logfile      ="/usr/local/lsyncd-2.1.5/var/lsyncd.log",
    statusFile   ="/usr/local/lsyncd-2.1.5/var/lsyncd.status",
    inotifyMode  = "CloseWrite",
    maxProcesses = 7,
    -- nodaemon =true,
    }

sync {
    default.rsync,
    source    = "/tmp/src",
    target    = "/tmp/dest",
    -- excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",
    rsync     = {
        binary    = "/usr/bin/rsync",
        archive   = true,
        compress  = true,
        verbose   = true
        }
    }
到这启动 lsycnd 就可以完成实时同步了,默认的许多参数可以满足绝大部分需求,非常简单。

2.2.2 lsyncd.conf配置选项说明
settings
里面是全局设置,--开头表示注释,下面是几个常用选项说明:

logfile 定义日志文件
stausFile 定义状态文件
nodaemon=true 表示不启用守护模式,默认
statusInterval 将lsyncd的状态写入上面的statusFile的间隔,默认10秒
inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程
maxDelays 累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到
sync
里面是定义同步参数,可以继续使用maxDelays来重写settings的全局变量。一般第一个参数指定lsyncd以什么模式运行:rsync、rsyncssh、direct三种模式:

default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
default.direct :本地目录间同步,使用cp、rm等命令完成差异文件备份;
default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证
source 同步的源目录,使用绝对路径。
target 定义目的地址.对应不同的模式有几种写法:
/tmp/dest :本地目录同步,可用于direct和rsync模式
172.29.88.223:/tmp/dest :同步到远程服务器目录,可用于rsync和rsyncssh模式,拼接的命令类似于/usr/bin/rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET,剩下的就是rsync的内容了,比如指定username,免密码同步
172.29.88.223::module :同步到远程服务器目录,用于rsync模式
三种模式的示例会在后面给出。
init 这是一个优化选项,当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
delay 累计事件,等待rsync同步延时时间,默认15秒(最大累计到1000个不可合并的事件)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步。(可合并的意思是,15s内两次修改了同一文件,最后只同步最新的文件)
excludeFrom 排除选项,后面指定排除的列表文件,如excludeFrom = "/etc/lsyncd.exclude",如果是简单的排除,可以使用exclude = LIST。
这里的排除规则写法与原生rsync有点不同,更为简单:
监控路径里的任何部分匹配到一个文本,都会被排除,例如/bin/foo/bar可以匹配规则foo
如果规则以斜线/开头,则从头开始要匹配全部
如果规则以/结尾,则要匹配监控路径的末尾
?匹配任何字符,但不包括/
*匹配0或多个字符,但不包括/
**匹配0或多个字符,可以是/
delete 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值,请参考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。
rsync
(提示一下,delete和exclude本来都是rsync的选项,上面是配置在sync中的,我想这样做的原因是为了减少rsync的开销)

bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)
compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
perms 默认保留文件权限。
其它rsync的选项
其它还有rsyncssh模式独有的配置项,如host、targetdir、rsync_path、password_file,见后文示例。rsyncOps={"-avz","--delete"}这样的写法在2.1.*版本已经不支持。

lsyncd.conf可以有多个sync,各自的source,各自的target,各自的模式,互不影响。

2.3 启动lsyncd
使用命令加载配置文件,启动守护进程,自动同步目录操作。

lsyncd -log Exec /usr/local/lsyncd-2.1.5/etc/lsyncd.conf

摘自:https://segmentfault.com/a/1190000002737213
如何使用zsh

如果是linux 系统,首先你需要安装 zsh

sudo yum install zsh
或者
sudo apt-get install zsh

来自:http://yijiebuyi.com/blog/b9b5e1ebb719f22475c38c4819ab8151.html
1、Linux 服务器因 CPU 温度过高自动重启
http://www.s2.cn/news.php?id=33

2、Linux服务器不明原因重启了,怎么查找原因
http://bbs.51cto.com/archiver/tid-861470.html

3、重启的信息可以通过
dmesg来看
系统的log一般都是记录在/var/log/messages里
命令:
cat /var/log/messages | grep 'reboot'

4、linux启动日志: /var/log/boot.log


实践如下:

[root@xiyou-vedio_encode_bj_sjs_10_71_11_22 ~]#  last reboot
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 10:37 - 10:41  (00:03)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 09:57 - 10:41  (00:43)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:58 - 10:41  (01:43)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:52 - 10:41  (01:48)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:36 - 10:41  (02:04)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:07 - 10:41  (02:34)


[root@xiyou-vedio_encode_bj_sjs_10_71_11_22 ~]# cal
     August 2017    
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


linux启动日志: /var/log/boot.log
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

来自:http://blog.sina.com.cn/s/blog_56d8ea900101cytr.html
问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象。

运行结果:
a c
eg:var obj=parseQueryString(url);

创建对象的三种形式:

一:
var Person=new Object();
Person.name="Sun";
Person.age=24;

二:
var Person=new Object();
Person["name"]="Sun";
Person["age"]=24;

三:
对象字面量表达式
var Person={
name: "Sun",
age: 24
}

PS:
1、在这个例子中,比较适合使用第二种形式,向obj中添加元素
2、split("&") , 如果url只有一个参数的时候,没有“&”的时候,也不会报错,只会返回array[0]
function parseQueryString(url) {
    var obj = {};
    var keyvalue = [];
    var key = "",
        value = "";
    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
    for (var i in paraString) {
        keyvalue = paraString[i].split("=");
        key = keyvalue[0];
        value = keyvalue[1];
        obj[key] = value;
    }
    return obj;
}

以下介绍了JS根据key值获取URL中的参数值及把URL的参数转换成json对象,js通过两种方式获取url传递参数,代码
示例一:
//把url的参数部分转化成json对象
parseQueryString: function(url) {
     var reg_url = /^[^/?]+/ ? ([/w/W] + ) $ / ,
         reg_para = /([^&=]+)=([/w/W]*?)(&|$|#)/g,
         arr_url = reg_url.exec(url),
         ret = {};
     if (arr_url && arr_url[1]) {
         var str_para = arr_url[1],
             result;
         while ((result = reg_para.exec(str_para)) != null) {
             ret[result[1]] = result[2];
         }
     }
     return ret;
}
// 通过key获取url中的参数值
getQueryString: function(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
}
示例二:
js通过两种方法获取url传递参数:
js获取url传递参数方法一:
这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET
函数:
function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
        }
    }
    return theRequest;
}

然后我们通过调用此函数获取对应参数值:
var Request = new Object();
Request = GetRequest();
var 参数1,参数2,参数3,参数N;
参数1 = Request[''参数1''];
参数2 = Request[''参数2''];
参数3 = Request[''参数3''];
参数N = Request[''参数N''];
以此获取url串中所带的同名参数
js获取url传递参数方法二 正则分析法:
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return (r[2]);
    return null;
}
alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));
alert(GetQueryString("参数名3"));
其他参数获取介绍:
//设置或获取对象指定的文件名或路径。
alert(window.location.pathname);
//设置或获取整个 URL 为字符串。
alert(window.location.href);
//设置或获取与 URL 关联的端口号码。
alert(window.location.port);
//设置或获取 URL 的协议部分。
alert(window.location.protocol);
//设置或获取 href 属性中在井号“#”后面的分段。
alert(window.location.hash);
//设置或获取 location 或 URL 的 hostname 和 port 号码。
alert(window.location.host);
//设置或获取 href 属性中跟在问号后面的部分。
alert(window.location.search);

From:https://www.w3cschool.cn/json/1koy1piy.html
背景:用Linux的信号Signal实现发信号给进程,是一种进程间通讯的办法,主要用来重新加载配置、重启服务、杀死进程、进程间通讯等。
下面就是一个通过向进程发送Signal信号以该进程退出,重新起了一新的子进程,用到了kill -HUP PID,主要是学习HUP信号的C语言编码方法。


gcc 编译:
gcc nohup.c -o b.out

运行:
./a.out


ps aux|grep b.out
root      4919  0.0  0.1   4296  1328 pts/6    S+   20:22   0:00 ./b.out

kill -HUP 4919

#ps aux|grep b.out
root      4958  0.0  0.1   4296  1324 pts/6    S    20:23   0:00 ./b.out

From:http://www.jb51.net/article/37422.htm
用Win+R 打开运行界面,输入mmc:
点击在新窗口中浏览此图片
在打开的控制台界面,从菜单中选择“文件”-“添加或删除管理单元”,然后从“可用的管理单元”添加“远程桌面”到“所选的管理单元”中,点击“确定”:
点击在新窗口中浏览此图片
最后,右键点击“远程桌面”-“添加新连接”,输入需管理的客户端IP地址即可访问。
=======================================================================================

背景:10台Windows Server 2012上面装上盗版的Loadrunner,想假装很专业的做一下接口测试。要根据自己的32位还是64位下载安装后,那个控制面板里的打开和关闭Windows功能才有角色管理工具->远程桌面服务工具。

对于远程管理Windows 机器来说,远程连接可能是用得最频繁的。过去,我总是把远程连接保存为.rdp 文件,以方便双击后自动连接。如果有多台机器需要管理,可以放在某个目录中,但总觉得这样的方式很笨。直到今天,在客户现场,无意中发现MMC 中是可以加入“远程管理”功能的。回来找资料看了一下,觉得还不错,特适用于同时连接多台机器的情况。

一、界面
描述前,先给个使用界面看看吧:
点击在新窗口中浏览此图片
对于【附件】中的【远程桌面连接】(即mstsc.exe)来说,主要是管理更方便了,只需一个.msc 文件即能轻松打开管理窗口,并在多个连接窗口之间切换。屏幕分辨率可设定,但似乎没有提供全屏的功能。

二、安装及配置
该MMC 使用的远程桌面组件,实际上是服务器平台提供的功能,所以,在默认的桌面系统中是没有提供的,需要独立安装。以Windows 7为例,步骤有:
1、下载组件
从下面的连接中下载“Windows 7 远程服务器管理工具”:
点击:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d#filelist

下载前,请留意页面中的说明,包括:
引用
a、仅可以安装在运行企业版、专业版或旗舰版 Windows 7 的计算机上;
b、安装管理工具包的计算机上 Administrators 组的成员;
c、根据运行版本不同,下载适用于x86或x86_64 平台的程;
d、下载后的包,后缀名为.msu,双击即可安装(若使用第三方工具下载,后缀名可能会被修改)。

2、远程桌面功能
安装完毕后,依次打开:“控制面板”-“程序和功能”-“打开或关闭Windows功能”-“远程服务器管理工具”-“角色管理工具”,勾选下面的“远程桌面服务工具”:
点击在新窗口中浏览此图片

3、在MMC中添加远程管理组件
用Win+R 打开运行界面,输入mmc:
点击在新窗口中浏览此图片
在打开的控制台界面,从菜单中选择“文件”-“添加或删除管理单元”,然后从“可用的管理单元”添加“远程桌面”到“所选的管理单元”中,点击“确定”:
点击在新窗口中浏览此图片
最后,右键点击“远程桌面”-“添加新连接”,输入需管理的客户端IP地址即可访问。

4、分辨率问题
创建连接后,右键点击该连接,选择“属性”,在“屏幕选项”中可设置分别率:
点击在新窗口中浏览此图片
建议使用“填充MMC 结果窗格”,确定后,通过工具栏上的图标,关闭多余的显示窗口:
点击在新窗口中浏览此图片
关闭MMC (保存为.msc 文件)。重新打开,即可满屏显示远程终端窗口。


摘自 :http://www.linuxfly.org/read.php?561
分页: 3/248 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]