linux常用命令

这篇博客主要介绍一下linux系统下的常用命令,我用的是centos7版本的linux系统,其他版本的linux可能有所不同。还有就是linux下文件目录分大小写,主要大小写。

  1. grant all privileges on *.* to 'root'@'61.146.159.42' identified by '123456' with grant option;
    mysql /mariadb 授权远程登录数据库。(其中61.146.159.42为远程要登录数据库的主机ip,123456为登录数据库的密码。)参考:https://blog.csdn.net/lakeheart879/article/details/78247894

  2. curl ifconfig.me 查看本机外网ip地址。(直接if)。参考:https://blog.csdn.net/lakeheart879/article/details/78247894

  3. ./startup.sh./shutdown.sh启动和关闭tomcat服务器,该命令要改tomcat/bin目录下运行。

  4. tail -f ../logs/catalina.out启动tomcat服务后,在命令行实时观察tomcat运行情况。该命令需要在tomcat/bin运行。(ctrl + c为退出)

  5. ps -ef|grep tomcat 查看tomcat服务器是否还在运行中,如果在运行能查看其pid。

  6. kill -9 13546停止某个服务的进程,13546为进程号(一般配合ps命令使用),-9表示无条件终止线程。参考:https://www.cnblogs.com/liuhouhou/p/5400540.html

  7. sudo tar zxvf apache-tomcat-8.5.32.tar.gz -C /usr/local/tomcat8 解压某个文件到指定目录,apache-tomcat-8.5.32.tar.gz为待解压文件,/usr/local/tomcat8为解压的目录。-C一定要大写。 压缩:tar zcvf 文件名.tar.gz 待压缩的文件名

  8. find / -name jdk。在linux下查找某个文件的所处的位置,/表示查看的位置为全部目录(如果不写要查找所处目录,会在当前文件夹下查找),jdk 表示待查找的文件或文件夹名称。

  9. script记录当前会话的所有命令到文件中,exit结束记录,vi typescript 打开记录的命令的文件。http://blog.jobbole.com/70563/

  10. cat file | grep string 用这个可以把file中包含string的都打印出来,其他的后面继续加命令,保存的话直接重定向到一个文件里就好了.

  11. grep -n string file 可以找出文本文件中字符串所在行号 NUM

  12. head/tail -n NUM 可以打印出前/后多少行 使用tail时要注意用总行数 - NUM
    https://bbs.csdn.net/topics/390817157

  13. netstat -anp|grep port 查看端口占用情况,port表示端口,例如netstat -anp|grep 80 查看80端口被那个应用占用。netstat -nat |grep port 可以查看本机上 tcp 链接的情况,查看有哪些ip 链接了本机等。 查看linux中某个端口(port)是否被占用

  14. fuser -v -n tcp 8080 查看被占用端口的进程,8080是要查看的端口,然后可以结合kill命令停止对某端口的占用. fuser -m /data 查看使用了目录/data 的pid,然后可以再根据ps -ef | grep pid 查看对应的使用的进程。
    https://blog.csdn.net/zhu_xun/article/details/16823577

  15. :w !sudo tee % vim强制保存可读文件 。参考:http://kuanghy.github.io/2015/12/30/sudo-vim

  16. lsof -p 3107 lsof查看与文件有关的信息,lsof -p 进程号查看某进程号打开了那些文件。 lsof /data1 查看打开了目录/data1的进程, 如果要查询引用的还是最好使用fuser -m /data1查找,这个更全 参考: https://blog.csdn.net/blade2001/article/details/4275310

  17. sudo rz -be 使用SecureCRT的时候,上传大文件到linux,注意权限问题。参考:https://blog.csdn.net/wangzhaotongalex/article/details/50827529sz 【filename】下载文件,参考:https://blog.csdn.net/lioncode/article/details/7921525

  18. netstat -ntlp 查看本机所有占用tcp端口的情况。参考:https://blog.csdn.net/ws379374000/article/details/74218530

  19. python -m SimpleHTTPServer 8000 在当前目录起一个Http服务器 ,主要方便自己下载文件.https://blog.csdn.net/mrbcy/article/details/72630201

  20. du -h --max-depth=1 查看某个文件夹的大小,默认是当前文件夹。参考:https://blog.csdn.net/ouyang_peng/article/details/10414499

  21. stat filetime.txt 查看某个文件的读取,修改,创建时间。参考:https://blog.csdn.net/rocky2com/article/details/5644096

  22. tcpdump -i eth0 src port 80 and dst port 6100 and dst host 10.1.1.1 在网口eth0上抓取源端口为80且目的端口为6100,或者目标host为10.1.1.1 的数据包 参考:Linux命令–tcpdump详解

    # 监听目标端口为8518,所有网卡,的 post 请求 的 tcp 链接的 ip 和请求内容
    tcpdump  -i any -s 0 -A 'tcp dst port 8518 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
    
    # 查询 http 响应头 及数据 第一种 -A 展示形式好看些,-X 展示形式不太好看
    tcpdump  -i any -A -s 0 'tcp port 8518 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    tcpdump  -i any  -X -s 0 'tcp port 8518 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    # 筛选出,访问了本机的记录,和查询出请求参数的包含 "read"的内容
     tcpdump  -i any -A -s 0 'tcp port 8521 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | grep -E "read|> [0-9\.]+8521"
    # 统计访问 8518 端口的ip,这个会过滤不同的ip,如果要连续不断的查看访问的ip,去掉结尾的  unless $conn{$ip}++ 即可
    tcpdump -i any -Nnn port 8518 2>/dev/null | perl -alne 'BEGIN{$| = 1};$ip = $1 if $F[2] =~ /([\d.]+)\.\d+/; print $ip unless $conn{$ip}++;'
    # 统计访问某些端口信息
    tcpdump port  \(80 or 81\) 
    # 统计访问了目标端口的为4010的端口
    tcpdump  -i any  -X -s 0 'tcp port 4010 and dst port 4010'
    # tcpdump打印出发送的sql 内容(指定 ip 为:10.0.1.1 端口为: 3306 )
    tcpdump -i any -s 0 -l -w - dst port 3306 and host 10.0.1.1 | strings
    
    

    参考:
    使用tcpdump查看HTTP请求响应
    tcpdump提取源IP

  23. 封/解封 某个 ip 的访问

    # 封ip
    sudo iptables -I INPUT -s 10.0.0.1 -j DROP
    # 解封ip
    sudo iptables -D INPUT -s 10.0.0.1 -j DROP
    
  24. ss -tnlp | grep "java" 查询某个进程占用的端口,当前表示查询 Java 进程占用的端口。ss -anuto | grep 8080 查看端口的链接情况,例如tcp长连接的时间等,参考:每天一个linux命令(57):ss命令

  25. find /nacos/bin/logs -mtime +10 -name '*.log' -exec rm -rf {} \; 删除 /nacos/bin/logs 下面名字为 .log 结尾并且修改时间为10天前的日志文件

  26. ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head 查询内存占用前10的进程

  27. ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 查询cpu占用前10的进程

  28. diff -rq /data/dir1 /data/dir2比较两个的目录有哪些文件不同,如果要列出具体哪些不同 去掉 q参数即可

  29. for i in $(seq 1 1000000); do curl -sL -w "\nhttp_code:%{http_code},time_namelookup:%{time_namelookup},time_connect:%{time_connect},time_starttransfer:%{time_starttransfer},time_total:%{time_total},speed_download:%{speed_download}\n" http://www.baidu.com;done 连续curl请求 www.baidu.com 1000000次统计耗时; 如果要不输入响应结果,curl -o /dev/null 加上这个参数 ,指定不输出

  30. tail -n 2000 test.log | awk '{count[$2","$4","$7]++;} END {for(i in count) {print count[i]"\t"i}} ' | sort -nr -k1 取test.log 日志后2000行,分组统计 空格分隔 的第2,4,7 列 并输出次数,按照出现次数的逆序排序

  31. sudo grep -r "*" /var/spool/cron/crontabs /etc/crontab 查到所有用户的crontab(定时)任务 (这里包含/etc/crontab 中的任务)

  32. sudo apt-get install redis-tools -y && redis-cli --latency-history -h 127.0.0.1 -p 3306 安装redis-cli 工具,并查询redis ping 的耗时

  33. time redis-cli -h 127.0.0.1 -p 3306 -r 1 -i 0 get key_name > redis-get.log 查看redis get 某个key 一次 耗费的时间

  34. sudo grep hello -R --include='*.php' ./ 递归查找当前目录下所有 以 php 结尾并且包含 hello 的 文件

  35. ss -ap | grep 10.0.0.1 查看链接了某个机器ip的链接信息,其中链接信息中包含了进程id,然后根据ps -ef | grep pid ,pid为对应进程id,则可以查询是哪个进程链接了哪些ip了

  36. redis-cli -h 127.0.0.1 -p 3306 'MONITOR' | grep get 监控redis 发送的请求内容,例如这样可以监控redis发送的get请求内容

  37. sudo ip addr del 10.0.0.1 dev eth0 删除linux上的ip,一般是协助虚拟ip

  38. some_command 2>&1 | tee output.txt 启动程序的时候将控制台的输出复制一份到指定文件中。 参考:Shell中将程序控制台输出复制到文件

  39. nc -ul 1080 启动的1080 udp端口 ,连接 nc -u x.x.x.x 1080某个机器的1080 udp ,并在控制台输入,则可以在启动了的那个机器上的看到接收的信息。 参考:怎样检测TCP/UDP端口的连通性 【netcat udp端口检查】

  40. /bin/cp -rfL /data/source_test.txt /data/target_text.txt 复制某个文件/data/source_test.txt 到另外一个文件/data/target_text.txt 中,-L表示如果是源文件是软链接,则选择实际文件去复制,-r 表示递归覆盖复制,-f 表示不用再次确认,强制复制,

  41. sudo ps hH p ${进程pid} | wc -l 统计某个线程

  42. wget -r -np -nH -R index.html http://url/including/files/you/want/to/download/ wget 下载一个目录下的所有文件 参考:如何使用 wget 下载一个目录下的所有文件

  43. ss -antuo | grep 80 获取链接了端口80的链接信息,会包含长链接时长和是否Keep-Alive 等信息

  44. echo '* * * * * root rsync -av --progress /data/test/source-path/ /data/test/target-path/ ;' >> /etc/crontab 每分钟同步source-path下的所有文件到target-path下
    图解:

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值