The MySQL server is running with the --read-only option so it cannot execute
解决办法:
mysql> set global read_only=0;
(关掉新主库的只读属性)
flush privileges;
set global read_only=1;(读写属相)
flush privileges;
出现:
The MySQL server is running with the --read-only option so it cannot execute

来自:http://www.cnblogs.com/xionghui/archive/2013/03/01/2939342.html
进程启动时指定CPU
命令taskset -c 1 ./redis-server ../redis.conf

taskset
taskset是LINUX提供的一个命令(ubuntu系统可能需要自行安装,schedutils package)。他可以让某个程序运行在某个(或)某些CPU上。


指定进程运行在某个特定的CPU上

命令taskset -pc 3 21184

显示结果:

pid 21184's current affinity list: 0-23
pid 21184's new affinity list: 3

注:3表示CPU将只会运行在第4个CPU上(从0开始计数)。


来自:http://blog.csdn.net/xluren/article/details/43202201
http://www.361way.com/linux-context-switch/5131.html
5  8781  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5   879  0.0 [kauditd]
  5  8950  0.0 CROND
  5  8951  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5  9116  0.0 CROND
  5  9117  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5  9286  0.0 CROND
  5  9287  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5   930  0.0 CROND
  5   931  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5    94  0.0 [md_misc/5]
  5  9489  0.0 CROND
  5  9490  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5  9659  0.0 CROND
  5  9660  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
  5  9829  0.0 CROND
  5  9830  0.0 /usr/lib64/sa/sadc -F -L -S DISK 1 1 -

首先需要安装一个包
# rpm -qa sysstat
sysstat-7.0.2-3.el5
这个包安装了一些很有用的文件
# rpm -ql sysstat
/usr/lib/sa/sadc
rpm -qa|grep sysstat
rpm -ql sysstat|grep sadc
/usr/lib64/sa/sadc

=====================================================
要启动SAR,必须通过cron工具以周期性的间隔启动。
安装sysstat包后,默认创建一个/etc/cron.d/sysstat文件,其默认内容为:
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A
这里用到了两个命令
/usr/lib/sa/sa1
/usr/lib/sa/sa2
sa1:是调用sadc(二进制文件),将数据收集到二进制日志文件的一个Shell脚本。sa1命令还确保每天使用不同的文件。每隔十分钟运行一次该命令,最好不要改这个值,这是对一般系统折中的值。二进制日志文件存放在/var/log/sa/目录下,命名为sa${DATE}。
sa2:是将当日二进制日志文件中所有的数据转储到文本文件(sar)的另一个Shell脚本,然后它将清除七天之前的所有日志文件。参数-A指定了从二进制文件中提取哪些数据转储到文本文件中。转储的文件存放在/var/log/sa/目录下,命名为sar${DATE}。
这两个命令要配合着使用。
(强烈建议看一下这两个命令的脚本)


查看一下/usr/lib/sa/sa1脚本,里面执行这样一句命令:
/usr/lib/sa/sadc -F -L 1 1 -
-F:强制指定一个储存文件,如果文件已存在,就将其转换成sa的二进制文件形式。
-L:给sa文件加互斥锁,不能让两个sadc进程同时写一个sa文件。


跟据sa1脚本中的命令,我们也可以手动的创建sa二进制文件,使用/usr/lib/sa/sadc命令,
# /usr/lib/sa/sadc 1 10 /tmp/jaylin_sa
上述命令的作用是:每隔1s写一条记录,写10条,存放到二进制文件/tmp/jaylin_sa中。


查看一下/usr/lib/sa/sa2脚本,里面执行这样一句命令:
/usr/bin/sar -A -f /var/log/sa/sa${DATE} > /var/log/sa/sar${DATE}
-A:列出所有存储在/var/log/sa/sa${DATE}里的统计信息。
-f:指定将要转储的sa文件,默认的参数值为/var/log/sa/sa${DATE}。

From:
http://linuxguest.blog.51cto.com/195664/541178/
/usr/local/bin/lrx
/usr/local/bin/lrz
/usr/local/bin/lsb
/usr/local/bin/lrb
/usr/local/bin/lsx
/usr/local/bin/lsz


Cause

This problem may be caused by improper handling of escape sequences embedded in the files being uploaded.

Resolution

Use the -e or --escape option on lrz, which escapes control characters (Z). For example, type, lrz -e. Some Zmodem clients expect escaping, while others do not.
Notes

Note, some installations of lrzsz do not have the "sz" or "rz" commands, only "lsz" and "lrz". You can edit your .login file and add lines like "alias sz lsz" and "alias rz lrz -e". This way, when you type "sz" or "rz", it will automatically execute the right program with the right options.

lrzsz is part of the FreeBSD ports collection. It contains a set of shell commands for sending and receiving files via the X/Y/ZMODEM protocols. Your SSH or Telnet client must support them for transfers to work.

阅读全文
背景:Git分不同角色在提交时,root提交时是administrator(Crontab用来Pull一些Ansible脚本到本地), 而xiangdong提交时是xiangdong,往往容易出现一个问题是不小心给root了,这块一是xiangdong上去有时权限不够可能切换为root了,另一个是登录时可能就是Root用户,一提交就成Admin了。鉴于此,自己整个C代码实现提交判断,这样接管了git push,从而对粗心的我来讲起到一个助理的作用。

一、搞这玩意儿的原因:
root情况:

xiangdong:

解决一个无论是root还是xiangdong的环境下,只需要执行下面我们搞的这个c语言生成的二进制文件就能一直只以向东的用户进行提交git,看起来扯淡,但还是有点用的,敲啥呢: gitpush ,和git push只是没有那个空格了。经实践证明是可行的,如下:


二、生产这个玩意的过程:
源码及Makefile和生成的二进制文件路径:


Makefile文件内容:

源代码:



最后,PATH路径:


三、验证步骤阶段:
root下执行情况:
#gitpush
#gitpush
当前登陆的用户名为:root
current working directory : /home/xiangdong/shell
The UID is 0
The login name is xiangdong
The forbidlogin name is root
请小心,你现在正在Root环境下面,不过没关系,我给你切换到xiangdong用户并作提交。执行git push命令:/usr/bin/sudo -i -u xiangdong -H cd /home/xiangdong/shell && git push
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 288 bytes, done.
Total 3 (delta 1), reused 1 (delta 0)
To git@gitlab.qr.justwinit.net:levooops/shell.git
   bd83c51..b400811  master -> master

xiangdong下面执行情况:
$gitpush
执行:cd /home/xiangdong/shell && git push
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 277 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@gitlab.qr.justwinit.net:levooops/shell.git
   b400811..0b19550  master -> master

成功Log:
$git log
commit 0b195507efa6278774d4f500a7086003d6744684
Author: xiangdong <xiangdong@justwinit.cn>
Date:   Sun Oct 1 23:15:32 2017 +0800

    加上README.md

commit b40081190bf020d49375a4117a181f00ea0a2503
Author: xiangdong <xiangdong@justwinit.cn>
Date:   Sun Oct 1 23:09:58 2017 +0800

    加上README.md

================================================================================
附录:
为什么 sudo cd 会报错 command not found:
https://www.starduster.me/2015/09/12/why-command-not-found-when-sudo-cd/

相关函数:get_current_dir_name, getwd, chdir
头文件:#include <unistd.h>
定义函数:char * getcwd(char * buf, size_t size);
函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。
注:
1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size 大小,则返回NULL,errno 的值则为ERANGE。
2、倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0,则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利用free()来释放此空间。

返回值:执行成功则将结果复制到参数buf 所指的内存空间, 或是返回自动配置的字符串指针. 失败返回NULL,错误代码存于errno.

范例


执行:
current working directory :/tmp

cat test_processname.cpp



g++ test_processname.cpp -o gitpush
mv /tmp/gp /usr/local/gitpush/gitpush

cat /etc/profile.d/gp.sh
export PATH=$PATH:/usr/local/gitpush

#gp
directory:/usr/local/gitpush/
processname:gp
current working directory : /root


./gitpush
directory:/tmp/
processname:gitpush
current working directory : /tmp
The UID is 0
The login name is xiangdong
我的问题:git pull
error: Untracked working tree file 'playbook/ml.qr.justwinit.cn/process.yml' would be overwritten by merge.  Aborting
git fetch --all && git reset --hard origin/master
一、解决办法:


二、再git pull就没有问题了,当然,你的改动也被回退了,得先备份再做这个操作:
$git pull
Already up-to-date.

三、重新将文件放进去,再进行commit后push,没毛病:
git commit -m"xxx" ishow.justwinit.cn.conf.j2
git push
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 815 bytes, done.
Total 6 (delta 3), reused 0 (delta 0)
To git@gitlab.qr.cntv.net:irdcops/ansible.git
   d33031a..eb4ad86  master -> master
来自:https://www.codecaptain.io/reference/git/the-following-untracked-working-tree-files-would-be-overwritten-by-merge
     git中可以承载多个DAGs Repo一样的情况 git checkout --orphan命令。 git的常见用例是此功能是保持独立的文档和github的gh pages孤立的分支branch来创建一个静态网站。
孤立分支特征:
1)master好孤立分支是一个.git仓库里面的两颗独立的数,也就是说他俩没法合并。
2)master默认是保护的,建议把master 干掉,默认保护master的变为master.andorid,类似这样的。
3)孤立分支里面再建立分支,他们之间和常规分支一样的,没有区别。
一)其他用例孤立的分支有哪些?
可能的用法是用于将多个系统信息库组合成一个。 是一些例子:
Combining多个git库?
在这些情况下你必须在同一个档案库中的两个独立DAG之前合并到一个统一的目录树。 因此在长期使用,但这不是尽可能多的操作将暂时通过的状态使用单独的DAG所在的系统信息库中。

二)来自操作手册:
###创建孤立分支
    git version 1.7.2+

    # 创建
    git checkout --orphan <newbranch>
    
    # 删除无用文件
    git rm -rf .

    # 提交“空”内容
    git commit --allow-empty -m "[empty] initial commit"

    # 把新创建的本地分支,推送到远端仓库,保持跟踪
    git push -u origin <newbranch>


三)实践操作如下,命令来地址(https://ihower.tw/blog/archives/5691):


在Gitlab的Web界面里测试一下孤立分支:
newbranch   Merge RequestCompare Select Archive Format
754a735a · 测试一下刚建立的孤立分支  · 2 minutes ago
用处:strings命令主要用来做查看二进制的编译文件里面某个.c/.cpp文件编译到那个.so库中去了,或查看它调用了哪些库文件.
strings命令很简单, 看起来好像没什么, 但实际有很多用途。 下面, 我来举一个例子。  在大型的软件开发中, 假设有100个.c/.cpp文件, 这个.cpp文件最终生成10个.so库, 那么怎样才能快速知道某个.c/.cpp文件编译到那个.so库中去了呢? 当然, 你可能要说, 看makefile不就知道了。 对, 看makefile肯定可以, 但如下方法更好, 直接用命令:
      strings -f "*.so" | grep "xxxxxx"




/usr/local/node/bin/node


来自:http://blog.csdn.net/stpeace/article/details/46641069
二、Node编译高版本涉及Gcc相关的编译安装过程Url:
http://www.cnblogs.com/dee0912/p/5272149.html

关于编译Node的GCC版本升级:
1)linux下升级gcc的方法 – 亲测可用:https://www.cppfans.org/1719.html
2)编译安装 gcc 4.9并验证使用:http://blog.csdn.net/hzhxxx/article/details/28634893
问题:redis-3.0.7升级到redis-3.2.10,之前的数据文件/data/redis/6379/dump.rdb 没有删除,service redis start会报错,如下:


当前版本的redis无法处理version=7的RDB格式,这才明白是兼容性问题,但这种“向前兼容”一般很难做到的。
解决办法:删除rdb文件/var/lib/redis/6379/dump.rdb,重启redis就行了。

如果能解决掉Slave没有问题,那么, 线上坏了一台Slave的Redis可以直接替换掉即可:
在RPM打包发现:redis-3.0.7(线上)升级到redis-3.2.10的旧版本的dump.rdb格式无法启动如下:
但是经测试可以做Slave同步,现在CentOS6和CentOS7均升级至和epll仓库一样版本redis-3.2.10。
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,大功告成!




/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
分页: 3/197 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]