Linux 常用命令
1. vim
- dd 删除一整行,下一行提上来;D删除一整行,光标在行头
- S删除一整行并插入,相当于D+i;s 删除当前位置的字符并插入
- I 到行首插入;i 在当前光标位置插入
- :set nu 行号;:set nonu 取消行号
- J 合并当前行和下一行
- ctrl+f 向下翻页
- ctrl+b 向上翻页
- n 向下查找匹配项
- N 向上查找匹配项
2. 端口
2.1 lsof=list open files
lsof -i:3306
2.1 netstat
netstat -anu/-ant
-a 全部
-n 显示ip,不是域名
-t tcp协议
-u udp协议
-l或–listening 显示监控中的服务器的Socket
-p或–programs 显示正在使用Socket的程序识别码和程序名称
查看网络连接状况
netstat -an
如何统计系统当前进程连接数
netstat -an | grep ESTABLISHED | wc -l
用 netstat 命令配合其他命令,按照源 IP 统计所有到 80 端口的 ESTABLISHED 状态链接的个数
netstat -an|grep ESTABLISHED|grep “:80”|awk ‘BEGIN{FS=”[[:space:]:]+”}{print $4}’|sort|uniq -c|sort -nr
3. jvm相关的命令
- jps:显示系统内所有的jvm进程
- jstat:收集jvm相关的运行数据
- jinfo:显示jmv配置信息
- jmap:用于生成jvm的快照
- jhat:用于分析heapdump文件,可以建立一个http/html服务,在浏览器上查看分析结果
- jstack:显示jvm的线程快照
- jconsole: 一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM
jcmd 替换 jmap
jcmd pid help 查看可以支持的一些option选项
jcmd pid
4. find
查找指定文件名的文件(不区分大小写)
find -iname “xxx”
对找到的文件执行某个命令
find -iname “xxx” -exec md5sum {} \
查找home目录下所有空文件
find ~ -empty
在/usr目录下找出大小超过10M的文件
find /usr -type f -size +10240k
在/var目录下找出90天之内未被访问过的文件
find /var ! -atime -90
在/home目录下找出120天之前被修改过的文件
find /home -mtime +120
在整个目录树下查找文件,如果发现直接删除
find / -name “xxx” -exec rm {} \
5. du
找出磁盘上占空间大的文件或文件夹
du -a /var | sort -n -r | head -n 10
6. ls/ll
按照最后修改时间升序列出文件
ll -tr 或者 ls -ltr
7. rsync
每周一下午3点定时将 /tmp/logs 目录下所有后缀为 .log 的文件同步到备份服务器同样的目录下
crontab -e
0 15 * * 1 rsync -avzp /tmp/logs/.log root@ip:/tmp/logs
8. top
实时监控系统的cpu和内存,3s刷新一次
包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统 CPU 使用情况(vmstat)等
9. free
查看内存大小,使用多少,剩余多少
10. less
打开大文件,vi 会卡,less可以在不加载整个文件的前提下显示文件内容
ctrl+f 上页
ctrl+b 下页
命令和vi类似
11. grep
统计文件中包含匹配项的行数
grep -c “xxx” file
列出包含匹配项的文件名称
grep -l “xxx” file1 file2 file3
正则匹配
grep -E “[1-9]+” file
匹配多个内容
grep -e “xx” -e “xxxx” file
12. sed
用 sed 命令将指定的路径 /usr/local/http 替换成为 /usr/src/local/http
echo “/usr/local/http” | sed ‘s#/usr/local/http#/usr/src/local/http#’
echo ‘/a’ | sed -e ‘s///x/g’ -e ‘s/a/y/g’
等价于
echo ‘/a’ | sed ‘s//a/xy/g’
# 貌似是把一些特殊字符的转义给省略了。方便直接去做替换
打印 /etc/ssh/sshd_config 的第一百行
sed -n ‘100p’ /etc/ssh/sshd_config
打印第1到3行
sed -n ‘1,3p’ /etc/passwd
1 | ! /bin/bash |
13. awk
打印第1到3行
awk ‘NR>=1&&NR<=3{print $0}’ /etc/passwd
awk 可以把文件行内容通过分隔符来划分成不同的域,用 $1 $2 表示,$0 表示整行内容
14. xargs
将所有图片文件拷贝到外部驱动器
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
将系统中所有 jpg 文件压缩打包
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
下载文件中列出的所有 url 对应的页面
cat url-list.txt | xargs wget –c
把当前目录下所有后缀名为 .txt 的文件的权限修改为 777
find ./ -type f -name “.txt” |xargs chmod 777
find ./ -type f -name “.txt” -exec chmod 777 {}
15. man
显示某个命令的帮助手册
man crontab
一个命令也许有好几个man页面,可以先通过 whatis xx 查看命令 xx 有哪些类型,然后通过 man selectNumber xx 查看对应类型号的命令xx的man页面
16. curl
ping 测试某个地址能否连接,curl 测试某个url是否可以访问
17. shell 脚本
1 | if 条件 |
大于 -gt
1 | case 变量 in |
1 | for 变量 in item1 itme2 ... itemN |
1 | while 条件 |
18. 如何将标准输出和错误输出同时重定向到同一位置
2>&1
ls /usr/share/doc > out.txt 2>&1
&>
ls /usr/share/doc &> out.txt