图解证明:当地看北极星仰角,就是当地纬度;两者
图解证明:当地看北极星仰角,就是当地纬度;两者互为充分必要条件! 第一种情况:当地在北极点上

第二种情况:当地位于赤道上

http://wapwenku.baidu.com/view/fb2d8e52f46527d3240ce0ec.html?ssid=0&from=844b&uid=0&pu=sz@1320_2001#3
背景:发现df 特别慢,用strace df -h ,发现卡在/mnt/backup,想cd /mnt卡住了,于是,怎么办?发现NFS的Server端都宕机了。
cat /proc/mounts  
umount -lf   /mnt/backup
umount: only root can do that
Root:
umount -lf   /mnt/backup
More: http://justwinit.cn/post/6800/
-------------------------------------------------------------------------------------
这个问题是第二次遇到了。这次一定要记下来,免得日后麻烦!!
问题描述:

有两台服务器,其中一台向另一台通过nfs共享分区,如下:

server A: nfs server
server B: nfs Client

事件发生: Server A,B 因故障同时重启。 重启后,用putty登陆到server A ,运行‘df’命令:
           $ df

     $ Filesystem           1K-blocks      Used Available Use% Mounted on

    /dev/sda5             80632188   8899080  67636940  12% /

    none                   4086484         0   4086484   0% /dev/shm

    /dev/sda2            201582252  32076524 159265900  17% /opt

    /dev/sda3            201582252  44511180 146831244  24% /fs

    /dev/sda7             20161172    332916  18804116   2% /usr/local

    /dev/sda8             20161172     78360  19058672   1% /tmp

           $(没有出现这个命令提示符)  
        
无奈,只好再用putty 登陆Server A ,将 df 进程kill......


只好尝试重新mount

$mount -t nfs B:/data /mnt/data

failed: RPC Error: Program not registered


哦~~~ ,原来B的nfs 服务没有start...  登陆B:
      $serive nfs restart

重新再A上运行df,仍然死掉...

想到先卸载,在挂载:

$umount /mnt/data

device is busy 。



运行fuser -mk /mnt/data 杀掉访问/mnt/data所有进程。

/mnt/data: Stale NFS file handle



在server A 运行 A , ok ~~~

重新mount -t nfs B:/data /mnt/data  打完收工。

来自:http://blog.csdn.net/daniel_cao_/article/details/4584443
背景:jenkins有一个好处是可以对多个项目进行用户登录集成发布,而自己搞就是Git钩子触发写的脚本去rsync部署一下,这样没有配置管理的概念,说实话配置管理对于程序员来讲可能刚开始并不理解,但它的存在也有它的道理,没有用为何还催生了配置管理员了呢?是吧。

git hook 加一个rsync脚本就可以完成了,在500块钱的VPS上面搞jenkins,不如在本地搞?
放本地没时间呐,我就下班在地铁上弄弄,网络的好控制。
http://www.tuicool.com/articles/yyEfu2u

--------2017年干点正事---------
跳梁者(73465XX)  10:20:46
你看看你们这些人
顾问好不容易 不去群里逗你们了 办点正事儿 也不支持
赶紧弄点难得 让顾问多忙会儿
Persi(62832XX)  10:22:09
给swoole加几个功能啊,这个事就够他忙的了


maybe this

$parts = isset($structure->parts) ? $structure->parts : false ;

From:http://stackoverflow.com/questions/10143172/notice-undefined-property-how-do-i-avoid-that-message-in-php/10143274

Postman 不指定

WEB2.0 jackxiang 2017-6-27 22:37
此软件模拟POST,GET,PUt的协议很牛逼,是一把梭:
http://download.csdn.net/detail/c15959140478/9728559

官网:https://www.getpostman.com/apps
rpm -ihv python-simplejson-2.0.9-8.el5.x86_64.rpm
warning: waiting for transaction lock on /var/lib/rpm/__db.000

rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all


再安装也就好了:
rpm -ihv python-simplejson-2.0.9-8.el5.x86_64.rpm
Preparing...                ########################################### [100%]
   1:python-simplejson      ########################################### [100%]
================================================================
故障现象:
[root@localhost Mysql4.1.14.Rhel3]# rpm -ivh MySQL*
warning: waiting for transaction lock on /var/lib/rpm/__db.000

解决方法:
   因为prm数据库出现损坏导致,可能导致多数rpm软件的升级、安装或者删除都会有问题。
此错误,请以root身份输入以下命令:
rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all

来自:http://blog.csdn.net/yunsongice/article/details/5587631
fsck
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda3: recovering journal
Error reading block 105417495 (Attempt to read block from filesystem resulted in short read).  Ignore error<y>? yes

Force rewrite<y>? yes

fsck.ext4: Bad magic number in super-block while trying to re-open /dev/sda3
e2fsck: io manager magic bad!

============================================
尽管上面没有啥文件,我选了Yes,于是出了问题:
fsck
-bash: /sbin/fsck: Input/output error
-------------------------------------------------
要选No:

尝试执行了一下fsck 直接出现了 修复提示,无任何异常!

如果出现这样的提示,就需要小心:

root@test ~]# fsck
fsck 1.35 (28-Feb-2004)
e2fsck 1.35 (28-Feb-2004)
/dev/sda1 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? no

check aborted.
[root@test ~]#
一定要选择NO,先拆卸文件系统,否则 对文件系统造成毁灭性的打击。


来自:http://blog.csdn.net/snowfoxmonitor/article/details/19121531
从网上搜索到方法进行解决:
cat /etc/zookeeper/conf/zoo.cfg
找到dataDir=/var/lib/zookeeper
切换到路径/var/lib/zookeeper
cd /var/lib/zookeeper
查看目录下的文件:
ls
存在version-2
删除version-2
mv ./version-2 ./version-2.bak
然后在zookeeper的实例中添加角色主机,启动成功。

看了老外的文章,下面是处理方法:
more /etc/zookeeper/conf.dist/zoo.cfg
找到datadir
[root@slave2 zookeeper]# pwd
/var/lib/zookeeper
[root@slave2 zookeeper]# ls
myid version-2 version-2.bak
清空version-2目录下的所有文件

来自:http://www.linuxdiyf.com/linux/16941.html
安装没有遇到问题,TortoiseGit更新需要卸载时出现的问题,网上说把Exporer给停止掉再重启,发现不行。
再就是有人说那个文件夹C:\Windows\TEMP的权限不对引起,经过一阵折腾,发现的的确是那个问题引起的:
在目录上->右键->属性->安全->组或用户名->TrustedInstaller 权限全给勾上即可。

http://www.win7china.com/html/24965.html
http://www.win7china.com/html/24965.html
方法/步骤
把鼠标放到Win8屏幕的最左下角,等待Win8 Metro界面的缩略图出现后点击鼠标右键,在弹出的菜单中选择“命令提示符(管理员)”
打开的“命令提示符(管理员)”
找到自己将要安装的程序路径,比如:我要安装的这个程序在D盘的Others文件夹下
点击路径那一栏,把路径复制出来,然后再复制程序名称
在“命令提示符(管理员)”中输入 msiexec /package 你将要安装的程序的完整路径及程序名 (注意空格),比如:我是要安装D盘Others文件夹下的msxml
然后按回车键,安装程序就会自动启动,此时,你在安装的过程中就不会碰到2502、2503的错误了
pmap -p pid
背景:突然Mount的磁盘脱落挂载了,是不是有人上去做过安全给搞丢了?想看看都是谁?

last -20



lastlog |less




Linux下查看用户登陆历史记录,可以用root用户下的last命令查看:
1.查看单个用户的操作历史
[root@DB-Server ~]# cat /home/username/.bash_history
#username要查看的用户名
2.使用root登陆可查看用户登陆历史
[root@DB-Server ~]# su root
[root@DB-Server ~]# last -10
root     pts/1        :0.0             Wed Dec 18 09:54   still logged in  
root     pts/4        :0.0             Wed Dec 18 09:43 - 09:48  (00:04)    
root     pts/1        :0.0             Wed Dec 18 09:43 - 09:48  (00:05)    
root     pts/3        192.168.103.79   Wed Dec 18 09:41 - 12:40  (02:59)    
root     pts/4        :0.0             Wed Dec 18 09:28 - 09:30  (00:01)    
root     pts/3        :0.0             Wed Dec 18 09:27 - 09:30  (00:02)    
root     pts/2        192.168.103.29   Wed Dec 18 09:27   still logged in  
root     pts/1        :0.0             Wed Dec 18 09:27 - 09:42  (00:15)    
root     pts/2        :0.0             Wed Dec 18 09:23 - 09:25  (00:01)    
root     pts/1        :0.0             Wed Dec 18 09:22 - 09:25  (00:02)
#查看最近10次用户历史操作记录
last 命令:

功能说明:列出目前与过去登入系统的用户相关信息。

语 法:last [-adRx][-f ][-n ][帐号名称…][终端机编号…]

参 数:

-a 把从何处登入系统的主机名称或IP地址,显示在最后一行;

-d 将IP地址转换成主机名称;

-f 指定记录文件;

-n 或- 设置列出名单的显示列数;

-R 不显示登入系统的主机名称或IP地址;

-x 显示系统关机,重新开机,以及执行等级的改变等信息;

lastlog可简单查看所有用户最后一次的登陆时间。

来自:https://zhidao.baidu.com/question/91897351.html
lam是用php写的,所以使用时需要php支持很多模块,像对ldap的支持,对zip的支持。
php安装模块见http://fffo.blog.163.com/blog/static/211913068201401464238334/

1、官网下载
wget http://prdownloads.sourceforge.net/lam/ldap-account-manager-4.3.tar.bz2?download
2、解压
tar -xjf  ldap-account-manager-4.3.tar.bz2
3、直接移动到apache 根目录
mv  ldap-account-manager-4.3 /usr/local/apache/htdocs/lam
4、给它可以访问的权限
chmod 777 -R /usr/local/apache/htdocs/lam
5、进入配置目录
cd /usr/local/apache/htdocs/lam/config
6、创建主参数文件
cp config.cfg_sample config.cfg
7、创建连接ldap服务器参数文件
cp lam.conf_sample lam.conf
vim lam.conf
修改 所有的dc=1v,dc=cn
8、web访问
http://203.195.187.200/lam/templates/login.php

上面的模式是只限管理员登录模式。现在切换到用户登录模式
点击LAM配置——>编辑服务器配置文件——>默认密码是lam(可修改)——>通用设置——>安全设定

From:http://blog.csdn.net/u012461550/article/details/42608781

我的是在:
/usr/local/lam/etc/unix.conf
error: insufficient permission for adding an object to repository database .git/objects  
fatal: failed to write object  
fatal: unpack-objects failed
$git pull
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 24 (delta 14), reused 3 (delta 1)
error: insufficient permission for adding an object to repository database .git/objects
首先,得是Root:
#id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

然后:到那个出现 错的项目目录下面,它下面有一个.git这是肯定的,
1)对这个.git目录权限给斧正:
chmod 755 .git
chown -R xiangdong.irdcops .git  

2)给它下面的文件和文件夹的权限斧正:
cd .git
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;

参考:http://blog.sina.com.cn/s/blog_87b9bbc70102uyo3.html
rpm -ihv python-simplejson-2.0.9-8.el5.x86_64.rpm
warning: waiting for transaction lock on /var/lib/rpm/__db.000

rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all


再安装也就好了:
rpm -ihv python-simplejson-2.0.9-8.el5.x86_64.rpm
Preparing...                ########################################### [100%]
   1:python-simplejson      ########################################### [100%]
================================================================
故障现象:
[root@localhost Mysql4.1.14.Rhel3]# rpm -ivh MySQL*
warning: waiting for transaction lock on /var/lib/rpm/__db.000

解决方法:
   因为prm数据库出现损坏导致,可能导致多数rpm软件的升级、安装或者删除都会有问题。
此错误,请以root身份输入以下命令:
rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all

来自:http://blog.csdn.net/yunsongice/article/details/5587631
git commit -am"" #提交除开没有Add的文件外的所有修改,如:git rm ,git mv,git add....
-----------
背景:一般是自己领先master几个版本,二是自己落后master几个版本,三是自己无论落后还是先进都和Master对齐(比如:分支,git checkout -b feature,修改index.html,再转到git checkout master,再合并分支到master,git merge feature...,最后,解决冲突并git add index.html,当然也可以commit -am....,提交并无误的情况下,删除git的特征分支:git branch -d  feature ),如何解决上面三种冲突并能正常提交呢?
零、关于从暂存区回退方面的文章见:https://justwinit.cn/post/9253/
一、Git服务端版本领先问题参考:https://justwinit.cn/post/9300/
二、Git服务端版本落后问题本文解决:
#git push
To git@git.boosh.com.cn:irdcops/spec.boosh.com.cn.git
! [rejected]        master -> master (fetch first)
error: 无法推送一些引用到 'git@git.boosh.com.cn:irdcops/spec.boosh.com.cn.git'
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

[root@levoo-php-memcached-reids-zookeeper_bj_sjs_10_51_77_34:/tmp/gitstudy/conflict/spec.boosh.com.cn]
#git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
展开对象中: 100% (3/3), 完成.
来自 git.boosh.com.cn:irdcops/spec.boosh.com.cn
   c333506..47f275b  master     -> origin/master
自动合并 README.md
冲突(内容):合并冲突于 README.md
自动合并失败,修正冲突然后提交修正的结果。

====================git status 提示双方修改:README.md====================
#git status
位于分支 master
您的分支和 'origin/master' 出现了偏离,
并且分别有 1 和 1 处不同的提交。
  (使用 "git pull" 来合并远程分支)
您有尚未合并的路径。
  (解决冲突并运行 "git commit")

未合并的路径:
  (使用 "git add <文件>..." 标记解决方案)

        双方修改:   README.md

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

=====================查看文件=================================
#cat README.md  
<<<<<<< HEAD
conflict  9:57 modify
=======
老王在这儿提交了一个并给提交到线上去了。-addTime:20170410 9:59
>>>>>>> 47f275befbc4fcd306eb4978fb75dde0545b040b

==================解决README.md文件===============
cat README.md
conflict  9:57 modify
老王在这儿提交了一个并给提交到线上去了。-addTime:20170410 9:59

================再查看该文件并pull一下查看状态================
git pull
error: Pull is not possible because you have unmerged files.
提示:请在工作区改正文件,然后酌情使用 'git add/rm <文件>' 命令标记
提示:解决方案并提交。
fatal: Exiting because of an unresolved conflict.

===理解修改尚未加入提交(使用 "git add" 和/或 "git commit -a")=====
git commit-m与-am的区别:https://segmentfault.com/q/1010000005900988
标识:也就是说得理解那几个区,这个-a 是指虽然跟踪了,但是没有git add纳入暂存区(自己已经纳入了,但是因为冲突了,别人修改了,它并没有在自己这边的暂存区里的意思。还得通过git add一次纳入自己本地的暂存区,或直接-a就能把本地合并冲突的文件直接纳入到暂存区,有点绕,应该就是这个意思,就可以git push解决这个冲突了。)
[注意]git commit -am可以写成git commit -a -m,但不能写成git commit -m -a,如果里面有一些草稿文件也就是并不需要提交的其它的文件本就在里面,会被一并提交上暂存区,这个一定要注意用-am时要把它们都删除掉,只留下需要入暂存区的文件,否则,会把所有的没有用的文件纳入后,再git push一下就会出现把很多没有用的文件提交上git服务器上去了。

==========实践上面的理解=============================================
git commit -am"解决冲突后,纳入自己的暂存区里 commit -am中的a就是这个意思,代替了git add 。"
[master 0006642] 解决冲突后,纳入自己的暂存区里 commit -am中的a就是这个意思,代替了git add 。

============解决冲突后放到暂存区后,再Git push也就成功能======================================
git push
对象计数中: 6, 完成.
压缩对象中: 100% (5/5), 完成.
写入对象中: 100% (6/6), 873 bytes | 0 bytes/s, 完成.
Total 6 (delta 0), reused 0 (delta 0)
To git@git.boosh.com.cn:irdcops/spec.boosh.com.cn.git
   47f275b..0006642  master -> master


最后,果然提交成功,在那个老王的git目录下,再 git pull无问题,查看内容也就下来了:
git pull
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
展开对象中: 100% (6/6), 完成.
来自 git.boosh.com.cn:irdcops/spec.boosh.com.cn
   47f275b..0006642  master     -> origin/master
更新 47f275b..0006642
Fast-forward
README.md | 1 +
1 file changed, 1 insertion(+)

cat README.md
conflict  9:57 modify
老王在这儿提交了一个并给提交到线上去了。-addTime:20170410 9:59



三、git reset revert 回退回滚取消提交返回上一版本,最常用的是合并feature 分支的冲突解决:
一般没有别人开发出现冲突,是因自己回退引起的,
git reset revert 回退回滚取消提交返回上一版本:http://justwinit.cn/post/9253/
解决冲突合并分支:
http://m.toutiao.org/group/6407171134127472898/?iid=8936996522&app=news_article&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1
实践成功如下步骤,注意,这种合并都是基于那个暂存库:

显示本地分支:
git branch
* master

新建分支
准备新的feature1分支,继续我们的新分支开发:
#git checkout -b feature  #它是建立并进入到刚进入的分支。
切换到一个新分支 'feature'
再次建立的提示:
git checkout -b feature
fatal: 一个分支名 'feature' 已经存在。

查看分支的建立情况,有了:
git branch
* feature
  master

修改文件 修改index.html:
#echo conflict >> index.html
vi index.html
hello jack ,write by feature...

在feature分支上提交:
git add index.html
git commit -m"提交到分支" ./index.html
===================================================================================================
切换回master分支:
git checkout master
A       index.html
切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。


master分支修改:
在master分支上修改index.html:
echo master_conflict >> index.html
vi index.html
add by jack from master...
提交到暂存库:
git commit -am"写两个字试一试吧~"

分支合并
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
git merge feature
自动合并 index.html
冲突(内容):合并冲突于 index.html
自动合并失败,修正冲突然后提交修正的结果。

#cat index.html
create confilict with feature branch
master_conflict
<<<<<<< HEAD
add by jack from master...
=======
jackX

hello jack ,write by feature...
>>>>>>> feature

#git status  #这儿注意了:用git commit -am"" 还是用git add index再git commit -m"" index.html的区别,前面有讲到。
位于分支 master
您的分支领先 'origin/master' 共 1 个提交。
  (使用 "git push" 来发布您的本地提交)
您有尚未合并的路径。
  (解决冲突并运行 "git commit")

未合并的路径:
  (使用 "git add <文件>..." 标记解决方案)

        双方修改:   index.html

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
#git commit -am"直接am实现不用git add 就提交到master的暂存库里"  
[master 386a151] 直接am实现不用git add 就提交到master的暂存库里
#git push
对象计数中: 12, 完成.
压缩对象中: 100% (11/11), 完成.
写入对象中: 100% (12/12), 1.20 KiB | 0 bytes/s, 完成.
Total 12 (delta 5), reused 0 (delta 0)
To git@git.boosh.com.cn:irdcops/spec.boosh.com.cn.git
   e171ea5..386a151  master -> master


最后,删除feature分支:
# git branch -d feature
已删除分支 feature(曾为 4bcdf8e)。



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
想从线上获取并覆盖本地:
git reset --hard
git pull
实践如下:
git reset --hard
HEAD 现在位于 a7e4eed rollo back
git log
commit a7e4eed0755b8b8c28de63ecc735565169466f8d
Author: 詹金斯 <17080156868@163.com>
Date:   Mon Mar 27 20:55:07 2017 +0800
    rollo back

再想回退是不行的:
git revert 0b82ab0dd0c898e0b7c18714a8b81b417f80a7bb zookeeper-3.4.9.el6.x86_64.spec
fatal: bad revision 'zookeeper-3.4.9.el6.x86_64.spec'

查看状态:
git status
位于分支 master
您的分支和 'origin/master' 出现了偏离,
并且分别有 2 和 2 处不同的提交。
  (使用 "git pull" 来合并远程分支)
未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)

再从Git服务器上拉取:
git pull
自动合并 centos7/zookeeper-3.4.9.el6.x86_64.spec
冲突(内容):合并冲突于 centos7/zookeeper-3.4.9.el6.x86_64.spec
自动合并失败,修正冲突然后提交修正的结果。

=======================================================
如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,

在发布这个配置文件的时候,会发生代码冲突:

error: Your local changes to the following files would be overwritten by merge:
        protected/config/main.php
Please, commit your changes or stash them before you can merge.

如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

git stash
git pull
git stash pop
然后可以使用Git diff -w +文件名 来确认代码自动合并的情况.



反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:

git reset --hard
git pull
其中git reset是针对版本,如果想针对文件回退本地修改,使用

在CODE上查看代码片派生到我的代码片
git checkout HEAD file/to/restore  


参考自:http://blog.chinaunix.net/uid-10415985-id-4142896.html
http://blog.csdn.net/iefreer/article/details/7679631
背景:用Windows下的Excel,再倒腾成Txt,在Linux下统计发现少一行,最后,用vi对最后一行的行尾按回车后再加一行,后删除这一行,再统计就对了,具体原因如下。
今天从一个服务器列表来批量执行expect脚本进行Tivoli Endpoint Client的安装,从excel表格中拷贝出服务器名导入到txt文件上传到服务器后,执行wc -l统计发现少了一行,反复对比确认不存在遗失的条目,那么为什么wc -l少一行呢?
查询帮助文件:
[root@managevm1 ~]# wc --help

-l, --lines            print the newline counts

-l用来统计新行的个数,那么用什么来标记新行的开始呢?对了!用换行符\n。于是用 vi编辑器打开txt文件,在最后一行的行尾回车下,然后ESC推出到命令模式,dd删除自然生成的最后一个空行。保存退出再次运行wc -l统计,这样就和excel中的行数一样了。

=============================================================
先简单介绍

wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出

格式:wc file

命令参数:

-c 统计Bytes数(字节数),并显示文件名

-l 统计行数:使用换行符‘\n’作为行结束标志,实际是统计换行符个数

-m 统计字符数。这个标志不能与 -c标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

-help 显示帮助信息

--version 显示版本信息

实例:

wc test.txt

6  24 132test.txt

默认输出:行,字数,字节数



test.txt内容

Cat test.txt

test1 name1 age1 sex1

test2 name2 age2 sex2

test3 name3 age3 sex3

test4 name4 age4 sex4

test5 name5 age5 sex5

test6 name6 age6 sex6

问题:wc 统计行数时少一行:
因为wc ?l是按\n作为行结束符统计行数,所以最后一行如果没有\n的话会统计丢失。

实例:比如,在windows下生成同上面test.txt相同的文件testtt.txt,上传到linux下:
cat testtt.txt

test1 name1 age1 sex1

test2 name2 age2 sex2

test3 name3 age3 sex3

test4 name4 age4 sex4

test5 name5 age5 sex5

test6 name6 age6 sex6[wizad@srv26 lmj]$

可以看出结尾有点奇怪。这是因为文件末尾无\n,而是直接用了文件结束符EOF。这样文件使用wc统计就会少一行:

wc -l testtt.txt

5 24 136 testtt.txt

使用管道也不行:

cat testtt.txt | wc -l

5

为什么linux下没有这样的问题?
         因为vim编辑器会自动在文件结尾加上\n,在加上文件结束符EOF。(linux下文本文件主要按处理,所以vim会末行自动加\n)

而对windows文件用dos2unix转化也不行:
[wizad@srv26 lmj]$ dos2unix testtt.txt

dos2unix: converting file testtt.txt toUNIX format ...

[wizad@srv26 lmj]$ wc testtt.txt

5  24131 testtt.txt

可以看出windows文件在linux下还是有兼容问题的。文件字数没变24,byte数少5个是windows下行结束符是回车\r+换行\n。而linux下只是换行\n

Vim二进制可以看到不同,\n显示为.,文件结尾没有

来自:http://blog.csdn.net/sws9999/article/details/7942074
内容:
背景:提交代码时出现了这个头指针分离自15735cd的问题,提示让:git branch <新分支名> 1c8c2b1,git branch dev 1c8c2b1,而默认创建分支是:git checkout -b dev,这个git branch dev 1c8c2b1,1c8c2b1前面还有c41273a,再前面就是分离的15735cd,于是,把分离后的两个版本,1c8c2b1 和c41273a 建立新的分支,再合并Merge回Master即可达到和提交一样的,找回这丢失的两次提交。


https://git.oschina.net/swoole/swoole/tree/v1.9.11  
git clone https://git.oschina.net/swoole/swoole.git  #git checkout 1.9 然后编译,因默认clone都是最新版。
#git checkout 1.9
分支 1.9 设置为跟踪来自 origin 的远程分支 1.9。
切换到一个新分支 '1.9'

#git branch -a
* 1.9
  master
  remotes/origin/1.9
  remotes/origin/2.0
  remotes/origin/2.0.1
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/swoole-1.7
  remotes/origin/swoole-1.8

#git status
位于分支 1.9
您的分支与上游分支 'origin/1.9' 一致。
无文件要提交,干净的工作区

rm -rf .git  #干掉没有用的.git,我只要这个版本的源代码并打包成tar.gz,然后作为rpmbuild -ba swoole-php71-1.9.11.el7.x86_64.spec


把 swoole-php71-1.9.11.el7.x86_64.spec 放进Git的Server端仓库出现问题了,如下:
#git status
头指针分离自 15735cd
无文件要提交,干净的工作区

[root@danke-php-memcached-reids-zookeeper_bj_sjs_10_51_77_34:/home/test/rpmbuild/SPECS/centos7/php71]
#git checkout master
警告:您正丢下 2 个提交,未和任何分支关联:

  1c8c2b1 rpm包Swoole升级到最新版本,以及PHP-CP一块升级提交SPEC文件。
  c41273a 删除掉的Swoole版本的Spec文件,添加新的Swoole版本的Spec文件。

如果您想要通过创建新分支保存它们,这可能是一个好时候。
如下操作:

git branch <新分支名> 1c8c2b1

切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。


#git rev-list 15735cd     ##指针在这儿丢失了:头指针分离自 15735cd。
15735cda1005046d7d671a2f1692f0e4d6edb977
bfaa314f6a7a212a386b3117c59a7e8be0c077a0


#git rev-list 1c8c2b1     #这个是最新的但是没有被记录到Git的Master分支服务器仓库里面。
1c8c2b1968cb303ee103fff62272a31a1b43fb57   #没有记录到,Log:1c8c2b1 rpm包Swoole升级到最新版本,以及PHP-CP一块升级提交SPEC文件。
c41273ad0cb545db8b6f1d4eb81b006552c915c9   #没有记录到,Log:c41273a 删除掉的Swoole版本的Spec文件,添加新的Swoole版本的Spec文件。
15735cda1005046d7d671a2f1692f0e4d6edb977   #指针在这儿丢失了:头指针分离自 15735cd。
bfaa314f6a7a212a386b3117c59a7e8be0c077a0  

怎么办?
这时候可以执行git branch <新分支名> 1c8c2b1创建一个新的分支,这个分支是基于头指针分离下修改提交的952770d创建的。
然后,再合并回Master里面去即可。
操作步骤如下:
git branch dev 1c8c2b1

切换过Dev分支,看提交的Log在不?在就回到Master合并:
#git checkout dev
切换到分支 'dev'
果然在,如下:
#git log
commit 1c8c2b1968cb303ee103fff62272a31a1b43fb57
Author: 詹金斯 <13880156868@163.com>
Date:   Thu Jun 1 22:56:43 2017 +0800

    rpm包Swoole升级到最新版本,以及PHP-CP一块升级提交SPEC文件。

commit c41273ad0cb545db8b6f1d4eb81b006552c915c9
Author: 詹金斯 <13880156868@163.com>
Date:   Thu Jun 1 20:31:59 2017 +0800

    删除掉的Swoole版本的Spec文件,添加新的Swoole版本的Spec文件。

回到Master,直接合并到Master分支,如下:
Merge branch 'dev'
Master的头指针出现:头指针分离自 15735cd,新建立Dev分支,git branch dev 1c8c2b1,合并回Master来。 ----这一行是注释,后Vim保存即可。
# 请输入一个提交信息以解释此合并的必要性,尤其是将一个更新后的上游分支
# 合并到主题分支。
#
# 以 '#' 开头的行将被忽略,而且空提交说明将会终止提交。

保存后,跳到这儿了:
#git merge dev
自动合并 centos7/php71/swoole-php71-1.9.11.el7.x86_64.spec
Merge made by the 'recursive' strategy.
centos7/php71/php-cp-php71-1.5.0.el7.x86_64.spec                               |  2 +-
...swoole-php71-1.9.10.el7.x86_64.spec => swoole-php71-1.9.11.el7.x86_64.spec} | 10 +++++-----
centos7/tomcat-7.0.77.el6.x86_64.spec                                          |  1 -
3 files changed, 6 insertions(+), 7 deletions(-)
rename centos7/php71/{swoole-php71-1.9.10.el7.x86_64.spec => swoole-php71-1.9.11.el7.x86_64.spec} (89%)


再确定合并及注释也Ok了,如下:
#git log
commit 432fbac58b19eb6a799d356b82d087a5340a1411
Merge: 78dab85 1c8c2b1
Author: 詹金斯 <13880156868@163.com>
Date:   Thu Jun 1 23:24:33 2017 +0800

    Merge branch 'dev'
    Master的头指针出现:头指针分离自 15735cd,新建立Dev分支,git branch dev 1c8c2b1,合并回Master来。

成功!
git branch -D 大写的D 删除分支,git branch -D dev:
#git branch -D dev
已删除分支 dev(曾为 1c8c2b1)。
参考:http://blog.csdn.net/yuelengloulan/article/details/72823420
分页: 16/330 第一页 上页 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]