背景:阿里私有云呐,出现Agent异常,查各种配置均没有问题,后把EDAS的agent服务器均重启了又好了(重启6台中的一台还是有问题),东软哥们问阿里说是给他来了句,叫什么地址漂移,不知道什么鬼高科技。查一下了解了解。

   采用地址漂移技术,利用虚拟IP地址来绑定主服务器,可有效解决不能利用组播的情况下,多台服务器集群之间的信息交互问题。此方法具有一定的代表性,在很多行业可以采用。  双机集群方式广泛应用于各级航空飞行管制中心,两台中心服务器通过网络构成一套高可靠性双机热备份系统,同步工作、互为备份,当主机发生故障时,自动切换到备机工作,系统不间断运行。而地址漂移技术是当其中一台主机有故障时,另一主机接管故障主机的网络IP地址,使网络仍能正常运行。
三是采用地址漂移技术,给管制中心分配一个航空管制中心虚拟IP 地址,航空管制中心之间传递情报采用此IP地址,然后由各航空管制中心的主服务器与此IP地址绑定,负责接收和发送情报。同时在主服务器启动一个三通进 程,所谓三通进程是指此进程负责接收信息,然后将收到的信息分别转发到集群内两台服务器,类似于水龙头的三通,因此称之为三通进程。主服务器收到一份情报 后,送往局域网内主服务器和备服务器的接收进程。当主机切换为备机时,此服务器卸载此虚拟IP地址,切换为主机的服务器加载虚拟IP地址,并启用三通进程 负责接收和分发情报。虚拟IP地址在主备服务器之间漂移,也称之为地址漂移技术,目前很多集群软件也采用此技术来解决集群内多台计算机只有惟一IP地址的 问题。
文中有说ARP+Socket实现的。详情如下:

阅读全文
Redis的慢日志是一个系统记录了超出规定的执行时间查询。执行时间不包括I/O操作,比如与客户会话,发送回复等等,只是实际执行的命令(这就是线程被阻塞而无法执行命令的唯一阶段所需的时间为在此期间其他请求)。可以用两个参数来配置的慢日志:slowlog-log-slower-than告诉Redis是什么的执行时间,以微秒为单位,以超过为获得记录的命令。需要注意的是负数禁用慢日志,而零值强制每个命令的记录。slowlog-max-len是慢日志的长度。最小值是零。当一个新的命令被记录和慢日志已处于其最大长度时,最早的一个是从记录的命令队列中移出以腾出空间。该配置可以通过编辑redis.conf完成或当服务器使用CONFIG GET和Config中设置的命令运行。

一、Redis默认记录超过10000us的命令:
10.64.*.54:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"


二、默认保留128条慢查询日志:
10.64.*.54:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"


三、慢查询日志查询,2条:
[root@rh08 ~]# redis-cli -h 10.64.*.54
10.64.6.54:6379>  slowlog get 2
1) 1) (integer) 2
   2) (integer) 1470219973
   3) (integer) 36910
   4) 1) "info"
2) 1) (integer) 1
   2) (integer) 1469739564
   3) (integer) 14997
   4) 1) "save"
知识只求寻常实用。在众人面前,即使你具有非凡的才智也要装作不知。人的思维方式各异,就像人的胃口一样。不要作古人的深沉,但要和今人同味。要注意人数的多寡,这是最要紧的。要想出人头地,先得在品味上随大流。即使过去更令人倾心,明智的人也会努力适应现时而调整自己,不论是在思想的包装还是在身体的包装方面。这一法则可放之四海,只有善字除外,因为人需要时时行善。许多东西看似陈旧古板,比如讲真话,守诺言。善良的人看起来属于美好的过去,但却常受人爱戴。这种人虽有,却非常稀少,人们多半不仿效他们。如果一个时代里恶意盛行,善行难觅,那该是何等可悲的时代!明智之人只是尽力自保,纵使不能尽如心愿。希望他们乐意接收命运所赐而不是向命运讨要!
一个很难的是“知行合一”。学知识很容易,但是把知道的东西做出来,并且做出来的东西让别人喜欢,是多么地难。所以我经常不好意思地说,不是我很狂,我看到学者专家讲评的时候,说说我比他还会说,但做起来很难。知行合一是企业家非常难做到的东西。

学知识很容易,但是把知道的东西做出来,并且做出来的东西让别人喜欢,是多么地难。
说我比他还会说,但做起来很难。知行合一是咱们面前非常难做到的一个东西,加油吧。
像discuz论坛啥的, 要是楼数多,分页发现有这个问题,导致mysql的cpu负载较高,分页需要优化,如limit 222222,20,从20万以上取这样的。
再说是对mysql的INNODB引擎进行分区,以提高mysql的性能:

资料:
【分页查询时如何优化MySQL的性能?必藏】
http://toutiao.com/group/6303291874997141762/?iid=4621176401&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

MySQL架构优化实战系列3:定时计划任务与表分区:
http://sc.qq.com/fx/u?r=BHE7tkA

MySQL架构优化实战系列2:主从复制同步与查询性能调优:
http://blog.csdn.net/huaweitman/article/details/51822082

MySQL架构优化实战系列1:数据类型与索引调优全解析:
http://udn.yyuap.com/article-11729.html
背景:公司发的本本发现关闭Alt+F4,需要加上Fn键盘,那个音量键盘,默认就是F3即可,这产品设计得是为用户,不是为开发的呀,得修改。
thinkpad X250笔记本ALT+F4组合键不能用 只能FN+ALT+F4:
这款笔记本要使用 F1 - F12 功能,需要同时按 Fn 键和所需的功能键;
这是默认设置。要更改默认设置,方法如下。
笔记本开机之后在品牌LOGO画面按F2,进入到BIOS设置界面。
从 BIOS Setup Utility 菜单中选择 Config。
从Keyboard/Mouse 子菜单中找到Fn Key Lock:禁用 Fn 键锁定即可。


实践发现有一项是F1-F12什么的给Enable,好像就好了。


实际怎么弄的呢?步骤如下:
1.开机进入时,按F12,不是F2,也不是del,进入到一个界面。这个界面好像又是一个tab的,如下:
Boot Menu  | App Menu --》 Setup
2.Config->Keyboard/Mouse->F1-F12 as Primary Function [enable], 这下Al+F4,就能使用了,不用按FN这个键了。
背景:经常看到为了省流量出现js代码或css代码经过了压缩,怎么不用工具,直接在浏览器里看呢?如下 巧用Chrome格式化压缩后的js文件。
实践如下:F12->Source->左侧找到找看的js->选中js->选中后右侧有一个line1、column1-> 在它的左边有一个花括号->于是就会变成格式化正常可看代码。
———————————————————————————————————————————————————————————————————

按下快捷键F12,或者Ctrl+Shift+I
我们点击Sources中的一个百度Javascript代码文件。
可以看出,这些代码是经过压缩的。如果直接阅读这一块代码,很快就会感到理解困难了。
我们点击下方的大括号{}图标,即可使用Pretty Print功能了。

来自:http://blog.csdn.net/yenange/article/details/7162405
背景:如果一个文件目录很大且需要定时同步,怎么办,linux下有一个rsync,同步到的可能是本地,更多是同步到把nas给mount上来的一个网络超大磁盘,这就很有用了。


rsync -avh --delete gliethttp/ /media/udisk/gliethttp
其中gliethttp/为src这里的结尾/很重要,这表示同步的是gliethttp/目录中的内容,而不是gliethttp目录本身.
/media/udisk/gliethttp为dst
表示将src中的内容与dst进行严格同步,如果dst不存在,那么创建之.
-r 表示递归目录
-t 表示保留时间
-l 表示保留符号链接

我们也可以使用ssh辅助rsync远程同步文件夹
luther@gliethttp:~$ rsync -avh --delete luther@127.0.0.1:/media/udisk/gliethttp/ gliethttp.local
默认使用ssh远程登录luther用户,然后使用ssh加密通道进行数据传输,同步/media/udisk/gliethttp/文件夹中的内容到本地的gliethttp.local目录下

网上有通过配置/etc/rsyncd.conf来设置访问权限,个人感觉很不安全,远远不如使用成熟的ssh进行数据加密,对于用户认证,可以将生成的.ssh对应的key发布出去,这样就不用每次输入密码了[luther.gliethttp]
《windows登陆远程Linux主机的一种途径putty-详细安装使用过程》
下面看看如何创建key
1. luther@gliethttp:~$ ssh-keygen -t rsa
2. 将~/.ssh/id_rsa.pub改名为/root/.ssh/authorized_keys
3. 将私钥~/.ssh/id_rsa拷贝到远程客户端的~/.ssh/目录下
当然可以安装rsync的GUI版本grsync
luther@gliethttp:~$ sudo apt-get install grsync

来自:http://blog.chinaunix.net/uid-20564848-id-74200.html
DokuWiki 升级方法
diff -ruN /data/htdocs/wiki.jackxiang.com/  dokuwiki/ > wiki.diff
cp -Rf /data/htdocs/wiki.jackxiang.com /data/backup/wiki.jackxiang.com.backup.2016.7.28
cd /data/htdocs/wiki.jackxiang.com
patch -p1 < /tmp/doukuwiki/wiki.diff --dry-run
patch -p1 < /tmp/doukuwiki/wiki.diff
yes|cp -Rf /data/backup/wiki.jackxiang.com.backup.2016.7.28/conf/* ./conf/.
yes|cp -Rf /data/backup/wiki.jackxiang.com.backup.2016.7.28/data/* ./data/.
chmod -R 755 /data/htdocs/wiki.jackxiang.com/data/
---------------------------------------------------------------------------------------------------------
说明:Dokuwiki Install Path:~/public_html/wiki
1、先确认目前所使用的版本号:
$cd ~/public_html/wiki
$cat VERSION
2009-02-14b

2、官网下载最新版本版本进行差异对比:
点击查看: http://www.splitbrain.org/projects/dokuwiki

$mkdir src
$cd src
$wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2009-02-14b.tgz
$wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2009-12-25c.tgz
$tar zxvf dokuwiki-2009-02-14b.tgz
$tar zxvf dokuwiki-2009-12-25c.tgz
$diff -Nauf dokuwiki-2009-02-14 dokuwiki-2009-12-25 > wiki.diff

3、二次确保安全,先做好原数据的备份工作:
$cd ~/public_html
$tar -zcvf src/wiki.tar.gz wiki/

4、最后靠谱过渡升级:
$cd ~/pubilic_html/wiki
$patch -p1 < ~/public_html/src/wiki.diff --dry-run  //测试升级
$patch -p1 < ~/public_html/src/wiki.diff    //正式升级

5、确认无误后即可清除废墟:
$rm -rf ~/public_html/src

参考资料:
官方指南: http://www.dokuwiki.org/zh:install:upgrade

本文来自:http://www.pythonclub.org/dokuwiki/upgrade
背景:在拿代码量算KPI...跟程序员来这一套。--西乔漫画。IT部门谈到:马上部署代码覆盖测试,PHP这块有查了一下还真有类似的工具。
Web端PHP代码函数覆盖率测试解决方案:
主要是结合xdebug和Spike PHPCoverage这两个工具进行统计:
原创网址:http://blog.csdn.net/httpnet/article/details/1707377
辅助参考:
http://www.cnblogs.com/xuning/archive/2015/11/09/4950110.html
http://blog.jobbole.com/97236/
我是win10:
win8上安装tortoisegit1.8.12 64位时无法安装,报2503错误。查资料,经测试后可以安装。

这是Win8系统的权限问题,可以如下解决:

1.运行CMD(管理员权限):
  在桌面直接使用 WIN+X 组合键 在弹出菜单目录中选择 运行命令提示符(管理员) ;
  也可以在桌面直接使用 WIN+X+A 组合键操作;
2.输入以下命令: msiexec /package "你安装程序包的路径"(例如:msiexec /package "d:\soft\TortoiseGit-1.8.12.0-64bit.msi" )


msiexec /package "E:\download\TortoiseGit-2.2.0.0-32bit.msi“


From:http://www.bubuko.com/infodetail-1022395.html
背景:删除文件时吧 /root/ 里面的文件删除了.过程如下:
[root@localhost x86_64]# ll
total 534136
-rwxr-xr-x 1 www  www    6227876 May  4 13:45 amoeba-2.1.0-160504134426.el6.x86_64.rpm
-rwxr-xr-x 1 www  www     149892 Apr 26 18:11 apcu-php56-4.0.11-160426181109.el6.x86_64.rpm
-rwxr-xr-x 1 www  www     114160 May  5 11:12 apcu-php70-5.1.3-160505111247.el6.x86_64.rpm
-rwxr-xr-x 1 www  www   25338712 May 27 15:40 berkeleydb-6.2.23-160527153833.el6.x86_64.rpm
-rwxr-xr-x 1 www  www   27203008 Jun 23 14:57 elasticsearch-2.3.3-160623145745.el6.noarch.rpm
drwx------ 3 root root      4096 Jul 15 15:20 $HOME

rm -Rf '$HOME'

[root@localhost x86_64]# rm -Rf $HOME
[root@localhost x86_64]# echo $HOME
/root
[root@localhost /]# ls /root
ls: cannot access /root: No such file or directory

cd /data/www/yum/centos/7/x86_64
rm -Rf usr
rm -Rf lib
rm -Rf lib64
rm -Rf boot
rm -Rf data
rm -Rf dev
rm -Rf etc
rm -Rf home
rm -Rf '$HOME'
rm -Rf  lost+found
rm -Rf  media
rm -Rf  mnt
rm -Rf  opt
rm -Rf  proc
rm -Rf  repodata
rm -Rf  root
rm -Rf  root_901
rm -Rf  run
rm -Rf  sbin
rm -Rf  srv
rm -Rf  sys
rm -Rf  tmp
rm -Rf  usr
rm -Rf  zabbix
rm -rf bin
rm -Rf selinux software var
rm -Rf lamp
rm -Rf scp.sh screenquit.sh temp.retry web.retry mysql.retry mountIrdcBackUp.sh irdcops.retry install.sh install.log.syslog install.log id_rsa debug.retry crontab_ntpdate  anaconda-ks.cfg monitor.sh
rm -Rf  a getip
============================================================
解决办法:
.mkdir /root

cp -a /etc/skel/.[!.]* /root



主要是吧 /etc/skel/里面的文件拷贝回去就行了~~~哈..


cp -r /etc/skel/.bash
.bash_logout   .bash_profile  .bashrc  
法一:
cp -a /etc/skel/.[!.]* /root
chown -R root /root
chmod -R 700 /root

法二:从别的linux上拷贝一个root过来,后面删除时注意一下:
带你飞(39345****)  11:37:21
@回忆未来-向东-Jàck rm '$HOME'
加个引号就行了

参考:http://blog.csdn.net/wlqf366/article/details/50081389
linux提供了一个daemon函数,使得进程可以脱离控制台运行,实现了后台运行的效果。但是进程后台运行后,原本在终端控制台输出的数据就看不到了。那么,怎样才能找回这些数据?

这里,文章主题就围绕着 如何获得后台进程的控制台数据,其中的原理要从daemon说起。

daemon主要做两件事:
1、创建子进程,退出当前进程,并且以子进程创建新会话。这样,就算父进程退出,子进程也不会被关闭
2、将标准输入,标准输出,标准错误都重定向/dev/null

daemon 实现大致如下:

int daemonize(int nochdir, int noclose)
{
  int fd;

  switch (fork()) {
  case -1:
    return (-1);
  case 0:
    break;
  default:
    _exit(EXIT_SUCCESS);
  }

  if (setsid() == -1)
    return (-1);

  if (nochdir == 0) {
    if(chdir("/") != 0) {
      perror("chdir");
      return (-1);
    }
  }

  if (noclose == 0 && (fd = open("/dev/null", O_RDWR, 0)) != -1) {
    if(dup2(fd, STDIN_FILENO) < 0) {
      perror("dup2 stdin");
      return (-1);
    }
    if(dup2(fd, STDOUT_FILENO) < 0) {
      perror("dup2 stdout");
      return (-1);
    }
    if(dup2(fd, STDERR_FILENO) < 0) {
      perror("dup2 stderr");
      return (-1);
    }

    if (fd > STDERR_FILENO) {
      if(close(fd) < 0) {
        perror("close");
        return (-1);
      }
    }
  }
  return (0);
}
所以,想取回进程的控制台数据,只要将标准输出,标准错误重定向到指定文件,然后读取这个文件就好了。

文章这里写了个例子,简单演示下(这里通过kill信号完成进程通信,有点粗暴)
代码如下,保存为 daemon_example.c
#include
#include
#include
#include

static int fd = -1;

void sigroutine(int dunno) {
  switch (dunno) {
  case SIGUSR1:
    fprintf(stderr, "Get a signal -- SIGUSR1 \n");
    if (fd != -1) close(fd);
    fd = open("/tmp/console_temp.log", O_RDWR|O_APPEND|O_CREAT, 0600);
    if (fd == -1) break;
    dup2(fd, STDIN_FILENO);
    dup2(fd, STDOUT_FILENO);
    dup2(fd, STDERR_FILENO);
    break;
    
  case SIGUSR2:
    fprintf(stderr, "Get a signal -- SIGUSR2 \n");
    if (fd != -1) close(fd);
    fd = open("/dev/null", O_RDWR, 0);
    if (fd == -1) break;
    dup2(fd, STDIN_FILENO);
    dup2(fd, STDOUT_FILENO);
    dup2(fd, STDERR_FILENO);
    break;
  }
  return;

}

int main() {
  signal(SIGUSR1, sigroutine);
  signal(SIGUSR2, sigroutine);

  daemon(1,0);
  for (;;){
      fprintf(stderr,"test \n") ; // 不断打印test
      sleep(1);
  }
  return 0;
}
然后,编译和执行这个程序:
$ gcc -o daemon_example daemon_example.c
$ chmod +x daemon_example
$ ./daemon_example
$ ps -ef| grep daemon_example
root 11328 1 0 19:15 ? 00:00:00 ./daemon_example
如上,进程后台运行了,拿到pid 11328

按ctrl+c 退出脚本,这时脚本会通知进程将标准输出和标准错误重定向到 /dev/null,继续后台运行。
[root@iZ25dcp92ckZ testdemo]# sh -x ./test.sh 16935  
+ pid=16935
+ ps -p 16935
+ '[' '!' 0 -eq 0 ']'
+ echo pid 16935
pid 16935
+ trap 'kill -usr2 16935 && exit 1' HUP INT QUIT TERM
+ kill -usr1 16935
+ echo it works,please wait..
it works,please wait..
+ sleep 1
+ tail -f -n 0 /tmp/console_temp.log
test
test
test
test
==========================================================
接着,写个脚本测试这个程序, 保存为test.sh:
#!/bin/bash

pid=$1
ps -p $pid>/dev/null
if [ ! $? -eq 0 ] ; then
  echo pid does not exist!
  exit 1
fi
echo pid $pid
trap "kill -usr2 $pid && exit 1" HUP INT QUIT TERM
kill -usr1 $pid
echo it works,please wait..
sleep 1
tail -f -n 0 /tmp/console_temp.log
echo done!
执行这个脚本,结果如下:
$ ./test.sh 11328
pid 11328
it works,please wait..
test
test
然后,按ctrl+c 退出脚本,这时脚本会通知进程将标准输出和标准错误重定向到 /dev/null,继续后台运行。
这样,这个脚本就成了后台进程的调试工具了,需要后台数据的时候执行一下,不需要就关闭。当然,这只是一个示例,实际应用中要做改善,比如kill信号改成pipe或socket通讯,缓存文件要限制大小,或自动清除等。

摘自:http://blog.csdn.net/mycwq/article/details/50479735
背景:发现用ansible去做sudo时,发现权限不够:
TASK [irdcops : 修改 /etc/sudoers] ***********************************************
skipping: [10.70.37.24]
fatal: [10.70.36.172]: FAILED! => {"changed": false, "failed": true, "msg": "Could not replace file: /tmp/tmpfToWiS to /etc/sudoers: [Errno 1] Operation not permitted"}
fatal: [10.70.36.173]: FAILED! => {"changed": false, "failed": true, "msg": "Could not replace file: /tmp/tmpvA5FJh to /etc/sudoers: [Errno 1] Operation not permitted"}


[root@v-szq-Localizationweb13 etc]# chmod 755 sudoers
chmod: changing permissions of `sudoers': Operation not permitted
[root@v-szq-Localizationweb13 etc]# lsattr sudoers
----i--------e- sudoers
[root@v-szq-Localizationweb13 etc]#  chattr -i sudoers
[root@v-szq-Localizationweb13 etc]# visudo

http://www.linuxeye.com/command/chattr.html







Form:http://jackxiang.com/post/1792/
随着时代的进步,女性在现代社会中所承担的责任和义务也越来越多,上有爹妈和公婆、下有孩子,时不时还要兼顾一下丈夫。面临工作上的压力和家庭中的重担,许多女性朋友都会忽视自身的健康.阅读全文
背景: 一个程序运行了多长时间,能用ps命令得出来,像系统运行多长时间可以用uptime,一样的道理。

摘自 :http://www.cnblogs.com/fengbohello/p/4111206.html

写个小脚本,根据传入的参数显示对应进程的启动时间

ps -p 25352 -o lstart|grep -v "START"
比如运行:./showProRunTime.sh mysql 显示mysql进程的启动时间:
/usr/local/sbin/showProRunTime.sh


/tmp/synrpm.sh synrpm2repos
root     53504  0.0  0.1 119240  6436 ?        Ss   Jul17   0:00 /usr/local/php/bin/php /usr/local/sbin/synrpm2repos.php --daemon Sun Jul 17 16:57:39 2016

启动时间是:Sun Jul 17 16:57:39 2016
___________________________以下是参数说明_____________________________________________

ps -eo lstart 启动时间
ps -eo etime   运行多长时间.


ps -eo pid,lstart,etime | grep 5176


有些时候我们需要知道某个进程的启动时间!
显示某PID的启动时间命令:

ps -p PID -o lstart  


如下面显示httpd的启动时间:

for pid in $(pgrep httpd); do echo -n "${pid}"; ps -p ${pid} -o lstart | grep -v "START"; done  
====================================================================================
在Linux下,如果需要查看进程的启动时间, 常用ps aux命令,但是ps aux命令的缺陷在于只能显示时间到年、日期、或者时间, 无法具体到年月日时分秒。如果需要查看某个进程的具体启动时间, 使用 ps -p PID -o lstart,  其中,PID为某个进程的进程ID号。

如下所示, 显示系统中所有httpd进程的具体启动时间。

如下所示, 显示系统中所有httpd进程的具体启动时间。

for pid in $(pgrep httpd); do echo -n "${pid} " ; ps -p ${pid} -o lstart | grep -v "START" ; done
301 Mon Aug 27 11:21:59 2012
344 Mon Aug 27 11:33:13 2012
25065 Sun Aug 26 03:27:03 2012
25066 Sun Aug 26 03:27:03 2012
25067 Sun Aug 26 03:27:03 2012
25068 Sun Aug 26 03:27:03 2012
25069 Sun Aug 26 03:27:03 2012
25070 Sun Aug 26 03:27:03 2012
25071 Sun Aug 26 03:27:03 2012
25072 Sun Aug 26 03:27:03 2012
27903 Wed Jun 20 22:50:47 2012
32767 Mon Aug 27 11:21:48 2012

来自:http://www.iteye.com/topic/1135810
http://chromecj.com/web-development/2015-08/549.html
废话不多说,打开控制台,install package

搜 sublimelinter

先安装sublimelinter本体

安装完以后再搜索一下,安装sublimelinter-php

接下来,打开preferences-package settings-sublimeLinter-settings--user

如下配置:

{
    "user": {
        
        "linters": {
            
        },
        
        "paths": {
            "linux": [],
            "osx": [],
            "windows": [
                "D:\\xampp\\php"
            ]
        },
        
    }
}







就是添加一下 paths的参数值,指定一下你本地php目录。


然后关闭sublime,再次打开一个php脚本,试试吧。

有错误的地方在行号上会有红点提示在代码上会有红色方框,鼠标放红色方框上,错误信息在编辑器底部状态栏显示。

来自:http://my.oschina.net/cxz001/blog/204592
处理方法: 打开 /etc/.vimrc 并添加 set noswapfile 后 OK
vi /root/.vimrc
set noswapfile

非正常关闭vi编辑器时会生成一个.swp文件

关于swp文件
使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么一个.(filename)swp文件以备不测(不测下面讨论),如果你正常退出,那么这个这个swp文件将会自动删除。下面说不测。
不测分为:1当你用多个程序编辑同一个文件时。
         2非常规退出时。
第一种情况的话,为了避免同一个文件产生两个不同的版本(vim中的原话),还是建议选择readonly为好。
第二种情况的话,你可以用vim -r filename恢复,然后再把swp文件删除(这个时候要确保你的swp文件没有用处了,要不然你会伤心的)
swp文件的来历,当你强行关闭vi时,比如电源突然断掉或者你使用了Ctrl+ZZ,vi自动生成一个.swp文件,下次你再编辑时,就会出现一些提示。

你可以使用

vi -r {your file name}

来恢复文件,然后用下面的命令删除swp文件,不然每一次编辑时总是有这个提示。

rm .{your file name}.swp

在网上搜到了一个类似的提示,不同的linux提示可能不一样

“.xorg.conf.swp” already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit:

当然可以用R键恢复。

vi编辑器要正常退出可以使用Shift-ZZ 。



[SuSE] 【已解决】vi 命令 生成 .swp 文件相关问题

-> 例:使用vi a.dat时 会生成一个 .a.dat.swp 文件
       然后再开个终端 vi a.dat 时会提示:
      【“Swap file ".文件名.swp" already exists![O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit:】  

-> vi 版本:
   vi -vierson
     VIM - Vi IMproved 6.3 (2004 June 7, compiled Oct 20 2004 23:12:36)
        
->  问: (vi 一个文件时怎么样可以不让它产生.swp文件?
          或不让他提示【“Swap file ".文件名.swp" already exists![O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit:】)

处理方法: 打开 /etc/vimrc 并添加 set noswapfile 后 OK

来自:http://blog.163.com/phys_atom/blog/static/167644553201222784342904/
背景:最近有同事用sb编辑器,主要是它这个sftp有点意思,一个是可以同步映射到远程,这块Editplus也有,但好像它是一个从外网拿到内网机上后修改再同步外网,没有映入这一说,且外网同步到内网,内网到外网的操作上好像没有sb编辑器灵活和项多,sublime主要就是找文件很快这点很有助于提高效率。这块我觉得还是做一个ssh_key_file安全,于是做了一个,实践Ok。这块注意路径得是\/  \/ 这样写,否则连接不上哟。再就是生成的公钥匙是放在linux上,而自己则是私钥匙,这就相当于linux配置棉密码登录时把公钥匙给需要登录的服务器一样,我们windows是相当于被登录了,因为那个authorized_keys是在linux上,也就是公公钥。这块用windows的软件puTTY-Key来进行生成更快捷,否则得转(sublime使用的是PSFTP。 需要的私钥需要先用PuTTYgen来转换一下格式,转换完以后的文件后缀是ppk。)。


"D:\Program Files\TortoiseGit\bin\puttygen.exe"  这个git里安装小乌龟时也带这个:
PuTTYgen生成的框里放到服务器上,是公钥。
私钥匙放到windows机器里:D:\sshkey\sshkey.ppk  (Save private key)

阅读全文
分页: 10/245 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]