共计 1669 个字符,预计需要花费 5 分钟才能阅读完成。
which
which 用于查找 $PATH
中设置可执行文件,不过有些解压即可用的经常是没有放到 $PATH
中的,如 redis,mongodb 等。
# 查找 java 命令位置
which java
如果没有放到 $PATH
中,我们也可以通过查找它的进程或端口号来找到它,如果你有权限访问的话,像这样
# 查找 zookeeper 的进程编号,如果你有权限查看的话
netstat -tlnp | grep 2181
# 查找进程的启动命令,一般都可以找到启动位置
ps -o 'cmd' --width=10000 -p <pid>
# 有时也可以直接使用 ps 来查看,因为启动命令中,一般会包含你需要相关信息
# 比如常见的查看 tomcat 进程号, 顺便可以查到位置
ps -ef | grep tomcat
type
type 用来查看命令是内建命令还是外部命令,也可以看看可执行命令的路径,或者查看命令是不是别名。bash 会内建一些常用命令比如 cd umask
locate
locate 是一个比较常用的查找工具,在 which 查不到,并且软件没有启动的时候,这时候可以使用 locate 来查找,它就相当于 windows 的 everything,已经提前做好了索引,查询速度很快,但是会有一大堆没有用的文件出来,需要你来筛选。
# 查找 redis 位置
locate redis
# 两个常用的参数
-i 忽略大小写
-r 后面可以接正则表达式来搜索
whereis
和 locate
也是利用 linux 提前建立好的索引来搜索,但我在实际中用得比较少,可能是当初用的时候,每次用这个命令都找不到文件吧,它的使用方法如下
# 查找 mysql 位置, 它会把所有的可能路径列出来
whereis mysql
find
find
在《鸟哥的私房菜》这本书中说是最不常用的命令,但我觉得它应该是我最常用的一个命令了,因为实在是太方便了。
因为 find
没有使用 linux 的索引,是直接搜索磁盘的,一般不会直接搜索根路径;
但实际情况是我们的 web 应用都是放在某一个路径下的,还有日志信息等,而且 java 项目你们知道的一般都会有很深的路径,一层一层 cd 很费事,而且文件并不多的时候使用 find 还是很快速的,下面介绍 find
的常用参数。
下面只列出程序员来说比较常用的,运维需要知道的可能不止这些,大神忽喷。
# find 的命令格式如下
find [PATH] [option] [action]
# 查找 classes 下某个类
find ./classes -type f -name 'XXX.class'
# 经常一些类有内部类,直接查找 .class 可能会漏,可以使用通配符
find ./classes -type f -name 'XXX*'
-type f 只搜索文件,-type d 只搜索目录
-name 搜索指定名称的文件
find 默认是递归搜索
# 查找 /data 目录下 大于 1G 的文件 ,G 要大写,还支持 M ,k
find /data -type f -size +1G
# find 的递归搜索是挺方便,但有时候就不想让它搜那么深,可以设置搜索深度.
find /data -maxdepth 1
# 想排除某个目录的时候,可以使用 -path 来排除一些目录
# 不想看 2018 年的目录,可以这么玩
find /data ! -path '2018*'
# 搜索到的文件我想做一些处理,比如复制到另一个地方
# 把 java 文件复制到我的主目录里面去
find /data -name '*.java' -exec cp {} ~/{} \;
# 删除 classes 下的 java 文件,可能有人误上传了
find ./classes -name '*.java' -exec rm -f {} \;
# 查找今天改过哪些文件, 这个指从当前时间 24 小时内改过的文件
find ./classes -mtime 0
一点小推广
Excel 通用导入导出,支持 Excel 公式
https://blog.csdn.net/sanri1993/article/details/100601578
使用模板代码,从数据库生成代码,及一些项目中经常可以用到的小工具
https://blog.csdn.net/sanri1993/article/details/98664034