Loading

Linux 常用命令

date: 2021-01-19 20:49:56
updated: 2021-01-19 20:49:58

Linux 常用命令

1. vim

  1. dd 删除一整行,下一行提上来;D删除一整行,光标在行头
  2. S删除一整行并插入,相当于D+i;s 删除当前位置的字符并插入
  3. I 到行首插入;i 在当前光标位置插入
  4. :set nu 行号;:set nonu 取消行号
  5. J 合并当前行和下一行
  6. ctrl+f 向下翻页
  7. ctrl+b 向上翻页
  8. n 向下查找匹配项
  9. 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相关的命令

参考文档

  1. jps:显示系统内所有的jvm进程
  2. jstat:收集jvm相关的运行数据
  3. jinfo:显示jmv配置信息
  4. jmap:用于生成jvm的快照
  5. jhat:用于分析heapdump文件,可以建立一个http/html服务,在浏览器上查看分析结果
  6. jstack:显示jvm的线程快照
  7. 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

#! /bin/bash

# dateTime=$(date +%Y%m%d_%H%M%S);
# curl url > $dateTime.txt
# t1=$(sed -n '196p' $dateTime.txt | sed 's/[[:space:]]//g');
# t2=$(sed -n '205p' $dateTime.txt | sed 's/[[:space:]]//g');
# echo $dateTime Memory Used: $t1 -- VCores Used: $t2 >> monitor4yarn.txt
# rm -r $dateTime.txt

t1=1.07TB
unit=${t1:0-2};
val=$(echo ${t1} | sed "s/${unit}//g");
newVal=$(echo "scale=2;${val}*1024"|bc)
if [ $unit == "TB" ]
then t1=${newVal}"GB"
fi 
echo $t1

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 脚本

if 条件
then 命令1
else
if 条件
then 命令2
else
命令3
fi
fi

大于 -gt

case 变量 in 
值1)
命令1
;;
值2)
命令2
;;
esac
for 变量 in item1 itme2 ... itemN
do
命令
done
while 条件
do
命令
done

18. 如何将标准输出和错误输出同时重定向到同一位置

2>&1
ls /usr/share/doc > out.txt 2>&1

&>
ls /usr/share/doc &> out.txt

posted @ 2021-02-07 15:45  猫熊小才天  阅读(150)  评论(0编辑  收藏  举报