注: 内容来自平时收集和同事贡献.
A,要求A前面不能出现B
1. du -s * | sort -nr | head -n 5
du *, 是对要统计的目录下的所有当前目录的文件和文件夹进行统计,而对文件夹中的文件夹不再统计;而 du -s,则会统计.
2. 统计网络状态
netstat -nta | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
3.过滤掉配置文件中的注释行
sed -i -e '/^#/d' httpd.conf
sed -i.bak -e '/^#/d' httpd.conf #过滤指定文件同时备份文件
grep -v "^ *#" #注意,中间有个空格,否 则不起作用的.
cat /usr/local/etc/apache22/httpd.conf | grep -v \# | sed '/^\s*$/d'
4.vi 中查找替换
:%s/abc/789/gc
每次遇到 abc 都会交互下,是否需要替换.
5. vi 的 recording 命令使用
例子: 想往文件开头加 "",尾部加 "",执行以下命令:
:qa1G0iG%a q
(q 开始到最后 q 结束,第一个 a 是记录到保存名字为 a 的变量之中, G$ 是到文件 最后一行, 0i 是开始处加入, G$ 是到文件 最后一行,第二个 a 是要往最后一行的后面写)以后进入任何一个文件都可以直接按 @a 完成上面的功能.
6. Q: 有 A, B 两文件列表,如何找出只在 A 列表出现过的行?
A: sort -T ~/tmp/ A B B | uniq -u > result.list
7. Q: 怎样递归替换目录下所有文件中的字符串?
A: 预览: foo => bar
sed -e 's/foo/bar/g' `grep 'foo' * -R|`
确认修改:
set -i 's/foo/bar/g' `grep 'foo' * -R|`
8. 如何使用sar命名查看linux系统状态?
$ sar 看CPU利用率情况
$ sar –q 看平均负载
$ sar –d 看磁盘访问情况
9. 有时候磁盘空间满了,该如何查找哪个文件夹比较大?
可以使用如下命令找到占空间最多的几个文件夹
du -sh * | sort -nr | head -n 5
10. 怎样查看处在各种状态下的TCP连接数,以便分析服务是否正常
使用如下命令,可以按照连接状态分别统计出来
netstat -nta | awk '/^tcp/{++S[$NF]} END {for(a in S) print a,S[a]}'
如果要单独查看某个服务,则用端口号过滤一下,例如:
netstat -nta | grep 21221 | awk '/^tcp/{++S[$NF]} END {for(a in S) print a,S[a]}'
11. 创建alias,快捷的ssh到一台机器上
修改~/.bashrc文件,添加如下两行
_go(){ ssh -A username@192.168.0.$1; }
alias go=_go
这样一来,原本需要ssh -A username@192.168.0.154 现在只需要改用go 154即可,快很多吧!
12. 正则表达式高级技巧:
预查及负向预查
有时候我们希望在文本中匹配一段字符串A,但是要求这段字符串的前面(或者后面)必须出现(或者不能出现)字符串B,就需要用到预查,
预查分为正向预查、反向预查;负向预查分为负正向预查和负反向预查。
这四种预查的语法分别是:
A(?=B) 匹配A,要求A后面必须出现B
(?<=B)A 匹配A,要求A前面必须出现B
A(?!B) 匹配A,要求A后面不能出现B
(?匹配
13. 如何查找N天没有被修改过的文件?
下面这条命令会列出在当前目录下最近128天没有被修改过的文件
$ find . -mtime +128
如果想删除,则
cd dest-dir && find ./ -type f -mtime +128 -exec rm {} \;
如果想删除,则
cd dest-dir && find ./ -type f -mtime +128 -exec rm {} \;
14. Nginx如何平滑重启?
比如pid文件位于/usr/local/nginx/nginx.pid, 运行sudo kill CHUP `cat /usr/local/nginx/nginx.pid`这条即可
这样修改了配置文件,不用杀死nginx进程,也可以让配置文件生效
15. nginx如何防止网站被过度抓取?
配置如下:
limit_zone zone $binary_remote_addr 10m; //定义一个存放会话信息的区块
limit_conn zone 10; #限制一个IP并发连接数为10个
imit_rate 20k; #限制带宽
16. Nginx如何打开长连接?
打开长连接,可以有效节省带宽,降低压力,web server为nginx的情况下,配置文件设置添加keepalive_timeout 60;
即可打开长连接,时间为60秒,根据需要,可以增大或调小这个时间。keepalive_timeout 0;则关闭长连接
17. 如何对最近N天没有被修改过的log文件存档?
我们的log文件好多都是一天一个文件,经常看的估计就是最近两三天的,
那么对N天前的log文件存档(压缩),是有必要的.
find ./ -type f -mtime +30 | xargs tar -cvf ./`date +%Y%m%d`.tar
这个是命令是查找当前目录下最近30天没有被修改过的文件并在当前目录下创建一个格式
为YYYYMMDD.tar的归档文件.
18. 最简便的清空 memcache 的方法?
如果要清空memcache的items,常用的办法是什么?杀掉重启?如果有n台memcache需要重启怎么办?挨个做一遍?
很简单,假设memcached运行在本地的11211端口,那么跑一下命令行:
$ sudo echo "flush_all" | nc 192.168.0.168 11211
注:flush并不会将items删除,只是将所有的items标记为expired。
19. 如何快速的把一个unix时间戳转换为普通时间?
使用date -d@ 后接unix时间戳
$ date -d@1271397015 # debian Linux GNU/Linux
$ date -r 1271397015 # Mac OS/BSD
Fri Apr 16 13:50:15 CST 2010
20. 如何在vim中删除空行?
刪除沒有內容的空行
:g/^$/d
刪除包含有空格組成的空行
:g/^\s*$/d
除以空格或tab開頭到結尾的空行
:g/^[ |\t]*$/d
21. 如何粘贴后自动整理代码,省去 = 对齐代码的重复操作?
]p
22. 快速清空文件
$ : > data.file
注: 只适用于正规文件,不能是管道,符号链接,和某些特殊文件.
23. {} 的扩展作用
$ cp file22.{txt,backup}
拷贝 file22.txt 到 file22.backup 中.
注: {} 中不能不允许空白,除非这个空白是有意义的.
25. 取昨天的时间
$ date -d"yesterday" +%Y%m%d
26. 可以使用一下命令查使用内存最多的5个进程
ps -aux | sort -k4nr | head -n 5
或者: top F n
ps -aux | sort -k4nr | head -n 5
或者: top F n
27. 可以使用一下命令查使用CPU最多的5个进程
ps -aux | sort -k3nr | head -n 5
ps -aux | sort -k3nr | head -n 5
28. Linux删除乱码文件
当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。
但是我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件。首先,我们要取得文件的i节点号。这个可以通过ls命令的-i选项获得得,也可以通过ll -i 来获得。
第二步,使用find命令将文件名传递给rm命令。e.g:删除节点为12345的乱码文件夹可以使用如下命令
find ./ -inum 12345 -print -exec rm {} \;
注意\;前面的空格不能少,少了就会报错。
当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。
但是我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件。首先,我们要取得文件的i节点号。这个可以通过ls命令的-i选项获得得,也可以通过ll -i 来获得。
第二步,使用find命令将文件名传递给rm命令。e.g:删除节点为12345的乱码文件夹可以使用如下命令
find ./ -inum 12345 -print -exec rm {} \;
注意\;前面的空格不能少,少了就会报错。
29. svn diff 的几个有用的操作
1). 比较工作副本和版本库
如果传递一个 --revision (-r) 参数,你的工作副本会与版本库中的指定版本比较:
$ svn diff -r 3 rules.txt
2).如果通过 --revision (-r) 传递两个通过冒号分开的版本号,这两个版本会直接比较:
$ svn diff -r 2:3 rules.txt
A more convenient way of comparing one revision to the previous revision is to use the --change (-c) option:
$ svn diff -c 3 rules.txt
3). 即使在本机没有工作副本,还是可以比较版本库的修订版本,只需要在命令行中输入合适的URL:
$ svn diff -c 5 http://svn.example.com/repos/example/trunk/text/rules.txt
30. Linux 下安全的去重排序
$ sort -uf input
1). 比较工作副本和版本库
如果传递一个 --revision (-r) 参数,你的工作副本会与版本库中的指定版本比较:
$ svn diff -r 3 rules.txt
2).如果通过 --revision (-r) 传递两个通过冒号分开的版本号,这两个版本会直接比较:
$ svn diff -r 2:3 rules.txt
A more convenient way of comparing one revision to the previous revision is to use the --change (-c) option:
$ svn diff -c 3 rules.txt
3). 即使在本机没有工作副本,还是可以比较版本库的修订版本,只需要在命令行中输入合适的URL:
$ svn diff -c 5 http://svn.example.com/repos/example/trunk/text/rules.txt
30. Linux 下安全的去重排序
$ sort -uf input
31. 用 diff 制作 patch 包.
% diff -ru original newfile > patch.package
% diff -ru original newfile > patch.package
32. MySQL 导出查询数据
% mysql -h127.0.0.1 -uroot -p3006 --default-character-set="utf8" 数据库名 < select.sql > result
% mysql -h127.0.0.1 -uroot -p3006 --default-character-set="utf8" 数据库名 < select.sql > result
33. 如何查看Linux操作系统的位数
(1).编程实现:
在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数。若返回4则是32位操作系统,返回8即是64位。
(2).getconf命令:
getconf命令可以获取系统的基本配置信息,比如操作系统位数,内存大小,磁盘大小等。
例如:
getconf LONG_BIT
(1).编程实现:
在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数。若返回4则是32位操作系统,返回8即是64位。
(2).getconf命令:
getconf命令可以获取系统的基本配置信息,比如操作系统位数,内存大小,磁盘大小等。
例如:
getconf LONG_BIT
34. Ubuntu 删除旧内核
$ sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)
$ sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)
35. SVN 只提交空目录
$ svn add --depth=empty dir
$ svn add --depth=empty dir
36. 查看文件数目
find . -type f | wc -l
37. 彩色 man 显示
在.bashrc中加入如下代码:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
find . -type f | wc -l
37. 彩色 man 显示
在.bashrc中加入如下代码:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
38. vim中删除每行行尾的空格
:% s/\s\+$//g
:% s/\s\+$//g
39. iconv 转码失败?!
加 -c 参数即可.
iconv -c -f "utf-8" -t "gbk" utf-8.file -o gbk.file
加 -c 参数即可.
iconv -c -f "utf-8" -t "gbk" utf-8.file -o gbk.file
40. iconv 转化编码是忽略出错内容
iconv 用于字符编码转化:
官方用法: iconv(“gb2312”, "UTF-8", "测试语句");
在实际操作中,需要(最好)在第二个参数后面加上“//IGNORE”,即
iconv("gb2312", "UTF-8//IGNORE", "测试语句");
这个参数的意思是当转化过程中如果出错,那么就跳过错误,而不是默认的停在那里。
命令行中的用法是:
iconv -f gbk -t utf-8//IGNORE from_file.txt -o new_format_file.txt
iconv 用于字符编码转化:
官方用法: iconv(“gb2312”, "UTF-8", "测试语句");
在实际操作中,需要(最好)在第二个参数后面加上“//IGNORE”,即
iconv("gb2312", "UTF-8//IGNORE", "测试语句");
这个参数的意思是当转化过程中如果出错,那么就跳过错误,而不是默认的停在那里。
命令行中的用法是:
iconv -f gbk -t utf-8//IGNORE from_file.txt -o new_format_file.txt
41. 不解压缩直接查看*.gz和*.bz2命令
FreeBSD会把老的系统日志打包压缩存放,减少了磁盘空间占用。原来以为解压缩后才能查看日志内容,其实不然,使用zcat可以查看*.gz文件内容,使用bzcat可以直接查看*.bz2文件,很方便!
FreeBSD会把老的系统日志打包压缩存放,减少了磁盘空间占用。原来以为解压缩后才能查看日志内容,其实不然,使用zcat可以查看*.gz文件内容,使用bzcat可以直接查看*.bz2文件,很方便!
42. vi 中将空格替换成换行:%s/ \+/\r/g
43. vi中查找精确匹配或完全匹配
假设要查找的内容为abc, 要求精确匹配,则: /\
即用 \<\> 将内容包起来,再如精确匹配www: /\
前匹配和后匹配.可以从上面的做法推导出来.
假设要查找的内容为abc, 要求精确匹配,则: /\
即用 \<\> 将内容包起来,再如精确匹配www: /\
前匹配和后匹配.可以从上面的做法推导出来.
44. 取当前时间的 unix 时间戳
$ date +%s
没有评论:
发表评论