背景:buntu17.04连接CentOS7.3出现类似问题,用的也是Linux下的SecureCRT7的版本查看文件时候用Tab键出现Wuff —- Wuff!! ,用的也是Linux下的SecureCRT7的版本,做如下修改后就好了。
If you use OS X, and manage multiple machines over SSH, you’ve probably come across and used screen.

You may have noticed that if you SSH to a Linux host from Mac OS X, and try to use the backspace or tab key within a screen session, that you get the “Wuff —- Wuff!!” prompt at the bottom.

Thankfully, the resolution to this problem is easy.

On the remote machine, if you open your ~/.bash_profile file in a text editor (.bash_profile in your home directory), you need to add the following line:

alias screen='TERM=screen screen'
Add that, save the file and you’re done!  You’ll need to re-run bash or just log out and log back in, but when you do, the next screen session you open, you’ll find that the backspace/tab key works again as expected!


From:http://droptips.com/wuff-wuff-from-mac-os-x-to-a-screen-session-on-linux
参考原文:
yum install -y yum-downloadonly

yum install PHP-MySQL -y --downloadonly --downloaddir=/opt

rpm -ivh --force --nodeps php-mysql-5.3.3-22.el6.x86_64.rpm

From:http://blog.csdn.net/anghlq/article/details/9165329
=====================================
实践如下:
yum install gcc autoconf cmake unzip vim libcurl-devel zlib-devel curl-devel expat-devel gettext-devel openssl-devel perl-devel nodejs libicu-devel wget curl mysql-devel
下载量:6.2 M
安装大小:31 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): gettext-devel-0.18.2.1-4.el7.x86_64.rpm                                                  | 315 kB  00:00:00    
(2/5): perl-Git-1.8.3.1-6.el7_2.1.noarch.rpm                                                    |  53 kB  00:00:00    
(3/5): mariadb-devel-5.5.52-1.el7.x86_64.rpm                                                    | 750 kB  00:00:00    
(4/5): mariadb-libs-5.5.52-1.el7.x86_64.rpm                                                     | 761 kB  00:00:00    
(5/5): git-1.8.3.1-6.el7_2.1.x86_64.rpm                                                         | 4.4 MB  00:00:04    
-----------------------------------------------------------------------------------------------------------------------
Transaction check error:
  file /etc/my.cnf from install of mariadb-libs-1:5.5.52-1.el7.x86_64 conflicts with file from package mysql-8.0.1-170622164613.el7.centos.x86_64

错误概要
-------------
yum install mariadb-libs-1:5.5.52-1.el7.x86_64 -y --downloadonly --downloaddir=/tmp
rpm -ihv  mariadb-libs-5.5.52-1.el7.x86_64.rpm  --nodeps --force


已安装:
  gettext-devel.x86_64 0:0.18.2.1-4.el7                       mariadb-devel.x86_64 1:5.5.52-1.el7                      
作为依赖被安装:
  git.x86_64 0:1.8.3.1-6.el7_2.1                          perl-Git.noarch 0:1.8.3.1-6.el7_2.1
背景:如Gitlab的那个备份日志就是以Unix的时间戳表示的,怎么能看到底是啥时候呢?当然用 stat 也能看,这儿主要是学习一下互相转化。
A.将日期转换为Unix时间戳


将当前时间以Unix时间戳表示:
date +%s
输出如下:
1361542433


转换指定日期为Unix时间戳:
date -d '2013-2-22 22:14' +%s
输出如下:
1361542440


B.将Unix时间戳转换为日期时间


不指定日期时间的格式:
date -d @1361542596
输出如下:
Fri Feb 22 22:16:36 CST 2013


指定日期格式的转换:
date -d @1361542596 +"%Y-%m-%d %H:%M:%S"
输出如下:
2013-02-22 22:16:36

来自:http://blog.csdn.net/clevercode/article/details/49993237
基本上有两个方法,一个是comm命令,一个是grep命令。分别介绍如下:
comm命令 , Compare sorted files FILE1 and FILE2 line by line. With  no options, produce three-column output.  Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. 要注意两个文件必须是排序和唯一(sorted and unique)的,默认输出为三列,第一列为是A-B,第二列B-A,第三列为A交B。这个哥们写得好,尽管我不懂linux文件流的用法,但是大致看出来了,我用了三个步骤,而用一行就搞定了,简单可用:http://m.blog.csdn.net/article/details?id=6579320


文件行数少最直观快捷的diff办法:
vimdiff <(sort a.txt|uniq) <(sort b.txt|uniq)

/proc/15750/fd/63 [只读]      /proc/15750/fd/62 [只读]
——————————————————————————————
一般求差集的多一些:
求差
comm a.txt b.txt  -3 | sed 's/^\t//'
差集
comm a.txt b.txt  -2 -3

实践如下:

sort getosok.txt >> getosoksort.txt
sort r11.txt >> r11sort.txt
comm r11sort.txt getosoksort.txt   -2 -3



再次实践,注意这两个文件都要去重,否则不太好比较,-2 -3显示左边文件有的右边没有的:
sort mysqlsort.txt|uniq   //sort结合uniq命令去重复行找出重复次数大于1的行参考:http://justwinit.cn/post/3671/

sort 主机层面能ssh连接的.txt |uniq >> 主机层面能ssh连接的排序过的去过重的.txt
sort 数据库应用开发现在的.txt |uniq >> 数据库 应用开发现在的排序过的去过重的.txt



comm  数据库应用开发现在的排序过的去过重的.txt 主机层能ssh连接的排序过的去过重的.txt   -2 -3
10.71.11.4*  //这个是列出左边有,右边文件没有的内容,也就是 “数据库应用开发现在的排序过的且去重的.txt”里有,而右边这个“主机层面能ssh连接的排序过的.txt” 没有。

comm 主机层面能ssh连接的排序过的去过重的.txt 数据库应用开发现在的排序过的 去过重的.txt -2 -3
10.70.*.42
10.70.*.53
10.70.*.1
10.70.*.2
10.71.*.29

注意:
1. comm命令要求输入文件的内容必须是排序且唯一的
2. comm -12 表示取消第一列和第二列的输出,即只输出第三列。[/warning]

主机层面能ssh连接的排序过的有,而右边没有。
http://www.ttlsa.com/linux/linux-file-comparison-operations-text-file-of-the-intersection-difference-sets-and-difference/
经过实践发现Input输入框控件也可以实现对某些提示给一样的方法删除掉:

法一:删除需要删除的URL:
,地址栏中高亮你要删除的网址,按shift+delete就可以了


法二:全删除
1、chrome地址栏输入“chrome://settings/”后回车;
2、点击页面底端“显示高级设置...”;
3、点击“隐私设置”下面的“清除浏览数据...”按钮。


From:https://zhidao.baidu.com/question/502291145.html
背景:常常我们用git pull 命令较多,而用git fetch较少,这两者有可区别,而我们在开发时可先用git fetch再git merge可能更安全一些,因为咱完全不用像git pull一样立即就自动merge可以用git diff进行比对。
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master
    以上命令的含义:
   首先从远程的origin的master主分支下载最新的版本到origin/master分支上
   然后比较本地的master分支和origin/master分支的差别
   最后进行合并
   上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp
    从远程获取最新的版本到本地的test分支上
   之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
结束


来自:https://zhidao.baidu.com/question/200204875340723965.html
=====================================================
模拟实践如下:

$git fetch origin master
From gitlab.boosh.com.cn:lvdev/jackxiang.com
* branch            master     -> FETCH_HEAD

如果有变化,可:
$git diff

$git merge origin/master
Merge made by recursive.
.../static/js/manifest.334733dc1613e9cc4ac4.js     |    2 ++
.../static/js/manifest.334733dc1613e9cc4ac4.js.map |    1 +
2 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 jackxiang.com/static/js/manifest.334733dc1613e9cc4ac4.js
create mode 100644 jackxiang.com/static/js/manifest.334733dc1613e9cc4ac4.js.map

重来一次,这次fetch时结果没有变化的情况:
From gitlab.boosh.com.cn:lvdev/jackxiang.com
* branch            master     -> FETCH_HEAD

$git merge origin/master
Already up-to-date.

今天和兄弟在2017北京PHP全球开发者大会-高可用的PHP探讨了一下,mysqli::reap_async_query、curl_multi_exec两个函数,这两个函数在实现上是否真的可用于高并发?场景是啥? 1)这两个函数没法一块使用,形成类似协程的效果,有局限性。 2)这个数据库这块儿的并土用来做导入数据或导出的一些后台操作,并不在前端使用。

有个兄弟,用Swoole的Task做一些后台并行操作这样的事情,用Task的Retrun,然后,用Swoole的Finish汇总,把一些返回的状态位放到SwooleTable里或全局变量里,相关小巧。
PHP实现MySQL并发查询:http://www.cnblogs.com/shaoguan/p/6515072.html
持续集成(Continuous Integration ,CI)
在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码更经常反复地发生。

持续集成意味着一个在家用笔记本编写代码的开发人员(嘿,史蒂夫)和另一个在办公室编程的开发人员(嘿,安妮)可以为同样的产品分别地编写软件,将其改动整合在一个叫做源存储库的地方。他们可以从各自编写的部分构建出组合的软件,并且按照他们期望的方式来测试软件。

开发人员通常使用一种叫做IC Server 的工具来做构建和集成。持续集成要求史蒂夫和安妮能够自测代码。分别测试各自代码来保证它能够正常工作,这些测试通常被称为单元测试(Unit tests)。

代码集成以后,当所有的单元测试通过,史蒂夫和安妮就得到了一个绿色构建(green build)。这表明他们已经成功地集成在一起,代码正按照测试预期地在工作。然而,尽管集成代码能够成功地一起工作了,它仍未为生产做好准备,因为它没有在类似生产的环境中测试和工作。在下面持续交付部分你可以了解到持续集成后面发生了什么。

考虑到实践持续集成,史蒂夫和安妮必须频繁地登记主代码仓库、集成和测试他们的代码。通常一小时很多次,并且每天最少一次。

持续集成的好处是,集成不再是个头疼事。软件在一直被编写和集成。在持续集成之前,集成发生在创建过程的结尾阶段,一次性完成,并且不知道要耗时多久。而现在持续集成,每天都融入到了工作方式当中。

持续交付(Continuous Delivery,CD)
让我们说回到我们的两位开发人员,史蒂夫和安妮。持续交付意味着每次史蒂夫或安妮修改、整合和构建代码时,也同时在类似于生产环境中自动测试了这段代码。我们通常将这个在不同环境发布和测试的过程叫做部署流水线。通常部署流水线有一个开发环境,一个测试环境,一个准生产环境,但是这些阶段会根据不同的团队、产品和组织而变化。例如,Mingle团队有一个阶段叫做“纸杯蛋糕”的准生产环境,而Etsy的准生产环境叫做“公主”。

在不同的环境下,安妮和史蒂夫写的代码被分别进行测试。当代码部署到生产环境它就开始了工作,这给予了他们更多的信心。并且只有当代码通过前一个环境的测试才会进入到下一个部署流水线的环境当中去。通过这种方式,安妮和史蒂夫将会从每个环境中测试并得到新的反馈,如果有失败,他们也可以在代码被应用到生产环境之前更加容易地发现问题并且修正它。

From: http://blog.dataman-inc.com/98-shurenyun-cdci/
ubuntu下hdparm测试硬盘速度

root@jack:~# fdisk -l
Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1555e2a7

设备       启动     Start    末尾    扇区  Size Id 类型
/dev/sda1  *         2048 151093247 151091200   72G 83 Linux
/dev/sda2       151095294 156301311   5206018  2.5G  5 扩展
/dev/sda5       151095296 156301311   5206016  2.5G 82 Linux 交换 / Solaris


root@jack:~# hdparm -t /dev/sda1

/dev/sda1:
Timing buffered disk reads: 112 MB in  3.03 seconds =  36.97 MB/sec

=========================================================
hdparm -t /dev/hda (IDE硬盘)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
hdparm -t /dev/md0 (软RAID设备)

From:http://blog.csdn.net/amds123/article/details/68961474
http://www.jb51.net/LINUXjishu/160512.html
在ubuntu 17.04上安装了Chromium出现对话框输入密码解锁登录密钥环,如下所示:


因为密码框截图困难,这个是网上图片。

点取消就可以使用,但是每次都这样很烦,搜索后得解:
在终端输入seahorse,打开密钥管理软件,如下,注意不要加sudo:
OpenSSH Key ==>密码密钥环===》新建一个密码密钥环,chromium:

设定好密码后,再打开chromium,输入系统登录密码就OK了,之后也不会多次出现了。

From:http://www.linuxdiyf.com/linux/25176.html
背景:想从不让复制的Url里取点东西出来,看源代码放Editpuls里ctrl+b后,用浏览器打开,发现乱码,怎么办?安装Charset后,【V】允许访问文件网址,即可。

  自从谷歌升级了5.5以上之后(其实我自己也没注意到时是从哪个版本开始的),点击鼠标右键→工具→编码的功能选项没有了,这是怎么回事呢?通过搜集资料发现,原来是谷歌浏览器本身精简了这个功能,关于Google为什么要去掉这个功能,官方解释是这个功能会使得浏览器速度变慢(-1s),并且使用的不频繁,所以去除了这个功能。但是我们浏览网页或者制作网站的时候,经常会出现页面乱码的情况,这种情况就要用到编码转换的功能,而浏览器自带的这个功能没有了,怎么办呢?网上大牛给出了一个好办法:使用chrome插件(扩展应用)——Charset。

官方简介如下:由于使用频率较低,Google Chrome在55版本以后删除了手动设置网站编码的功能。但是在部分设置不规范不正确的网站,新版浏览器无法准确判断其使用的编码,导致网站显示乱码。GitHub开源地址:https://github.com/jinliming2/Chrome-Charset

Charset v0.1测试版,支持Chrome 54选择编码功能中所列出的编码进行了支持。

最后更新日期: 2017年2月14日
  我在安装Ubuntu 16.04 LTS的时候,因为磁盘分区问题,在安装的时候没有设置SWAP分区,后来在使用过程中,时而出现系统运行不流畅的情况,看来SWAP分区还是需要的。

1. 在Ubuntu中配置使用新创建的Swap分区

Command list:

# 查找Swap分区的UUID

sudo blkid

# 在/ect/fstab中加入新的Swap分区

sudo gedit /etc/fstab

# 在最后加入下列内容,xxxx为Swap分区的UUID

UUID=xxxx  none            swap    sw                0      0

# 激活Swap分区,Swap分区为/dev/sda3

sudo swapon /dev/sda3

2. 在Ubuntu中使用file当swap

Command list:

# 创建1个1GB的file

sudo dd if=/dev/zero of=/mnt/1GB.swap bs=1M count=1024

# 格式化为Swap file

sudo mkswap /mnt/1GB.swap

# 把swap file加入到系统中

sudo swapon /mnt/1GB.swap

上面的操作只是临时添加1个swap file,如果要做永久添加,则需要下列步骤。

# 在/ect/fstab中加入新的Swap分区

sudo gedit /etc/fstab

# 在最后加入下列内容

/mnt/1GB.swap none swap sw 0 0

3. Ubuntu的swap使用策略

Command list:

# 查看memory/buffer/Swap使用情况。

free

# 查看swap使用策略,Swap和memory各占百分百

# 默认是60,即Swap占60%,memory占40%

cat /proc/sys/vm/swappiness

# 修改swap使用策略

# 仅本次开机有效,重启后恢复原值

sudo sysclt vm.swappiness=20

# 修改swap使用策略,系统默认值

# 需要重启系统后,才能生效

sudo gedit /etc/sysctl.conf

# 在最后添加下列内容:

#################################################

# Set Swap usable availability

#        Swap <-------> physical memory

# default: 60%                40%

vm.swappiness=20

4. 关闭swap

sudo swapoff -a
swapon -s
Filename                                Type            Size    Used   Priority
/dev/sda2                               partition       2047992 0       -1

来自: http://www.linuxidc.com/Linux/2013-03/80208.htm
水在真空里是什么状态?
看了CCTV10的电视节目,把有水容器抽空以后,水先沸腾然后结冰了,我想问一下在太空中如果洒了水,那水成什么样子了?
还有,比如说把人扔到太空里,会成什么样子?

我在教育科技屏道看过,因为气压越低沸点越小,所以太空时,水会沸腾,但不会完全蒸发,然后因为蒸发散热,然后结冰,就和真空中原理一样,彗星就是这样的大冰块,如果象一楼说的这世上就没有扫把星了.


是的,太空实在太冷了,如果我们谈到去星际空间,远离任何星体(或者光线阴影处),唯一的温度热源来自大爆炸产生的剩余辐射,辐射的蓝海的的温度只有2.7 Kelvin,足以使的几乎不含水的氢凝固,所以如果你把水带入太空,它应该结冰,对吗?


没有这么快!液态水会在压力下降如此厉害的环境下沸腾。没错!是沸腾,你可能知道在在高纬度地区烧水,水会在较低的温度就沸腾,那就是因为你上面大气层稀薄了,所以压力降低了。再举个例子,如果我们把水放入真空室,立即抽掉空气,会发生什么?
它会沸腾!迅猛地沸腾。原因是液态水,需要一定的温度和压力,如果你给水一个特定的温度,足够低的压力会立刻让水沸腾。
另一方面,如果你给水一个特定的压力,然后再降低温度,水将会立刻结冰。

当你把水放到真空室里,其实我们是同时做两件事,把水从它所处的温度压力相结合的液态水条件下转移到更低的压力(水想沸腾), 转移到更低的温度(解释:太空温度低,沸腾气化带走热量温度降低)(水想结冰)。

你一定想问,那么水进入太空,到底会发生什么?

答案是:两种情况都会发生,水先沸腾,然后再结冰!

来自:https://m.sohu.com/n/476841175/
问题:在
$git status
# On branch master

$git checkout master
README.txt: needs merge
error: you need to resolve your current index first

git reset --merge

git pull #好了,但是出现:
# Changed but not updated:  ( Changes bu not updated → 文件被修改,但并没有添加到暂存区。如果 commit 时没有带 -a 选项,这个状态下的文件不会被提交)
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)

现在有两个操作可供选择,要么把暂存区的所有内容添加到当前分支上;要么清除暂存区回退成与分支内容一致,但工作区没有清除,若想把工作区也清除,就得在使用git checkout -- file(这里的--后面有一个空格键)命令了。详细解说如下:

方法一,
按提示的来:"git checkout -- <file>...,发现还是不行,其它兄弟试了下是可以的,法一居然不行,其它兄弟试可以,最后用了法二:
git checkout -- ./WxPayApi.php #某个文件
git checkout -- *  #这命令是还原当前分支下的所有修改到stage上并未commit的文件,-- 后面是文件名的意思。

以上方法没有办法搞定,奇怪了,最后还是用最后,这样解决了:
git commit -am"解决一下Master的:Changed but not updated" , 用:-am,Git的小乌龟难道看不到吗?奇怪了,默认就是-am呀,所有人都用乌龟就好了 ,绝对不会出现问题,哈哈,命令行捣蛋了???
解决办法继续参看:http://blog.csdn.net/qq_38801354/article/details/72793909



方法二、
用git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。",再提交Git服务器仓库,得以解决。
先检出Master:
$git checkout master
M       api.jackxiang.com/components/WxPay/WxPayApi.php
M       api.jackxiang.com/components/WxPay/WxPayConfig.php
M       api.jackxiang.com/components/WxPay/WxPayDataBase.php
M       api.jackxiang.com/components/WxPay/WxPayException.ph
核对还是有问题:
$git status
# On branch dev
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   api.jackxiang.com/components/WxPay/WxPayApi.php

git commit -am"只有这样解决了上面这个Changed but not updated问题"
$git commit -am"解决一下Master的:Changed but not updated"

把所有的都给提交了(Dev没有改动,无所谓):
git push --all

同理那个Dev分支也是一样的道理:
$git checkout master
$git status
$git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。"




================================================================================
从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行 merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大(且这些差异是其他 同事开发的文件),merge时产生冲突,使得B分支的状态为merging,其实是指merge失败,还停留在merge状态,也不能执行pull操 作。这时没有解决冲突,而是从B分支上执行checkout/switchto操作,试图再切换其他分支时,报:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
…….java : needs merge  
…….java : needs merge  
…….java : needs merge  
error : you need to resolve your current index first  
的错,google了半天,终于在stackoverflow上找到了答案,大题意思是:merge失败,有conflicts没解决,可以:
1、解决conflicts后再次执行merge;
2、回退到merge前
恩,既然merge冲突是其他同事的文件,我不需要去resolve conflicts,那就退回merge前吧,单纯的改我的文件再push吧,执行以下代码:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
git reset --merge  
搞定!

顺便贴下stackoverflow上的链接:
http://stackoverflow.com/questions/6006737/git-merge-errors
本文参考来自链接:https://www.lbbniu.com/3059.html
聪者听于无声,明者见于未形

典出:汉•班固《汉书•伍被传》。

原文:“聪者听于无声,明者见于未形。”

释义:聪慧明智、思虑通达的人,善于观察、思考、深辨、细究,掌握事物的发展规律和发展方向,作出正确的判断,故能洞察事物的未来,于无声处听有声,于无形处见有形,有先见之明。

解读:中医讲“上医治未病,中医治欲病,下医治已病”,事物的发展总是经历一个阶段,高明的大夫能够在一个更长的时间段中把握人体的生长规律,从而做到预防疾病的目的。

这也是我们时常提到的把握历史规律和大势的道理,“于无声处听惊雷”,这是真正的大智慧。

无论是个体也好,国家治理者也好,培养长远的历史眼光总是不错的。每个人都身处历史洪流,既为历史所裹挟,也在创造新的历史。每一个历史转折点上,先知与后知未必都能合拍,而如何正确抉择,令人深思。


FROM:http://mp.weixin.qq.com/s/FbMzw6kg8WAsAU7kjaxptA
rpm -qf /usr/bin/nproc
coreutils-8.22-18.el7.x86_64

#nproc
1
---------------------------------------
也可这样查:
#cat /proc/cpuinfo
processor       : 0
cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

版本:php-5.6.20
configure: error: Cannot find ldap libraries in /usr/lib 解决办法:
今天在centos 6.2 64位版本上安装LNMP,config php的时候出现下面错误而退出

CentOS 64 编译PHP出现 error: Cannot find ldap libraries in /usr/lib 有需要的朋友可参考参考。
在CentOS 64位下编译安装PHP5.4.8。cp -frp /usr/lib64/libpng* /usr/lib/ 结果在configure的时候提示
configure: error: Cannot find ldap libraries in /usr/lib
提示在/usr/lib 下找不到相关模块,这是因为64位的linux默认把以上文件都存在 /usr/lib64 文件夹下。
解决方法:
代码如下
cp -frp /usr/lib64/libldap* /usr/lib/


From:http://www.iitshare.com/cannot-find-ldap-libraries-in-usrlib.html
-----------------------------------这种问题到处都有---------------------------------------
configure: error: Cannot find ldap libraries in /usr/lib
提示在/usr/lib 下找不到相关模块,这是因为64位的linux默认把以上文件都存在 /usr/lib64 文件夹下。
解决办法:
cp -frp /usr/lib64/libldap* /usr/lib/


然后再./configure ...即可

From:http://www.cnblogs.com/xiangxiaodong/p/3492156.html

打包时先拷贝,再./configure:

%build
/bin/cp -frp /usr/lib64/libldap* /usr/lib/
./configure \
--prefix=%{_prefix} \
--with-libdir=%{_lib} \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-iconv-dir=/usr/local \
--with-iconv=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-ldap \
--with-ldap-sasl \
--with-libxml-dir=/usr \
--with-curl \
--with-curlwrappers \
--with-mcrypt \
--with-gd \
--with-openssl \
--with-mhash \
--with-xmlrpc \
--without-pear \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gettext \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--enable-zip \
--enable-soap \
--enable-opcache \
--enable-exif \
--enable-mbregex \
--enable-inline-optimization \
--enable-ftp \
--disable-fileinfo \
--disable-rpath \
--disable-ipv6 \
--disable-debug
make ZEND_EXTRA_LIBS='-liconv' %{?_smp_mflags}

%install
rm -rf %{buildroot}
make INSTALL_ROOT=%{buildroot} install

背景:在打RPMBUILD一个张宴兄弟的httpsqs结合Libevent1.4.13的包的时候,出现错误,本来他写的是Libevent2.0,顾问在微信问了张宴兄弟下他本人说1.4.13也是也没有啥问题的,就要问了:为何要降级,因为Memcached也需要这个Libevent的低版本的,没办法,Httpsqs所以来的Libevnet也跟着降吧。出现问题:ERROR: No build ID note found in

BuildRequires: gcc,gcc-c++,make,tokyocabinet = 1.4.48,libevent >= 1.4.13
Requires: tokyocabinet = 1.4.48,libevent >= 1.4.13



还不够,得加这一行,因为不加会提示:
AutoReqProv:   no
Rpmbuild自己会自动依赖一些so动态链接库的东西,给关掉:

rpm -ihv /home/test/rpmbuild/RPMS/x86_64/httpsqs-1.7-170522172954.el6.x86_64.rpm
error: Failed dependencies:
        libevent-2.0.so.5()(64bit) is needed by httpsqs-1.7-170522172954.el6.x86_64


问题依旧:
service httpsqs start
Starting httpsqs: /usr/local/httpsqs/httpsqs: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
                                                           [FAILED]

反查一个源码,如下:
tar -zxvf httpsqs-1.7.tar.gz
httpsqs-1.7/
httpsqs-1.7/httpsqs.c
httpsqs-1.7/prename.h
httpsqs-1.7/prename.c
httpsqs-1.7/Makefile
httpsqs-1.7/.Makefile.swp
httpsqs-1.7/httpsqs   (这个文件应该是一个二进制文件,去了编译不过去,报错)

gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function 'httpsqs_handler':
httpsqs.c:350: error: 'struct evhttp_request' has no member named 'uri_elems'
make: *** [httpsqs] Error 1
error: Bad exit status from /home/test/rpmbuild/tmp/rpm-tmp.OyM3VG (%build)
果然:
grep -r "libevent-2.0" ./
Binary file ./httpsqs matches

[root@  httpsqs]# stat httpsqs
  File: `httpsqs'
  Size: 20184           Blocks: 40         IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 1066707     Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-22 17:58:26.000000000 +0800
Modify: 2017-05-22 17:58:26.000000000 +0800
Change: 2017-05-22 17:58:50.635000020 +0800
[root@  httpsqs]# ldd httpsqs
        linux-vdso.so.1 =>  (0x00007ffd27464000)
        libevent-2.0.so.5 => not found
        libtokyocabinet.so.9 => /usr/local/tokyocabinet/lib/libtokyocabinet.so.9 (0x00007fed13df0000)
        libz.so.1 => /lib64/libz.so.1 (0x0000003cf6c00000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003cfc000000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003cf7c00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003cf7400000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003cf8000000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003cf7000000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003cf6800000)
但是编译是从这儿编译的:
rpm -qa|grep libevent
libevent-devel-1.4.13-4.el6.x86_64
libevent-1.4.13-4.el6.x86_64
libevent-doc-1.4.13-4.el6.noarch
libevent-headers-1.4.13-4.el6.noarch
难怪了,原来写二进制里面了:^@^@^@^@^@^@^@^@libevent-2.0.so.5^@__gmon_start__^@_Jv_RegisterClass
稍微深入到源码看一下:

rpm2cpio libevent-2.0.22-170116172306.el6.x86_64.rpm |cpio -div
/usr/local/libevent/include/event2/http_struct.h

httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’

struct evhttp_request{#57行到123行都是这个结构体的,而这个uri_elems定义在在98行。
  struct evhttp_uri *uri_elems;   /* uri elements */
}

张宴兄弟的源码里文件之httpsqs.c:350行:
350         httpsqs_query_part = evhttp_uri_get_query(req->uri_elems);

而旧的版本没有这个http_struct.h文件及结构体,如下:
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h

所以,张宴兄弟的说法不成立。


还不放心,看一下源码包,不看RPM包,有可能RPM包没有打进来?
http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/
DownLoad:http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/0b3ea18c634072d12b3c1ee734263664/libevent-1.4.13-stable.tar.gz
解压后,再用Editplus查找:uri_elems,并没有找到这个结构体变量,如下:
-- 在文件中查找: uri_elems in E:\download\libevent-1.4.13-stable excl *.* --
找到 0 个事件 (在 0 个文件中)。
输出完成 (耗时 0 秒)

So,张宴兄弟长时间没有看这块代码,应该是记错了!!!



在Fedora14中打rpm包,是没有/usr/src/redhat这个目录的,而是要建立~/rpmbuild目录,并建立SOURCES、SPECS、RPMS等相应目录。其它步骤相同。
但是在rpmbuild -ba时,遇到如下错误:
*** ERROR: No build ID note found in /home/wuyang/rpmbuild/BUILDROOT/******
error: Bad exit status from /var/tmp/rpm-tmp.BPd1OI (%install)


gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
修改为:
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
[root@yum_rpmbuild-centos6_bj_sjs_10_71_183_1** httpsqs-1.7]# gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function ‘httpsqs_handler’:
httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’

rpm -ql libevent-1.4.13-4.el6.x86_64
/usr/lib64/libevent-1.4.so.2
/usr/lib64/libevent-1.4.so.2.1.3
/usr/lib64/libevent_core-1.4.so.2
/usr/lib64/libevent_core-1.4.so.2.1.3
/usr/lib64/libevent_extra-1.4.so.2
/usr/lib64/libevent_extra-1.4.so.2.1.3
/usr/share/doc/libevent-1.4.13
/usr/share/doc/libevent-1.4.13/README
rpm -ql libevent-devel-1.4.13-4.el6.x86_64
/usr/bin/event_rpcgen.py
/usr/lib64/libevent.a
/usr/lib64/libevent.so
/usr/lib64/libevent_core.a
/usr/lib64/libevent_core.so
/usr/lib64/libevent_extra.a
/usr/lib64/libevent_extra.so
/usr/share/man/man3/evdns.3.gz
/usr/share/man/man3/event.3.gz
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h




解决方法是在.spec文件中任意位置添加如下参数:
%define __debug_install_post   \
   %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}

重新打包,即可。
另外最后生成的rpm包是在/RPMS/i686中

来自:http://blog.csdn.net/onlyou930/article/details/6995645
背景:CentOS7版本,出现执行完了后,并没有真的分割,这奇怪了,方向应该是这个方向,开源就有这个问题,老是出现各种问题。。。。搜索引擎很重要。
多了个-d参数代表只执行预演调试而不实际执行归档操作,配置输出的日志如下:
情况一:chown -R root:root  /usr/local/tomcat/conf/tomcat.logrotate
logrotate -v -f -d  /usr/local/tomcat/conf/tomcat.logrotate                
reading config file /usr/local/tomcat/conf/tomcat.logrotate
olddir is now oldlogs
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /data/logs/tomcat/*.log  forced from command line (30 rotations)
olddir is oldlogs, empty log files are not rotated, old logs are removed
considering log /data/logs/tomcat/catalina.log
  log needs rotating
considering log /data/logs/tomcat/localhost-access.log
  log does not need rotating (log is empty)considering log /data/logs/tomcat/localhost.log
  log does not need rotating (log is empty)rotating log /data/logs/tomcat/catalina.log, log->rotateCount is 30
dateext suffix '-20170515'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /data/logs/tomcat/catalina.log to /data/logs/tomcat/oldlogs/catalina.log-20170515
truncating /data/logs/tomcat/catalina.log
发现还是没有真的拷贝到里面:
分割日志时报错:error: skipping "/var/log/nginx/test.access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
答:添加“su root list”到/etc/logrotate.d/nginx文件中即可
如下;
/var/log/nginx/*.log {
        su root list
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        #ifempty
        create 0640 www-data adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}
chmod -R 640 /data/logs/tomcat/
不行的,这一个国外网站有写:https://ma.ttias.be/logrotate-on-rhelcentos-7-complains-about-insecure-permissions-on-parent-directory-world-writable/
来个中文的:https://blog.longwin.com.tw/2016/01/logrotate-perm-modify-rotete-failed-2016/
switching euid to 0 and egid to 1022
tomcat的组Id:1022
[codes]
/data/logs/tomcat/*.log {
    su root tomcat                                                                                                
    daily
    rotate 30
    missingok
    dateext
    notifempty
    #create 0644 tomcat root
    copytruncate
    olddir oldlogs
}
[/codes]

logrotate -v -f -d  /usr/local/tomcat/conf/tomcat.logrotate
reading config file /usr/local/tomcat/conf/tomcat.logrotate
olddir is now oldlogs
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /data/logs/tomcat/*.log  forced from command line (30 rotations)
olddir is oldlogs, empty log files are not rotated, old logs are removed
switching euid to 0 and egid to 1022
considering log /data/logs/tomcat/catalina.log
  log needs rotating
considering log /data/logs/tomcat/localhost-access.log
  log does not need rotating (log is empty)considering log /data/logs/tomcat/localhost.log
  log does not need rotating (log is empty)rotating log /data/logs/tomcat/catalina.log, log->rotateCount is 30
dateext suffix '-20170515'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /data/logs/tomcat/catalina.log to /data/logs/tomcat/oldlogs/catalina.log-20170515
truncating /data/logs/tomcat/catalina.log
switching euid to 0 and egid to 0


情况二:selinux影响:
access("/etc/selinux/config", F_OK)     = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4

service selinux stop
Redirecting to /bin/systemctl stop  selinux.service
Failed to stop selinux.service: Unit selinux.service not loaded.


chcon -Rv --type=var_log_t /data/logs/tomcat
正在更改"/data/logs/tomcat/localhost.log" 的安全环境
chcon: 部分关联无法应用于文件"localhost.log"
正在更改"/data/logs/tomcat/catalina.log" 的安全环境
chcon: 部分关联无法应用于文件"catalina.log"
正在更改"/data/logs/tomcat/oldlogs" 的安全环境
chcon: 部分关联无法应用于文件"oldlogs"
正在更改"/data/logs/tomcat/localhost-access.log" 的安全环境
chcon: 部分关联无法应用于文件"localhost-access.log"
正在更改"/data/logs/tomcat" 的安全环境
chcon: 部分关联无法应用于文件"/data/logs/tomcat"
创建规则容易,如何取消规则?
------------------------------------------

开始-----规则---下拉菜单中选择管理规则和通知。
勾选需要取消的规格,将其删除,确定。

来自:http://wenda.so.com/q/1459278170727172?src=140

创建规则:http://wenda.so.com/q/1369953110068210
背景:在windows下提交了一个git更新,想在linux下强制更新(这个linux下的文件也被我改动了),以windows下提交的为准怎么办?还会出错,如下:
Git pull 强制覆盖本地文件,与在git bash下实践OK,AddTime:2016-9-29

git fetch --all  
git reset --hard origin/master
git pull


来自:http://blog.csdn.net/baple/article/details/49872765


一)出错:
新增文件add commit后,push回原分支失败,报错:
  Counting objects: 20, done.
  Delta compression using up to 24 threads.
  Compressing objects: 100% (11/11), done.
  Writing objects: 100% (11/11), 1.30 KiB, done.
  Total 11 (delta 5), reused 0 (delta 0)
  error: insufficient permission for adding an object to repository database ./objects


二)git本地有修改如何强制更新到远程:
本地有修改和提交,如何强制用远程的库更新更新。我尝试过用git pull -f,总是提示 You have not concluded your merge. (MERGE_HEAD exists)。
我需要放弃本地的修改,用远程的库的内容就可以,应该如何做?傻傻地办法就是用心的目录重新clone一个,正确的做法是什么?

正确的做法应该是:
git fetch --all
git reset --hard origin/master
git fetch 只是下载远程的库的内容,不做任何的合并git reset 把HEAD指向刚刚下载的最新的版本

参考链接:

http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull
实际情况:git mv后的情况及提交,只能分开提交(如果:git commit -a"" fileA fileB...),没法和文件一块Commit! 没有试过:git commit -am"xxx",应该可以。
git rename怎么搞:
设置git库为大小写敏感(不建议)
$
git config core.ignorecase false
使用git mv命令(仅当core.ignorecase为true时可用)
$ git mv ABC.java
Abc.java

$ git status

......
renamed:
ABC.java -> Abc.java
实践发现问题:
1)Linux系统权限不对也会引起下面的问题。
2)有兄弟说那个暂时过渡一下,我是权限问题导致。
Git命令错误记录之git mv: fatal: renaming failed: Permission denied
git mv gittest.net.conf jackxiang.net.conf    
fatal: renaming 'playbook/baige.cctv.com/files/jackxiang.net.conf' failed: Permission denied


运行环境:Windows 7,git version 1.9.5.github.0
解决方法:通过创建一个临时文件夹名字来中转。例如:

git mv oldFolderName tempFolderName
git mv tempFolderName newFolderName
From:http://www.cnblogs.com/sincerely/p/4230531.html
More:http://blog.csdn.net/njafei/article/details/53433023

git mv后的情况及提交,只能分开提交,没法和文件一块Commit:
git commit -m"renamed and deleted file"
[master 2626a4d] renamed and deleted file
4 files changed, 0 insertions(+), 12 deletions(-)
rename playbook/baige.jackxiang.com/files/{api.baiger.com.conf => api.baiger.jackxiang.com.conf} (100%)
delete mode 100644 playbook/baige.jackxiang.com/files/mount.sh
rename playbook/baige.jackxiang.com/files/{upload.baige.com.conf => upload.baige.jackxiang.com.conf} (100%)
rename playbook/baige.jackxiang.com/{manage.baige.jackxiang.net.yml => manage.baige.jackxiang.net.yml} (100%)


git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       renamed:    files/api.baiger.com.conf -> files/api.baiger.jackxiang.com.conf
#       deleted:    files/mount.sh
#       renamed:    files/upload.baige.com.conf -> files/upload.baige.jackxiang.com.conf
#       renamed:    manage.baige.jackxiang.net.yml -> manage.baige.jackxiang.net.yml


http://blog.csdn.net/get_set/article/details/51018142
分页: 6/247 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]