ubuntu 16.04在升级17.04时候,出现Failed to start Load Kernel Modules 解决方法:
升级的时候不小心重启了,就看到出现这个错误,鼠标挂了,wifi没了,当时感觉是重装系统的节奏了,搜了下,有治。方法如下:
进入到命令行模式:ctl + alt + F1
在root模式下输入一下指令:
apt-get update

dpkg --configure -a

apt-get dist-upgrade

apt-get -f install

reboot

到此就可以了,这是在ubuntuforums.org上看到的。特此记录!!!

来自:http://m.blog.csdn.net/article/details?id=54091293
https://askubuntu.com/questions/809199/failed-to-start-load-kernel-modules-ubuntu-16-04
前段时间在阿里云上部署docker服务(或者是安装glusternfs要求较高版本的内核),由于阿里云自带centos的内核版本地较低第所以遇到了升级内核问题。这篇文章简单介绍一下升级centos的过程。

1、导入key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2、安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm  
(这个命令并不行,手工解压elrepo-release-7.0-2.el7.elrepo.noarch.rpm并拷贝elrepo.repo更靠谱。rpm2cpio elrepo-release-7.0-2.el7.elrepo.noarch.rpm |cpio -div)

3、安装内核
yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y
kernel-ml-devel-4.11.2-1.el7.elrepo.x86_64
kernel-ml.x86_64 0:4.11.2-1.el7.elrepo              kernel-ml-devel.x86_64 0:4.11.2-1.el7.elrepo            


查看最新内核版本
[root@iZ25x4ab3lrZ ~]# uname -r
4.8.10-1.el7.elrepo.x86_64

注意:虽然此刻看到的版本已经升级到最新,但是此时如何重启服务器,内核版本就会回到最初的版本。因此在reboot前还需要设置内核的默认启动顺序。
查看默认启动顺序:

[root@iZ25x4ab3lrZ ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.8.10-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-7d26c16f128042a684ea474c9e2c240f) 7 (Core)

设置默认启动(从0开始计数)===>前面安装的是:kernel-ml-devel-4.11.2-1.el7.elrepo.x86_64
grub2-set-default 0
=======================================================================================
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.11.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.16.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.6.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.36.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.22.2.el7.x86_64) 7 (Core)
CentOS Linux (4.4.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux, with Linux 0-rescue-45461f76679f48ee96e95da6cc798cc8

4、重启,完成设置,并验证,成功升级到CentOS7.2:
#cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
#uname -r
4.11.2-1.el7.elrepo.x86_64

From:                http://www.2cto.com/os/201701/587143.html
提取出Rpm包里的文件:http://justwinit.cn/post/8922/
实践发现:删除多了一个linux-image-extra-4..0-78-generic,应该留下俩。

当linux有新的内核发布时,ubuntu会把当前的内核更新为最新的内核,时间久了,电脑中会同时存在多个内核,最明显的是每次开机的时候,会有多个开机选项,比较麻烦。如果自己不想再使用以前的内核,可以考虑删除旧的内核,一来可以释放部分硬盘资源(一个内核100多M的样子吧),二来开机界面比较清新。



1.sunny@ubuntu:~$ dpkg --get-selections|grep linux-image
linux-image-2.6.38-10-generic            install
linux-image-2.6.38-11-generic            install
linux-image-2.6.38-12-generic            install
linux-image-2.6.38-13-generic            install
linux-image-generic                            install



2.查看当前使用的内核

sunny@ubuntu:~$ uname -a
Linux ubuntu 2.6.38-13-generic #56-Ubuntu SMP Tue Feb 14 12:40:40 UTC 2012 i686 i686 i386 GNU/Linux



3.删除其它旧的内核

sunny@ubuntu:~$ sudo apt-get remove linux-image-2.6.38-10-generic linux-image-2.6.38-11-generic linux-image-2.6.38-12-generic



4. 然后做下清理(可有可无)

sunny@ubuntu/usr/src sudo apt−get clean
sunny@ubuntu:/usr/srcsudoapt−getclean
sunny@ubuntu:/usr/src sudo apt-get autoclean


ubuntu中删除显示为deinstall的linux内核:
http://blog.csdn.net/iam333/article/details/37874683

下次开机就没有那些旧的内核了。
来自:http://www.cnblogs.com/king-77024128/articles/2507280.html

http://blog.csdn.net/u010987458/article/details/72381998
下载Adobe Flash Player

https://get.adobe.com/flashplayer/?no_redirect

解压:


tar -xf xxx.tar
得到一个libpepflashplayer.so文件。


2. 加入Chromium的插件文件夹


sudo cp libpepflashplayer.so /usr/lib/chromium-browser/plugins

3. 在Chromium的启动选项中加入这一插件


sudo gedit /etc/chromium-browser/default
在flags一行加上:


CHROMIUM_FLAGS="--ppapi-flash-path=/usr/lib/chromium-browser/plugins/libpepflashplayer.so --ppapi-flash-version=11.5.31.2"
version可以从下载包里面的manifest.json文件里面看到。

启用插件

启动Chromium浏览器,在地址栏输入
chrome://plugins/

启用插件即可


http://www.cnblogs.com/linkzijun/p/6492761.html
背景:发现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

http://callmepeanut.blog.51cto.com/7756998/1302958
https://huoding.com/2013/10/06/288
背景:一般来讲Linux对明文登录用户的密码在CentOS里有多种,但是MD5长度在36位以下。容量被破解,正向算法、碰撞等,特别是那个万能Wifi钥匙,我去。CentOS5和CentOS6的想法是更安全,但为了兼容统一管理密码Shadow,批量刷一样的,往往会用MD5这种方式,但是被破解后也是很容易给被攻下的一种弱的加密验证方式。
当用户发出useradd命令时,useradd命令读取/ etc / default / useradd和/etc/login.defs并确定useradd的默认值。 要显示/ etc / defaults / useradd的值,请参阅显示useradd的默认值

#使用MD5或DES加密密码? 红帽默认使用MD5。
MD5_CRYPT_ENAB是的

ENCRYPT_METHOD MD5

背景:原来是因为Jenkins的组不对,再把组修正了下,再加上chmod a+s /bin/su ,后来发现是因为/etc/passwd 里面的shell是 :/bin/false导致没法sudo 成功。
su jenkins
id
uid=0(root) gid=0(root) 组=0(root)

试了下Su到其它用户可以,于是查了一下 vi /etc/passwd :
jenkins:x:1012:1010:Jenkins Continuous Integration Server:/data/jenkins:/bin/false
原来是这儿/bin/false,不是su的问题:
jenkins:x:497:601:Jenkins Continuous Integration Server:/data/jenkins:/bin/bash

于是就好了:
[root@iZ2zehnf4lbq2wf83bmzk1Z ~]# su jenkins
[jenkins@iZ2zehnf4lbq2wf83bmzk1Z root]$ id
uid=1012(jenkins) gid=1010(jenkins) 组=1010(jenkins)
==================================================

[root@iZ2zehnf4lbq2wf83bmzk1Z ~]# su jenkins
[root@iZ2zehnf4lbq2wf83bmzk1Z ~]# id
uid=0(root) gid=0(root) 组=0(root)
[root@iZ2zehnf4lbq2wf83bmzk1Z ~]# whoami
root
[root@iZ2zehnf4lbq2wf83bmzk1Z ~]# id jenkins
uid=984(jenkins) gid=990(jenkins) 组=990(jenkins)

========================================
原因1
/bin/su文件没有s位权限


chmod a+s /bin/su


来自:http://blog.itpub.net/26432034/viewspace-1688391/

解决办法
感谢csdn用户jeecg-scott分享的博文《su 切换,提示:“密码不正确”》以下是连接
http://blog.csdn.net/zhangdaiscott/article/details/18666471

step1
检查/etc目录下passwd的权限
[root@dev /]# ll /etc/passwd
-rw-r--r--. 1 root root 1975 5月  27 06:04 /etc/passwd
如果普通用户不能读请改成644权限
[root@dev /]# chmod 644 /etc/passwd

step2
检查/bin/su文件是否有s位权限
[root@dev ~]# ll /bin/su
-rwxrwxrwx. 1 root root 34904 10月 17 2013 /bin/su
如果不存在则添加上
[root@dev /]# chmod a+s /bin/su
[root@dev /]# ll /bin/su
-rwsrwsrwx. 1 root root 34904 10月 17 2013 /bin/su

step3
测试成功否
[oracle@dev ~]$ su - root
密码:
[root@dev ~]#

httpstat 是一个 Python 脚本,它以美妙妥善的方式反映了 curl 统计分析,它是一个单一脚本,兼容 Python 3 ,在用户的系统上不需要安装额外的软件(依赖)。

-- Aaron Kili

本文导航

-在 Linux 系统中安装 httpstat25%
-在 Linux 中如何使用 httpstat36%
编译自: http://www.tecmint.com/httpstat-curl-statistics-tool-check-website-performance/
作者: Aaron Kili
译者: wyangsun
从本质上来说它是一个 cURL 工具的封装,意味着你可以在 URL 后使用几个有效的 cURL 选项,但是不包括 -w、-D、-o、-s和-S选项,这些已经被 httpstat 使用了。



httpstat Curl 统计分析工具

你可以看到上图的一个 ASCII 表显示了每个过程消耗多长时间,对我来说最重要的一步是“服务器处理server processing” – 如果这个数字很高,那么你需要优化你网站服务器来加速访问速度[1]。

网站或服务器优化你可以查看我们的文章:

使用下面安装说明和用法来获取 httpstat 检查出你的网站速度。

在 Linux 系统中安装 httpstat

你可以使用两种合理的方法安装 httpstat :

使用 wget 命令直接从它的 Github 仓库获取如下:
$ wget -c https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
使用 pip(这个方法允许 httpstat 作为命令安装到你的系统中)像这样:
$ sudo pip install httpstat
注:确保 pip包已经在系统上安装了,如果没使用你的发行版包管理器yum或apt安装它。

在 Linux 中如何使用 httpstat

httpstat可以根据你安装它的方式来使用,如果你直接下载了它,进入下载目录使用下面的语句运行它:

$ python httpstat.py url cURL_options
如果你使用 pip来安装它,你可以作为命令来执行它,如下表:

$ httpstat url cURL_options
查看 httpstat帮助页,命令如下:

$ python httpstat.py --help

$ httpstat --help
httpstat帮助:

Usage: httpstat URL [CURL_OPTIONS]
httpstat -h | --help
httpstat --version
Arguments:
URL url to request, could be with or without `http(s)://` prefix
Options:
CURL_OPTIONS any curl supported options, except for -w -D -o -S -s,
which are already used internally.
-h --help show this screen.
--version show version.
Environments:
HTTPSTAT_SHOW_BODY Set to `true` to show response body in the output,
note that body length is limited to 1023 bytes, will be
truncated if exceeds. Default is `false`.
HTTPSTAT_SHOW_IP By default httpstat shows remote and local IP/port address.
Set to `false` to disable this feature. Default is `true`.
HTTPSTAT_SHOW_SPEED Set to `true` to show download and upload speed.
Default is `false`.
HTTPSTAT_SAVE_BODY By default httpstat stores body in a tmp file,
set to `false` to disable this feature. Default is `true`
HTTPSTAT_CURL_BIN Indicate the curl bin path to use. Default is `curl`
from current shell $PATH.
HTTPSTAT_DEBUG Set to `true` to see debugging logs. Default is `false`
从上面帮助命令的输出,你可以看出 httpstat已经具备了一些可以影响其行为的环境变量。

使用它们,只需输出适当的值的这些变量到 .bashrc或.zshrc文件。

例如:

export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
export HTTPSTAT_DEBUG=true
你一旦添加完它们,保存文件然后运行下面的命令使改变生效:

$ source ~/.bashrc
你可以指定使用 cURL 执行文件的路径,默认使用的是当前 shell 的 $PATH 环境变量[5]。

下面是一些展示 httpstat如何工作的例子。

$ python httpstat.py google.com

$ httpstat google.com


httpstat – 展示网站统计分析

接下来的命令中:

-X命令标记指定一个客户与 HTTP 服务器连接的请求方法。
--data-urlencode这个选项将会把数据(这里是 a=b)按 URL 编码的方式编码后再提交。
-v开启详细模式。
$ python httpstat.py httpbin.org/post -X POST --data-urlencode "a=b" -v


httpstat – 定制提交请求

你可以查看 cURL 的帮助获取更多有用的高级选项,或者浏览 httpstat的 Github 仓库:https://github.com/reorx/httpstat

这篇文章中,我们讲述了一个有效的工具,它以简单和整洁方式来查看 cURL 统计分析。如果你知道任何类似的工具,别犹豫,让我们知道,你也可以问问题或评论这篇文章或 httpstat,通过下面反馈。
背景:有时发现一些进程运行着运行着其CPU的负载就变高了,怎么发现?怎么知道是进程还是线程高了,定位是一个问题,层层定位也是个问题,这对于Window不是个问题,对于Linux就是一个大问题。
定位一下进程PID:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     22381  2.1  0.5 273728  5860 ?        S    20:03   2:22 php WebSocketServer.php

看线程:
[root@a php]# ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
USER       PID  PPID   TID     TIME %CPU CMD
root      3851     1  3851 00:00:46  0.0 php task.php
root      3851     1  3853 00:00:00  0.0 php task.php
root      3852  3851  3852 00:00:00  0.0 php task.php


1.CPU占用最多的前10个进程:

ps auxw|head -1;ps auxw|sort -rn -k3|head -10

2.内存消耗最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -10

3.虚拟内存使用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k5|head -10

来自:http://blog.chinaunix.net/uid-15007890-id-3413584.html

如果是10个进程,K=10,如果是最高的三个,K=3
说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)
        ps -aux的输出格式如下:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19352  1308 ?        Ss   Jul29   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jul29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jul29   0:11 [migration/0]

     sort -k4nr中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。
     head -K(K指代行数,即输出前几位的结果)
     |为管道符号,将查询出的结果导到下面的命令中进行下一步的操作。
方法2:top (然后按下M,注意大写)
二、可以使用下面命令查使用CPU最多的K个进程
方法1:
ps -aux | sort -k3nr | head -K

方法2:top (然后按下P,注意大写)

来自:https://zhidao.baidu.com/question/371525749314218684.html

可以用下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu

这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。

直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 获取对于的进程号和线程号,然后跳转到3.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/task,
执行:grep SleepAVG  **/status  | sort -k2,2 | head,  确定cpu占用较高的线程号。
使用kill -3 pid 会打印线程堆栈的情况

来自:http://www.cnblogs.com/lidabo/p/4738113.html

背景:网卡流量80,如果是100M的网卡可能是瓶颈,而如何知道这个网卡是100M还是1000M的?用命令查询一下。阿里云的虚拟机好像看不到,用另一个命令看,这块涉及到网卡是否支持多队列网卡识别,Capabilities: [70] MSI-X: Enable+Masked-TabSize=10,阿里的是:Capabilities: [40] MSI-X: Enable+ Count=3 Masked-,参考链接:http://blog.sina.com.cn/s/blog_aed82f6f0102vwjx.html ,http://blog.csdn.net/wyaibyn/article/details/14109325。
lspci -vvv|grep network -B 1 -A 15




物理机上:
ethtool eth0


1.使用lspci -vvv命令查看网卡的参数。
Ethernet controller的条目内容,如果有MSI-X && Enable+ && TabSize > 1,则该网卡是多队列网卡。
2.如何打开网卡多队列
cat /etc/modprobe.conf查看网卡驱动。
broadcom网卡的驱动为e1000,默认打开网卡多队列
修改完驱动后需要重启。查看是否打开了网卡多队列,以broadcom网卡为例。cat /proc/interrupt | grep eth。产生了8个网卡队列,并且对应着不同的中断。

3.设置中断CPU亲和性方法
将中断52-59分别绑定到CPU0-7上。        
echo "1" > /proc/irq/52/smp_affinity  
echo "2" > /proc/irq/53/smp_affinity  
echo "4" > /proc/irq/54/smp_affinity  
echo "8" > /proc/irq/55/smp_affinity  
echo "10" > /proc/irq/56/smp_affinity  
echo "20" > /proc/irq/57/smp_affinity  
echo "40" > /proc/irq/58/smp_affinity  
echo "80" > /proc/irq/59/smp_affinity  
/proc/irq/${IRQ_NUM}/smp_affinity为中断号为IRQ_NUM的中断绑定的CPU核的情况。以十六进制表示,每一位代表一个CPU核。
1(00000001)代表CPU0
2(00000010)代表CPU1
3(00000011)代表CPU0和CPU1



阿里私有云虚拟的网卡有些简单:
ethtool eth0
Settings for eth0:
        Link detected: yes


ethtool 工具关于网络协商功能介绍;

ethtool - Display or change ethernet card settings(ethtool 是用来显示和更改网卡设置的工具);这个工具比较复杂,功能也特别多。由于洋文比较难懂。所以我们还是把网络设备协商方式的设置方法说一说。

2.1 ethtool 显示网络端口设置功能;
这个功能比较好办。就是ethtool 后面直接接网絽接口就行;比如下面的例子;
[root@localhost ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes: 10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes: 10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: No 注:自动协商关闭
        Speed: 100Mb/s 注:速度 100Mb
        Duplex: Full 注:全双工
        Port: MII
        PHYAD: 32
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000007 (7)
        Link detected: yes 注:eth0已经激活;


摘自:https://my.oschina.net/u/1986074/blog/517033


======================================================================
现象
Redis 进程 cpu 跑满

原因

没有开启网卡多队列,导致只有一个cpu被使用
网卡在同一时刻只能产生一个中断,CPU在同一时刻只能响应一个中断,由于配置的原因,只有一颗cpu去响应中断(这个是可调的),所以所有的流量都压在了一个CPU上 ,把CPU跑满了。

为什么只有一颗cpu去响应中断?

这个是历史设计的问题,一开始CPU都是一核的,只能由唯一的CPU去响应,后来逐步发展出了多核的CPU,才有了可调整的参数去调整到底由几个CPU去处理。

处理方法

修改方案
1. 修改/etc/modprobe.d/modprobe.conf
在文件最后追加三行
alias eth0 igb
alias eth1 igb
options igb RSS=8,8
image001.png
2. 修改完之后就需要重启网络才能生效

只需要重新加载内核模块和重启网络服务就可以了,实际测试需要20s时间

操作命令
nohup rmmod igb && modprobe igb && /etc/init.d/network restart && /etc/rc3.d/S27route

来自:http://blog.csdn.net/fjq5a/article/details/53747444
vim从vim7开始加入了多标签切换的功能,相当于多窗口。
之前的版本虽然也有多文件编辑功能,但是总之不如这个方便啦。
用法
:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
更多可以查看帮助 :help table , help -p
使用alt+数字键来切换tab (vim7+)
不过用gt,gT来一个个切换有点不方便, 如果用:tabnext {count}, 又按键太多. 加入以下代码后, 可以用 alt+n来切换,
比如alt+1切换到第一个tab,alt+2切换到第二个tab。
把以下代码加到vimrc, 或者存为.vim文件,再放到plugin目。
function! TabPos_ActivateBuffer(num)
    let s:count = a:num
    exe "tabfirst"
    exe "tabnext" s:count
endfunction
      
function! TabPos_Initialize()  
for i in range(1, 9)
        exe "map <M-" . i . "> :call TabPos_ActivateBuffer(" . i . ")<CR>"
    endfor
    exe "map <M-0> :call TabPos_ActivateBuffer(10)<CR>"
endfunction

autocmd VimEnter * call TabPos_Initialize()
上面的看上去太复杂了,来个简单的。
:nn <M-1> 1gt
:nn <M-2> 2gt
:nn <M-3> 3gt
:nn <M-4> 4gt
:nn <M-5> 5gt
:nn <M-6> 6gt
:nn <M-7> 7gt
:nn <M-8> 8gt
:nn <M-9> 9gt
:nn <M-0> :tablast<CR>
把这个放进_vimrc配置文件里。
参考至:http://www.liurongxing.com/vim-tab-shortcut.html
Mysql新版本均采用了cmake:
http://mp.weixin.qq.com/s?__biz=MzI0MTEyMzgxOA==&mid=2247483751&idx=1&sn=124007f577a8d697040479942935d88a&chksm=e91129e2de66a0f4b6e385d663c927c7e0386255d29af3a7a7f2550ff84abbf5a95a457bbdc1&mpshare=1&scene=23&srcid=1214WmcU4f5K7XqqSEIfWo6l#rd
使用 fuser xxx 命令查看制定的文件被哪个进程占用,然后关闭该进程,则解决问题。
备注: 如果 xxx 命令是在普通用root 下开启, 而在普通用户下使用:fuser xxx 是没有结果的
切换至 root 用度,再执行 fuser xxx ,则会显示 其进程号,将其杀即可。

eg:
# ./Xfbdev :0 -fp /usr/share/fonts/X11/misc
./Xfbdev: Text file busy

$ fuser Xfbdev
$ sudo su
# fuser Xfbdev
Xfbdev: 28784e
# ps aux | grep Xfbdev
root 28784 0.9 0.2 4608 2640 pts/0 S+ 12:48 0:00 ./Xfbdev :0 -fp /usr/share/fonts/X11/misc
root 30708 0.0 0.1 3792 1248 pts/1 S+ 12:49 0:00 grep Xfbdev

Text file busy问题的解决

Author: liucy
在使用scp跨服务器拷贝文件时,出现了Text file busy的错误,导致无法完成操作,后来经过查找得知,该错误指的是文件正在被某一进程使用,处于锁定状态,所以无法拷贝。后来经过查证得知,使用fuser命令可以解决上述问题,具体执行命令如下:
fuser -cdkux filename

From:http://m.jb51.net/LINUXjishu/153057.html

pmap -p pid
ping   -a   ip返回计算机名的原理?或我该怎么办才能返回这个计算机名?
------解决方案--------------------------------------------------------
有时候不能反向解析DNS,所以就找不出计算机名!纯属个人见解!
------解决方案--------------------------------------------------------
象是一个什么功能被禁止了.nbios服务禁止.不一定准确


如:ping 10.78.72.XX
ping -s 1500 -c 10 -a 10.70.39.254 10.78.72.XX

ctrl+c
[root@itv-api_php_bj_syq_10_70_62_28 /]#  ping -f xx.xx.xx.xx
PING xx.xx.xx.xx(10.78.72.163) 56(84) bytes of data.
...................................^C  (ctrl+c)
--- xx.xx.xx.xxping statistics ---
44364 packets transmitted, 44330 received, 0% packet loss, time 651113ms
rtt min/avg/max/mdev = 53.616/55.311/79.376/2.586 ms, pipe 7, ipg/ewma 14.676/54.124 ms


情况是这样的~本来是4M的线路需要增开到10M,客户测试的时候是在linux下用ping -f命令测试极限,发现带宽依旧只是4M。但采用feiQ这类局域网文件传输工具,两端的传输速度都能达到1.2MB/s以上。两端经过的是SDH传输网。 有没有大神能解释下linux ping-f这命令...

ping -f
尽可能快地发送报文

linux下 ping命令参数
表1 ping命令参数(linux)
参数
描述
-c count
在收发指定的count个数目的报文后停止
-d
在套接口设置so_debug
-f
尽可能快地发送报文
-i wait
设置连续报文发送时报文间的发送时间间隔(单位为秒)
-i ?device?
设置输出接口
-l preload
尽可能快地发送预载的报文,然后再返回到正常发送模式
-n
不查寻主机名,仅仅给出ip地址值
-p pattern
定义随同报文一起被发送的便笺内容(便笺最长为16个字节)
-q
仅输出结果的总结内容
-r
不使用路由表来发送报文,而是直接把报文发到主机
-r
设置记录路由选择功能,即记录报文传送经过的路径
-s packetsize
设置要发送的报文大小(单位为字节,最大长度是64k,缺省长度是64)
-t tsonly
发送一个带有时间戳的ping报文
-t tsandaddr
收集时间戳和地址
-t tsprespec
[host1 [host2 [host3 [host4]]]] 收集来自预定的网络段的时间戳和地址
-w timeout
指定等待每个响应的最长时间(单位是毫秒)


linux下测试ping包:
ping -q -c 100 -s 8100 10.70.7.108
[root@a ~]# ping -q -c 100 -s 8100 101.200.228.135
PING 101.200.228.135 (101.200.228.135) 8100(8128) bytes of data.

PS:
C记录是啥?cdn的域名, cname.补俩CDN源站。

阅读全文
~          将光标下的字母改变大小写,这个相当有用,因为咱们类首字母大写,而后对象则是首字母小写,在对象后加上Obj,如:


======================================================================
~          将光标下的字母改变大小写

3~         将光标位置开始的3个字母改变其大小写

g~~        改变当前行字母的大小写

U          将可视模式下选择的字母全改成大写字母

u          将可视模式下选择的字母全改成小写

gUU        将当前行的字母改成大写

3gUU       将从光标开始到下面3行字母改成大写

guu       将当前行的字母全改成小写

gUw       将光标下的单词改成大写。

guw       将光标下的单词改成小写。


来自:http://blog.chinaunix.net/uid-22606185-id-3373942.html
  云计算可以帮助企业降低IT方面的成本和复杂性,并获得他们蓬勃发展所需的灵活性与敏捷性。但是,规划出通往云的明确路径并非易事。毕竟用户需要看透与云相关的市场大肆宣传,然后理解并分析不同种类的云计算模式的优点与缺点。此外,还需要确定备选的云中哪些最适合自己企业的战略、工作负载、性能、安全性需求和内部IT的专业知识,甚至希望将来某一刻可以完全地“Do it yourself“(自己动手)。

      本文将介绍“云“服务的三种类型,并讨论不同云计算模式满足什么类型的需要。

什么是云计算?

      云计算使用户能够通过Internet或专用网络访问软件、服务器、存储以及其他计算资源。这些资源与位置无关,具体表现在用户通常不需要管理甚至了解这些资源的实际位置。用户根据需要购买和使用IT资源,并根据使用量为其使用的服务付费。

      云计算构建在虚拟化技术的基础上,而虚拟化技术提供从弹性资源池中调配IT服务的功能。虚拟化可以将一个物理机分区为多个虚拟机,其中每一个虚拟机都可以独立与其他设备、应用程序、数据和用户交互,就像它是独立的物理资源一样。不同的虚拟机可以运行不同的操作系统和多种应用程序,同时共享单个物理计算机上的资源。因为每个虚拟机与其他虚拟机隔离,如果一个虚拟机崩溃,其他的不会受影响。除了使用虚拟化技术将一个计算机分区为多个虚拟机外,还可以使用虚拟化技术将多个物理资源合并为单个虚拟资源。存储虚拟化就是一个最好的例子:在此情况下,多个网络存储资源池化显示为单个存储设备,以实现对存储资源更轻松高效的利用和管理。

      虚拟机管理程序软件使虚拟化成为可能。这种软件也称为虚拟化管理器,位于硬件与操作系统之间,并使操作系统和应用程序与硬件隔离。虚拟机管理程序向操作系统和应用程序分配它们对处理器和其他硬件资源(例如内存和存储系统)所需的访问量。云提供商使用与他们提供的服务类型(存储、计算、带宽、有效用户帐户等)相关的计量功能来管理和优化资源。

云服务的常见类型:

      企业可以从数量不断增加的基于云的IT服务中进行选择和使用,并在不同类型的环境中部署它们。以下是三类最常见的“IT即服务”云产品:

软件即服务 (SaaS,Software as a Service) 使用户可以通过 Internet 访问软件应用程序。用户不必购买并在自己的计算机或设备上安装、更新和管理这些资源,而可以通过Web 浏览器访问并使用它们。SaaS 提供商在云中为用户管理软件、处理能力和存储。大多数 SaaS 解决方案在公共云中运行(详见下文),并以订阅或免费服务的形式提供。常用 SaaS应用程序的例子包括按需业务应用程序,例如 Salesforce.com、Google Apps for Business 和 SAP SuccessFactors,以及免费的社交网络解决方案,例如 LinkedIn 和 Twitter。
平台即服务 (PaaS,Platform as a Service) 提供在集成式云环境中开发、测试、运行和管理 SaaS 应用程序所需的基础架构和计算资源。拥有 Internet 连接的任何人都可以参与并开发基于云的解决方案,而不必寻找、购买和管理硬件、操作系统、数据库、中间件以及其他软件。大多数PaaS 供应商都可以提供比传统编程工具更易于使用的JavaScript、Adobe Flex 和 Flash 等工具。用户不必拥有或控制开发环境,但却能真正地控制他们在其中开发和部署的应用程序。一些知名度较高的 PaaS 提供商包括 Google App Engine、Windows Azure 和 Salesforce。
基础架构即服务 (IaaS,Infrastructure as a Service) 提供托管的 IT 基础架构,供用户调配处理能力、存储、网络和其他基础计算资源。IaaS 提供商运行并管理此基础架构,用户可以在此基础架构上运行选择的操作系统和应用程序软件。IaaS 提供商的例子有 Amazon Elastic Compute Cloud (EC2)、VerizonTerremark和 Google Compute Engine。
背景:rpmbuild时有一个make常常是这样写的,  make  DESTDIR=%{buildroot}  install,百这个buildroot是打包的路径,为何每次这样写都能奏效呢?是因为GUN的Make中约定俗成了的,如下。
     GNU Make中,有许多约定俗成的东西,比如这个DESTDIR:用于加在要安装的文件路径前的一个前缀变量。
比如,我们本地编译了一个第三方库,但需要对其打包发布给其他人使用,一方面如果我们安装到默认目录,比如/usr,这时,安装后的文件一但数量很大,则打包时很难找全;或者我们在configure时指定了--prefix,或cmake时指定了CMAKE_INSTALL_PREFIX,则pc文件内的编译依赖关系又会出错,变成了我们指定的那个路径,使用起来会很不方便。此时,DESTDIR就会派上用场。
DESTDIR只在make install时起作用,且和Makefile是由什么工具生成的没有关系,用法如下:
make install DESTDIR=<$CUSTOM_PREFIX>
在configure或cmake时,指定了要安装的路径后,以这种方式make install安装的文件会通通安装到以$CUSTOM_PREFIX为前缀的目录中,这样,开发者直接对这目录中的文件打包,即可发布使用。

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