<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://www.gentoo-zh.org/extern.php?action=feed&amp;tid=543&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Gentoo中文社区 / 常用命令]]></title>
		<link>https://www.gentoo-zh.org/viewtopic.php?id=543</link>
		<description><![CDATA[常用命令 最近发表的帖子。]]></description>
		<lastBuildDate>Sun, 13 Nov 2022 10:11:10 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[常用命令]]></title>
			<link>https://www.gentoo-zh.org/viewtopic.php?pid=580#p580</link>
			<description><![CDATA[<p>linux运维必须知道的几个常用命令</p><br /><p>1.删除0字节文件<br />find -type f -size 0 -exec rm -rf {} \;</p><p>2.查看进程<br />按内存从大到小排列<br />ps -e&#160; &#160;-o &quot;%C&#160; &#160;: %p : %z : %a&quot;|sort -k5 -nr</p><p>3.按cpu利用率从大到小排列<br />ps -e&#160; &#160;-o &quot;%C&#160; &#160;: %p : %z : %a&quot;|sort&#160; &#160;-nr</p><p>4.打印说cache里的URL<br />grep -r -a&#160; &#160;jpg /data/cache/* | strings | grep &quot;http:&quot; | awk -F&#039;http:&#039; &#039;{print &quot;http:&quot;$2;}&#039;</p><p>5.查看http的并发请求数及其TCP连接状态：<br />netstat -n | awk &#039;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&#039;</p><br /><p>6. sed -i &#039;/Root/s/no/yes/&#039; /etc/ssh/sshd_config&#160; &#160;sed在这个文里Root的一行，匹配Root一行，将no替换成yes.</p><p> </p><p>7.1.如何杀掉mysql进程：<br />ps aux |grep mysql |grep -v grep&#160; |awk &#039;{print $2}&#039; |xargs kill -9 (从中了解到awk的用途)</p><p>killall -TERM mysqld</p><p>kill -9 `cat /usr/local/apache2/logs/httpd.pid`&#160; &#160;试试查杀进程PID</p><p>8.显示运行3级别开启的服务:<br />ls /etc/rc3.d/S* |cut -c 15-&#160; &#160;(从中了解到cut的用途，截取数据)</p><p>9.如何在编写SHELL显示多个信息，用EOF<br />cat &lt;&lt; EOF<br />+--------------------------+<br />|&#160; &#160; &#160; &#160;=== Welcome to Tunoff services ===&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; |<br />+--------------------------+<br />EOF</p><p>10. for 的巧用(如给mysql建软链接)<br />cd /usr/local/mysql/bin<br />for i in *<br />do ln /usr/local/mysql/bin/$i /usr/bin/$i<br />done</p><p>11. 取IP地址：<br />ifconfig eth0 |grep &quot;inet addr:&quot; |awk &#039;{print $2}&#039;|cut -c 6-&#160; &#160;或者</p><p>ifconfig&#160; &#160;| grep &#039;inet addr:&#039;| grep -v &#039;127.0.0.1&#039; | cut -d: -f2 | awk &#039;{ print $1}&#039;</p><p>12.内存的大小:<br />free -m |grep &quot;Mem&quot; | awk &#039;{print $2}&#039;</p><p>13.<br />netstat -an -t | grep &quot;:80&quot; | grep ESTABLISHED | awk &#039;{printf &quot;%s %s\n&quot;,$5,$6}&#039; | sort</p><p>14.查看Apache的并发请求数及其TCP连接状态：<br />netstat -n | awk &#039;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&#039;</p><p>15.因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦.<br />find / -name *.jpg -exec wc -c {} \;|awk &#039;{print $1}&#039;|awk &#039;{a+=$1}END{print a}&#039;</p><p>CPU的数量（多核算多个CPU，cat /proc/cpuinfo |grep -c processor）越多，系统负载越低，每秒能处理的请求数也越多。</p><p>---------------------------------------------------<br />16&#160; &#160;CPU负载&#160; &#160;# cat /proc/loadavg<br />检查前三个输出值是否超过了系统逻辑CPU的4倍。&#160; </p><p>18&#160; &#160;CPU负载&#160; &#160;#mpstat 1 1<br />检查%idle是否过低(比如小于5%)</p><p>19&#160; &#160;内存空间&#160; &#160;# free<br />检查free值是否过低&#160; &#160;也可以用 # cat /proc/meminfo</p><p>20&#160; &#160;swap空间&#160; &#160;# free<br />检查swap used值是否过高&#160; &#160;如果swap used值过高，进一步检查swap动作是否频繁：<br /># vmstat 1 5<br />观察si和so值是否较大</p><p>21&#160; &#160;磁盘空间&#160; &#160;# df -h<br />检查是否有分区使用率(Use%)过高(比如超过90%)&#160; &#160;如发现某个分区空间接近用尽，可以进入该分区的挂载点，用以下命令找出占用空间最多的文件或目录：<br /># du -cks * | sort -rn | head -n 10</p><p>22&#160; &#160;磁盘I/O负载&#160; &#160;# iostat -x 1 2<br />检查I/O使用率(%util)是否超过100%</p><p>23&#160; &#160;网络负载&#160; &#160;# sar -n DEV<br />检查网络流量(rxbyt/s, txbyt/s)是否过高</p><p>24&#160; &#160;网络错误&#160; &#160;# netstat -i<br />检查是否有网络错误(drop fifo colls carrier)&#160; &#160;也可以用命令：# cat /proc/net/dev</p><p>25 网络连接数目&#160; &#160;# netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n</p><p>26&#160; &#160;进程总数&#160; &#160;# ps aux | wc -l<br />检查进程个数是否正常 (比如超过250)</p><p>27&#160; &#160;可运行进程数目&#160; &#160;# vmwtat 1 5<br />列给出的是可运行进程的数目，检查其是否超过系统逻辑CPU的4倍</p><p>28&#160; &#160;进程&#160; &#160;# top -id 1<br />观察是否有异常进程出现</p><p>29&#160; &#160;网络状态&#160; &#160;检查DNS, 网关等是否可以正常连通</p><p>30&#160; &#160;用户&#160; &#160;# who | wc -l<br />检查登录用户是否过多 (比如超过50个)&#160; &#160;也可以用命令：# uptime</p><p>31&#160; &#160;系统日志&#160; &#160;# cat /var/log/rflogview/*errors<br />检查是否有异常错误记录&#160; &#160;也可以搜寻一些异常关键字，例如：<br /># grep -i error /var/log/messages<br /># grep -i fail /var/log/messages</p><p>32&#160; &#160;核心日志&#160; &#160;# dmesg<br />检查是否有异常错误记录</p><p>33&#160; &#160;系统时间&#160; &#160;# date<br />检查系统时间是否正确</p><p>34&#160; &#160;打开文件数目&#160; &#160;# lsof | wc -l<br />检查打开文件总数是否过多</p><p>35&#160; &#160;日志&#160; &#160;# logwatch –print&#160; &#160;配置/etc/log.d/logwatch.conf，将 Mailto 设置为自己的email 地址，启动mail服务(sendmail或者postfix)，这样就可以每天收到日志报告了。<br />缺省logwatch只报告昨天的日志，可以用# logwatch –print –range all 获得所有的日志分析结果。<br />可以用# logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。</p><p>36.杀掉80端口相关的进程<br />lsof -i :80|grep -v &quot;PID&quot;|awk &#039;{print &quot;kill -9&quot;,$2}&#039;|sh</p><p>37.清除僵死进程。<br />ps -eal | awk &#039;{ if ($2 == &quot;Z&quot;) {print $4}}&#039; | kill -9</p><p>38.tcpdump 抓包 ，用来防止80端口被人攻击时可以分析数据<br /># tcpdump -c 10000 -i eth0 -n dst port 80 &gt; /root/pkts</p><p>39.然后检查IP的重复数 并从小到大排序 注意 &quot;-t\ +0&quot;&#160; &#160;中间是两个空格<br /># less pkts | awk {&#039;printf $3&quot;\n&quot;&#039;} | cut -d. -f 1-4 | sort | uniq -c | awk {&#039;printf $1&quot; &quot;$2&quot;\n&quot;&#039;} | sort -n -t\ +0</p><p>40.查看有多少个活动的php-cgi进程<br />netstat -anp | grep php-cgi | grep ^tcp | wc -l </p><p>chkconfig --list | awk &#039;{if ($5==&quot;3:on&quot;) print $1}&#039;</p><p>41.kudzu查看网卡型号<br />kudzu --probe --class=network</p><p>匹配中文字符的正则表达式： [\u4e00-\u9fa5]<br />评注：匹配中文还真是个头疼的事，有了这个表达式就好办了</p><p>匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br />评注：可以用来计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）</p><p>匹配空白行的正则表达式：\n\s*\r<br />评注：可以用来删除空白行</p><p>匹配HTML标记的正则表达式：&lt;(\S*?)[^&gt;]*&gt;.*?&lt;/\1&gt;|&lt;.*? /&gt;<br />评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力</p><p>匹配首尾空白字符的正则表达式：^\s*|\s*$<br />评注：可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式</p><p>匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br />评注：表单验证时很实用</p><p>匹配网址URL的正则表达式：[a-zA-z]+://[^\s]*<br />评注：网上流传的版本功能很有限，上面这个基本可以满足需求</p><p>匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />评注：表单验证时很实用</p><p>匹配国内电话号码：\d{3}-\d{8}|\d{4}-\d{7}<br />评注：匹配形式如 0511-4405222 或 021-87888822</p><p>匹配腾讯QQ号：[1-9][0-9]{4,}<br />评注：腾讯QQ号从10000开始</p><p>匹配中国邮政编码：[1-9]\d{5}(?!\d)<br />评注：中国邮政编码为6位数字</p><p>匹配身份证：\d{15}|\d{18}<br />评注：中国的身份证为15位或18位</p><p>匹配ip地址：\d+\.\d+\.\d+\.\d+</p><p>评注：提取ip地址时有用</p><p>匹配特定数字：<br />^[1-9]\d*$&#160; &#160; //匹配正整数<br />^-[1-9]\d*$&#160; &#160;//匹配负整数<br />^-?[1-9]\d*$&#160; &#160;//匹配整数<br />^[1-9]\d*|0$&#160; //匹配非负整数（正整数 + 0）<br />^-[1-9]\d*|0$&#160; &#160;//匹配非正整数（负整数 + 0）<br />^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$&#160; &#160;//匹配正浮点数<br />^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$&#160; //匹配负浮点数<br />^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$&#160; //匹配浮点数<br />^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$&#160; &#160;//匹配非负浮点数（正浮点数 + 0）<br />^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$&#160; //匹配非正浮点数（负浮点数 + 0）<br />评注：处理大量数据时有用，具体应用时注意修正</p><p>匹配特定字符串：<br />^[A-Za-z]+$&#160; //匹配由26个英文字母组成的字符串<br />^[A-Z]+$&#160; //匹配由26个英文字母的大写组成的字符串<br />^[a-z]+$&#160; //匹配由26个英文字母的小写组成的字符串<br />^[A-Za-z0-9]+$&#160; //匹配由数字和26个英文字母组成的字符串<br />^\w+$&#160; //匹配由数字、26个英文字母或者下划线组成的字符串<br />评注：最基本也是最常用的一些表达式</p>]]></description>
			<author><![CDATA[dummy@example.com (batsom)]]></author>
			<pubDate>Sun, 13 Nov 2022 10:11:10 +0000</pubDate>
			<guid>https://www.gentoo-zh.org/viewtopic.php?pid=580#p580</guid>
		</item>
	</channel>
</rss>
