Linux 常用命令

大部分命令推荐sudo运行

  1. 端口和PID互查
# 根据端口查询PID
$ lsof -i:8080
# 根据端口查询PID
$ fuser -i 8080/tcp
# 根据PID查占用端口
$ lsof -Pan -p 4978 -i
# 根据PID查占用端口
$ netstat -plnt | grep 4978
  1. 查看已启动的java程序
# ps命令, 常用参数
# ps a   显示当前终端下执行的进程
# ps c   显示进程的真实名称
# ps e   列出程序所使用的环境变量
# ps f   用ASCII字符显示树状结构,表达程序间的相互关系
# ps x   显示所有进程,无论是否运行在终端上
# ps u   显示用户相关的进程或者与用户相关的属性
# ps r   只显示正在运行的进程
$ ps aux | grep java
# openjdk不支持, 需要单独安装(注意java版本)`sudo yum install java-1.8.0-openjdk-devel`
$ jps -l
  1. 文件相关
:'
查看文件夹下的文件, ls命令比较理解, 就这么写了, find命令需要逐个示例
a: 显示隐藏文件(`.`开头的文件)
t: 根据最后修改时间排序
r: 倒序
l: 列表展示
h: 文件大小格式化(如: 1K 234M 2G)
--time-style: 日期显示格式, 我常用iso,另外支持`full-iso,long-iso,locale`
也可以自己写, 如: --time-style=+"%Y-%m-%d %H:%M:%S %P"
'
$ ls -atrlh --time-style=long-iso
# find命令格式: 
# find   path   -option   [   -print ]   [ -exec   -ok   command ]   {}
# 以log结尾的文件(即文件名正则查询, `*`和`?`)
$ find -name *.log
# 空文件/目录
$ find -empty
# 3天内修改过的文件(改成`+`号表示3天前修改的文件)
$ find -ctime -3
# 删除3天前修改的日志文件(-exec/-ok后面跟对文件的命令, 区别是ok会再操作前询问, exec不会)
$ find -name *.log -mtime +3 -ok rm {} \;
# 列出大于1MB的文件
# size 支持的单位: bcwkMG, 分别是: 
# 其中bcw不常用, 自行百度(注意b不是byte), k为KB, M为MB, G为GB
$ find -size +1M -exec ls -l {} \;
# 查找nginx.conf文件位置(走索引比较快, 需要安装mlocate)
$ locate nginx.conf
  1. 查日志常用(文本文件)
# 示例文件为log.log
# 查看最后10行
$ tail log.log
# 查看文件并监听文件内容(会将文件变更内容持续输出到屏幕, Ctrl-C 结束)
$ tail -f log.log
# 查看最后10M文件内容
$ tail -c 1M log.log
# 查看文件, 并忽略前100行
$ tail -n +100 log.log
# 打印2-5行
$ sed -n '2,5p' test.txt 
# 正则, 查到字符串"15:56:39.745"开始, 到第5行结束, 
$ sed -n "/15:56:39.745/,5p" log.log
# 由于awk命令较为复杂, 不做展示
  1. grep 字符过滤, 支持正则
# 查log.log文件中包含abcdef的行, -i表示忽略大小写
$ grep "abcdef" log.log -i
# 查当前目录包含"2021"的文件
$ ls -trlh | grep 2021
  1. 临时启用/取消放行防火墙端口
firewall-cmd --add-port 8082/tcp	
 firewall-cmd --remove-port=****/tcp