背景: 一批老机器出现还没打开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
如何使用zsh

如果是linux 系统,首先你需要安装 zsh

sudo yum install zsh
或者
sudo apt-get install zsh

来自:http://yijiebuyi.com/blog/b9b5e1ebb719f22475c38c4819ab8151.html
1、Linux 服务器因 CPU 温度过高自动重启
http://www.s2.cn/news.php?id=33

2、Linux服务器不明原因重启了,怎么查找原因
http://bbs.51cto.com/archiver/tid-861470.html

3、重启的信息可以通过
dmesg来看
系统的log一般都是记录在/var/log/messages里
命令:
cat /var/log/messages | grep 'reboot'

4、linux启动日志: /var/log/boot.log


实践如下:

[root@xiyou-vedio_encode_bj_sjs_10_71_11_22 ~]#  last reboot
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 10:37 - 10:41  (00:03)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 09:57 - 10:41  (00:43)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:58 - 10:41  (01:43)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:52 - 10:41  (01:48)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:36 - 10:41  (02:04)    
reboot   system boot  2.6.32-696.6.3.e Mon Aug 14 08:07 - 10:41  (02:34)


[root@xiyou-vedio_encode_bj_sjs_10_71_11_22 ~]# cal
     August 2017    
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


linux启动日志: /var/log/boot.log
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

来自:http://blog.sina.com.cn/s/blog_56d8ea900101cytr.html
问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象。

运行结果:
a c
eg:var obj=parseQueryString(url);

创建对象的三种形式:

一:
var Person=new Object();
Person.name="Sun";
Person.age=24;

二:
var Person=new Object();
Person["name"]="Sun";
Person["age"]=24;

三:
对象字面量表达式
var Person={
name: "Sun",
age: 24
}

PS:
1、在这个例子中,比较适合使用第二种形式,向obj中添加元素
2、split("&") , 如果url只有一个参数的时候,没有“&”的时候,也不会报错,只会返回array[0]
function parseQueryString(url) {
    var obj = {};
    var keyvalue = [];
    var key = "",
        value = "";
    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
    for (var i in paraString) {
        keyvalue = paraString[i].split("=");
        key = keyvalue[0];
        value = keyvalue[1];
        obj[key] = value;
    }
    return obj;
}

以下介绍了JS根据key值获取URL中的参数值及把URL的参数转换成json对象,js通过两种方式获取url传递参数,代码
示例一:
//把url的参数部分转化成json对象
parseQueryString: function(url) {
     var reg_url = /^[^/?]+/ ? ([/w/W] + ) $ / ,
         reg_para = /([^&=]+)=([/w/W]*?)(&|$|#)/g,
         arr_url = reg_url.exec(url),
         ret = {};
     if (arr_url && arr_url[1]) {
         var str_para = arr_url[1],
             result;
         while ((result = reg_para.exec(str_para)) != null) {
             ret[result[1]] = result[2];
         }
     }
     return ret;
}
// 通过key获取url中的参数值
getQueryString: function(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
}
示例二:
js通过两种方法获取url传递参数:
js获取url传递参数方法一:
这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET
函数:
function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
        }
    }
    return theRequest;
}

然后我们通过调用此函数获取对应参数值:
var Request = new Object();
Request = GetRequest();
var 参数1,参数2,参数3,参数N;
参数1 = Request[''参数1''];
参数2 = Request[''参数2''];
参数3 = Request[''参数3''];
参数N = Request[''参数N''];
以此获取url串中所带的同名参数
js获取url传递参数方法二 正则分析法:
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return (r[2]);
    return null;
}
alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));
alert(GetQueryString("参数名3"));
其他参数获取介绍:
//设置或获取对象指定的文件名或路径。
alert(window.location.pathname);
//设置或获取整个 URL 为字符串。
alert(window.location.href);
//设置或获取与 URL 关联的端口号码。
alert(window.location.port);
//设置或获取 URL 的协议部分。
alert(window.location.protocol);
//设置或获取 href 属性中在井号“#”后面的分段。
alert(window.location.hash);
//设置或获取 location 或 URL 的 hostname 和 port 号码。
alert(window.location.host);
//设置或获取 href 属性中跟在问号后面的部分。
alert(window.location.search);

From:https://www.w3cschool.cn/json/1koy1piy.html
背景:用Linux的信号Signal实现发信号给进程,是一种进程间通讯的办法,主要用来重新加载配置、重启服务、杀死进程、进程间通讯等。
下面就是一个通过向进程发送Signal信号以该进程退出,重新起了一新的子进程,用到了kill -HUP PID,主要是学习HUP信号的C语言编码方法。


gcc 编译:
gcc nohup.c -o b.out

运行:
./a.out


ps aux|grep b.out
root      4919  0.0  0.1   4296  1328 pts/6    S+   20:22   0:00 ./b.out

kill -HUP 4919

#ps aux|grep b.out
root      4958  0.0  0.1   4296  1324 pts/6    S    20:23   0:00 ./b.out

From:http://www.jb51.net/article/37422.htm
5月12日晚,WanaCrypt0r 2.0勒索软件在全球爆发(简称 WCry2.0),Wcry2.0利用4月份nsa泄露的安全漏洞对windows系统进行攻击,从而植入勒索软件,据统计全球上百个国家的13万多台电脑遭到感染,其中不乏大型企业,医院及各种公共服务行业,带来了巨大的恶意影响。

漏洞、文件加密型的勒索软件、比特币付费解密的完美组合,已成为网络攻击敲诈勒索的最佳实践。我们看到近年来不断出现利用各种服务漏洞和不安全配置进行勒索敲诈的案例,如大量裸奔在互联网的hadoop、mongodb、elasticsearch等服务的不安全配置及弱口令导致的勒索。

同样linux ssh服务也面临以上的风险,据国外媒体报道,一台在互联网运行的linux系统开启ssh服务10秒内,就会出现对ssh的口令破解攻击,由此可见攻击者通过自动化的方式不断去扫描整个互联网寻找攻击目标,ssh用户口令破解也因为攻击手段简单、粗暴,技术门槛低成为最常见的攻击方式。ssh做为linux系统最最主要的远程管理工具,一旦成功破解系统用户密码,尤其是root用户,就会获得系统的最高权限,除了可以通过勒索软件用来实施勒索外,系统也可能被安装后门、木马等恶意软件,成为僵尸主机。

如果您还在使用密码登陆ecs实例的ssh服务,除了通过安全组设置严格的ssh服务登陆源地址外,强烈建议改用SSH密钥对 登陆ecs实例,禁用密码方式登陆。SSH密钥对利用高强度的公私钥及对称加密算法实现对用户的认证,有效降低了破解用户口令的攻击。

来源:某云,后面是广告,就不粘贴了。
背景:经常一些应用爱搞一天一个目录,天数多了里面文件也大了,磁盘也占满了,怎么办?得每天删除1个月的日志。于是一个月的时间就得用上了。
Mysql删除七天前的,搬过来:

我要的是这个:


一、Linux的Shell系统下的Date/date函数用法:


Egg: cat /root/del_catalina.sh


In Bash:
get year-month-day from date
DATE=`date +%Y-%m-%d`
get year-month-day hour:minute:second from date

DATE=`date +%Y-%m-%d:%H:%M:%S`


二、获取昨天、明天或多天前的日期:
在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年

# 获取昨天
date -d 'yesterday'  # 或 date -d 'last day'
# 获取明天
date -d 'tomorrow'   # 或 date -d 'next day'
# 获取上个月
date -d 'last month'
# 获取下个月
date -d 'next month'
# 获取上一年
date -d ’last year'
# 获取下一年
date -d 'next year'
此外你可以获取多天前,多天后,多个月前,多个月后,多年前或多年后

# 三年前
date -d '3 year ago'
# 五年后
date -d '-5 year ago'
# 两天后
date -d '-2 day ago'
# 一个月前
date -d '1 month ago'


来自:https://my.oschina.net/aiguozhe/blog/57835
find . -mtime +90 -exec sh -c "rm -rf {}" \;
背景:在打包时,需要对源文件是ZIP格式的,给unzip解压文件到指定的打包目录$RPM_BUILD_DIR,查了下,也就是得用到unzip的-d参数。


来源 :http://blog.csdn.net/ljchlx/article/details/8028672
tar -xzvf mysql-5.6.15.tar.gz -C ./mysql-5.6.15 --strip-components 1
实践:


实践来自:http://www.cnblogs.com/zxiaozhou/p/6068867.html
背景:在secureCRT使用vim,alt键映射都被secureCRT占用了,导致设置alt开头的快捷键都不能用,这很不方便 有办法解决这一问题吗?
option -> session options -> termianl -> emulation -> use alt as meta key
vim依然无法正确识别到alt键。
解决了,设置xterm方式就好了。

问题描述:SecureCRT通过ssh登陆一台linux,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了。
解决办法 secureCRT -> 选项 ->  会话选项 -> 仿真 -> 映射键; 勾上backspace发送delete。
secureCRT
-> 选项 ->  会话选项 -> 仿真->emacs;勾上use alt as meta key  
SecureCRT最常用的的:alt+b打开一个目录(下一堆IP)和一个IP的,就没法用了,但是提高了操作Shell出现错误的速度。这个打开IP的操作并不常用。
但是那个切换Alt+1,Alt+2...,切换标签的不好使了,艹。后来放弃为了实现alt+b,alt+f在shell里是前后一个单词的理想了,有Ctrl+f,Ctrl+b一个一个跳也成,姑且算是习惯了,得了。

From:https://www.zhihu.com/question/21608031

快捷方式之 securecrt/SecureCRT的delete键向后删除键变为Backspace键之解决办法:
http://jackxiang.com/post/9342/



实践如下:
\cp -r * ../gpac/extra_lib
查找下原因:
实际上cp默认是会覆盖的,出现你这种情况是因为cp被alias成cp -i了,可以通过alias命令查看。
\cp则是告诉shell不要去查alias,直接执行原本的cp

目前,我得知有四种方法:
1.在调用cp的时候加入绝对路径(可通过whereis cp命令得到),如
/bin/cp -f file dir
2.通过直接执行下面的语句调用系统原始的命令:
\cp -f file dir
3.在~/.bashrc里面注释掉 Alias cp='cp -i'
4.unalias cp ,然后再使用cp,但使用后还原alias cp='cp -i'

来自:http://www.oschina.net/question/1588291_166511
Mplayer Error: yasm not found, use --yasm='' if you really want to compile without
[root@zhang ~]# cd my document
cd 一个含空格的目录,会被视为俩个目录,而有优先进入第一个目录(如果两个目录都存在的话):

使用单引号

[root@zhang ]# cd 'my document'
对空格转义

[root@zhang ~]# cd my\ document
在第一个单词之后按下 tab 键也是一样的处理方法,即对空格进行转义;

使用 * 进行匹配

[root@zhang ~]# cd my*document
对于文件夹名开头为(的情况

同样,要么使用单引号,要么使用\,进行转义;

来自:http://blog.csdn.net/lanchunhui/article/details/51211165
参考:http://www.cnblogs.com/wjyHIT2011/p/6801727.html
说明:linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。

hash表的作用:大大提高命令的调用速率。

hash的参数:
[root@redhat ~]# hash  //输入hash或hash -l 可以查看hash表的内容,我刚开机所以为空
hash: hash table empty
[root@redhat ~]# hash -l
hash: hash table empty

当我执行过2条命令后再看:

[root@redhat ~]# hash  //hash表会记录下执行该命令的次数,以及命令的绝对路径
hits command
   1 /bin/cat
   1 /bin/ls
[root@redhat ~]# hash -l  //加参数-l既可以看到hash表命令的路径,也可以看到它的名字,说不定会有别名哦
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls

[root@redhat ~]# hash -p /bin/ls bb  //添加hash表,可以看到我把ls命令重新写了一遍,改名为bb

[root@redhat ~]# bb    //当我执行bb时就是执行ls命令
anaconda-ks.cfg        icmp_echo_ignore_aly~  pub.key
dead.letter        icmp_echo_ignore_alz~  rpmbuild
icmp_echo_ignore_all~  install.log       RPM-GPG-KEY-useradd
icmp_echo_ignore_alw~  install.log.syslog     RPM-GPG-KEY-westos
icmp_echo_ignore_alx~  passwd


[root@redhat ~]# hash -t ls  //-t参数可以查看hash表中命令的路径,要是hash表中没有怎么办?
/bin/ls

[root@redhat ~]# hash -t df  //我没使用过df,执行hash,就会提示找不到该命令
-bash: hash: df: not found

[root@redhat ~]# hash -r  //清楚hash表,清楚的是全部的
[root@redhat ~]# hash -l
hash: hash table empty

[root@redhat ~]# hash -l
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls
[root@redhat ~]# hash -d cat   //清楚其中的某一条
[root@redhat ~]# hash -l
builtin hash -p /bin/ls ls

From:http://www.cnblogs.com/linux-super-meng/p/3788739.html
securecrt 在vt100/ANSI模式下会delete键和backspace键功能一样,都是删除前面的内容,要调整向后删除需要设置下:会话选项--终端--仿真--终端里选择linux模式或xterm即可。

From:http://soige.blog.51cto.com/512568/1323479/

相关之在secureCRT使用vim,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了,能屏蔽吗?
http://jackxiang.com/post/9354/
在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个:
一)直接看某个进程的内存情况:




看下Nginx:
cat /proc/2821/status|grep VmRSS
VmRSS:      8776 kB

来自:http://www.jb51.net/LINUXjishu/66604.html



二)整体从系统层面看内存和cpu占用:
查看某个进程占用内存和cpu的多少:
找出消耗内存最多的前10名进程

# ps -auxf | sort -nr -k 4 | head -10

找出使用CPU最多的前10名进程
# ps -auxf | sort -nr -k 3 | head -10



来自:http://blog.chinaunix.net/uid-20492804-id-265809.html
零.批量替换文件:
find . -type f -exec sed -n 's#S:"Username"=#S:"Username"=xiangdong#p' {} \;

一.
find /var/www/ -name file -exec cp {}{,.bak} \; 递归备份文件

1).
cp filename{,.bak}
quickly backup or copy a file with bash

2).
目录会自动omit删除掉; 目录不会复制;

来自:https://www.douban.com/note/422847745/

二.
cp filename{,.bak}
这个命令是用来把filename备份成filename.bak的
等同于命令
cp filename filename.bak
这里利用的是bash的brace expansion(大括号扩展)功能
按照bash手册(man bash)所述
bash支持{a,b,c}这样的扩展
比如a{d,c,b}e会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了

同理可得:
tar cvfz leo{-20170202.tgz,}=tar cvfz leo-20170202.tgz leo

来自:http://leomars.blog.51cto.com/683246/1894566

三.
cp filename{,.bak} //注意花括号边并没有空格,否则就不 是扩展了,变成拷贝为{,.bak}文件了。
这个命令是用来把filename备份成filename.bak,等同于命令
cp filename filename.bak

这里利用的是bash的brace expansion(大括号扩展)功能,
按照bash手册(man bash)所述:
bash支持{a,b,c}这样的扩展,比如a{d,c,b}e 会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了
原文http://www.haw-haw.org/node/1507

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