这篇博客主要介绍一下linux系统下的常用命令,我用的是centos7版本的linux系统,其他版本的linux可能有所不同。还有就是linux下文件目录分大小写,主要大小写。
-
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 -
curl ifconfig.me
查看本机外网ip地址。(直接if)。参考:https://blog.csdn.net/lakeheart879/article/details/78247894 -
./startup.sh
和./shutdown.sh
启动和关闭tomcat服务器,该命令要改tomcat/bin目录下运行。 -
tail -f ../logs/catalina.out
启动tomcat服务后,在命令行实时观察tomcat运行情况。该命令需要在tomcat/bin运行。(ctrl + c为退出) -
ps -ef|grep tomcat
查看tomcat服务器是否还在运行中,如果在运行能查看其pid。 -
kill -9 13546
停止某个服务的进程,13546为进程号(一般配合ps命令使用),-9表示无条件终止线程。参考:https://www.cnblogs.com/liuhouhou/p/5400540.html -
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 待压缩的文件名 -
find / -name jdk
。在linux下查找某个文件的所处的位置,/
表示查看的位置为全部目录(如果不写要查找所处目录,会在当前文件夹下查找),jdk
表示待查找的文件或文件夹名称。 -
script
记录当前会话的所有命令到文件中,exit
结束记录,vi typescript
打开记录的命令的文件。http://blog.jobbole.com/70563/ -
cat file | grep string
用这个可以把file中包含string的都打印出来,其他的后面继续加命令,保存的话直接重定向到一个文件里就好了. -
grep -n string file
可以找出文本文件中字符串所在行号 NUM -
head/tail -n NUM
可以打印出前/后多少行 使用tail时要注意用总行数 - NUM
https://bbs.csdn.net/topics/390817157 -
netstat -anp|grep port
查看端口占用情况,port
表示端口,例如netstat -anp|grep 80
查看80端口被那个应用占用。netstat -nat |grep port
可以查看本机上 tcp 链接的情况,查看有哪些ip 链接了本机等。 查看linux中某个端口(port)是否被占用 -
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 -
:w !sudo tee %
vim强制保存可读文件 。参考:http://kuanghy.github.io/2015/12/30/sudo-vim -
lsof -p 3107
lsof查看与文件有关的信息,lsof -p 进程号
查看某进程号打开了那些文件。lsof /data1
查看打开了目录/data1的进程, 如果要查询引用的还是最好使用fuser -m /data1查找,这个更全 参考: https://blog.csdn.net/blade2001/article/details/4275310 -
sudo rz -be
使用SecureCRT的时候,上传大文件到linux,注意权限问题。参考:https://blog.csdn.net/wangzhaotongalex/article/details/50827529 。sz 【filename】
下载文件,参考:https://blog.csdn.net/lioncode/article/details/7921525 -
netstat -ntlp
查看本机所有占用tcp端口的情况。参考:https://blog.csdn.net/ws379374000/article/details/74218530 。 -
python -m SimpleHTTPServer 8000
在当前目录起一个Http服务器 ,主要方便自己下载文件.https://blog.csdn.net/mrbcy/article/details/72630201 -
du -h --max-depth=1
查看某个文件夹的大小,默认是当前文件夹。参考:https://blog.csdn.net/ouyang_peng/article/details/10414499 -
stat filetime.txt
查看某个文件的读取,修改,创建时间。参考:https://blog.csdn.net/rocky2com/article/details/5644096 -
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
-
封/解封 某个 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
-
ss -tnlp | grep "java"
查询某个进程占用的端口,当前表示查询 Java 进程占用的端口。ss -anuto | grep 8080
查看端口的链接情况,例如tcp长连接的时间等,参考:每天一个linux命令(57):ss命令 -
find /nacos/bin/logs -mtime +10 -name '*.log' -exec rm -rf {} \;
删除/nacos/bin/logs
下面名字为 .log 结尾并且修改时间为10天前的日志文件 -
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
查询内存占用前10的进程 -
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
查询cpu占用前10的进程 -
diff -rq /data/dir1 /data/dir2
比较两个的目录有哪些文件不同,如果要列出具体哪些不同 去掉q
参数即可 -
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
加上这个参数 ,指定不输出 -
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 列 并输出次数,按照出现次数的逆序排序 -
sudo grep -r "*" /var/spool/cron/crontabs /etc/crontab
查到所有用户的crontab(定时)任务 (这里包含/etc/crontab 中的任务) -
sudo apt-get install redis-tools -y && redis-cli --latency-history -h 127.0.0.1 -p 3306
安装redis-cli 工具,并查询redis ping 的耗时 -
time redis-cli -h 127.0.0.1 -p 3306 -r 1 -i 0 get key_name > redis-get.log
查看redis get 某个key 一次 耗费的时间 -
sudo grep hello -R --include='*.php' ./
递归查找当前目录下所有 以 php 结尾并且包含 hello 的 文件 -
ss -ap | grep 10.0.0.1
查看链接了某个机器ip的链接信息,其中链接信息中包含了进程id,然后根据ps -ef | grep pid
,pid为对应进程id,则可以查询是哪个进程链接了哪些ip了 -
redis-cli -h 127.0.0.1 -p 3306 'MONITOR' | grep get
监控redis 发送的请求内容,例如这样可以监控redis发送的get请求内容 -
sudo ip addr del 10.0.0.1 dev eth0
删除linux上的ip,一般是协助虚拟ip -
some_command 2>&1 | tee output.txt
启动程序的时候将控制台的输出复制一份到指定文件中。 参考:Shell中将程序控制台输出复制到文件 -
nc -ul 1080
启动的1080 udp端口 ,连接nc -u x.x.x.x 1080
某个机器的1080 udp ,并在控制台输入,则可以在启动了的那个机器上的看到接收的信息。 参考:怎样检测TCP/UDP端口的连通性 【netcat udp端口检查】 -
/bin/cp -rfL /data/source_test.txt /data/target_text.txt
复制某个文件/data/source_test.txt 到另外一个文件/data/target_text.txt 中,-L
表示如果是源文件是软链接,则选择实际文件去复制,-r
表示递归覆盖复制,-f
表示不用再次确认,强制复制, -
sudo ps hH p ${进程pid} | wc -l
统计某个线程 -
wget -r -np -nH -R index.html http://url/including/files/you/want/to/download/
wget 下载一个目录下的所有文件 参考:如何使用 wget 下载一个目录下的所有文件
-
ss -antuo | grep 80
获取链接了端口80的链接信息,会包含长链接时长和是否Keep-Alive 等信息 -
echo '* * * * * root rsync -av --progress /data/test/source-path/ /data/test/target-path/ ;' >> /etc/crontab
每分钟同步source-path下的所有文件到target-path下
图解: