linux常用命令
-
ls :显示当前目录下所有的文件
-
ls -a :列出所有文件,包括以 "." 开头的隐含文件。
-
ll :显示当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息,等于是 ls -l 命令
-
du :用于显示目录或文件的大小。一般用来查看文件的大小,比如说看一些dump的日志的文件的大小
-
du -sh * :查询当前目录下所有的文件的大小以K,M,G为单位,提高信息的可读性。
- 场景:查看服务器中一个文件(比如日志)大小,在删除磁盘文件的时候能有一个对比,那个文件占用磁盘最大
-
cat :输出当前文件内容。
- 场景:一般就是用来查看当前文件的内容,比如说要看下服务器的启动service.sh脚本文件中的内容(cat service.sh)
- 扩展:
cat -n fileName
输出文件内容并且在前面加上行号。 - 扩展:
cat -b fileName
输出文件内容并且在前面加上行号,与上面的不同是会过滤空白行。 - 扩展:
cat -n textfile1 > textfile2
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里。 -
more :跟cat差不多,但是有一个优点就是展示出来的是按照页的形式出来,可以接着按
space空格键
向下翻页 - 扩展:
more -num
一次显示行数。 - 扩展:
more +num
从第num行开始显示。 -
chmod :修改当前用户对文件的权限
- r=4,w=2,x=1,所以想要rxw 读写和可执行权限,那就是
4+2+1=7
,而一个位数表示一个角色,chmod a=rwx txt1.txt
就可以理解为就是chmod 777 txt1.txt
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限
- r 表示可读取,w 表示可写入,x 表示可执行
- 场景:chmod这个命令实用比较广泛,但是说白了就是一点更改文件权限,但是权限这个东西怎么加,是加所有用户还是其他?是加读写还是去除读写?这个就需要理解 u、g、o、a、+、-、=、r、w、x等含义
- 扩展:
chmod ugo+r txt1.txt
或者chmod a+r txt1.txt
设置txt1.txt 对所有的用户角色可读 - 扩展:
chmod 777 file
,chmod也可以用数字来代表权限问题, -
diff :用于比较文件的差异。
- 扩展:
diff log1.log log2.log -y -W 50
并排输出两个文件的不同。 -
grep :用于查找文件里符合条件的字符串,这个是最常见的也是日常查询文件最常用的。
-
$grep 2021-10-27T20:17:20.519+0800 gc.log | wc -l
1 -
$grep 2021-10-27T21 gc.log | grep 25:33
2021-10-27T21:25:33.413+0800: 797616.955: [GC (Allocation Failure) 2021-10-27T21:25:33.414+0800: 797616.955: [ParNew: 848318K->18793K(943744K), 0.0263809 secs] 1283786K->454263K(1992320K), 0.0270603 secs] [Times: user=0.09 sys=0.00, real=0.03 secs] -
扩展:
grep "aaa" log.log -A 10
,除了显示符合搜索条件的那一列之外,并显示该行之后的10行内容。wc -
扩展:
grep "aaa" log.log -B 10
,除了显示符合搜索条件的那一列之外,并显示该行之前的10行内容。 -
扩展:
grep "aaa" log.log | grep "bb" -A 10
,同时搜索满足条件以上两个条件的结果,并向下在打印剩下的10行。 -
扩展:
grep "aaa" log.log | wc -l
,统计满足条件的的次数 -
scp : 命令用于 Linux 之间复制文件和目录。可以用来作为下载文件到本地的一种方式。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
- 打开本地系统服务 文件 远程登入 允许访问 所有用户
- 输入:scp heap.hprof aobing@172.19.36.87:/Users/aobing/Downloads
- 输入本机电脑登入密码即可,就能显示当前在下载的进度了
- 扩展:举一个用法的例子,假设用我自己当前电脑作为演示,怎么去把我们跳板机中的dump文件下载到我们本地,以便于我们自己来分析堆栈呢?
- 这个是比较常用的方法,可以有其他的用法,就因个人而已吧
-
mkdir :用于创建目录。这个是最简单的了。
- 扩展:
mkdir aaaa
创建一个aaaa文件 -
kill :删除执行中的程序或工作,这个需要慎重使用,我们可以一般在我们的电脑卡死,或者我们本地启动tomcat端口被占用了,但是我们又没有找到,可以ps查一下进程ID,然后kill一下
- 扩展:
kill 14269
,杀死14269这个进程 - 扩展:
kill -KILL 14269
,强制杀死14269这个进程 - 扩展:
kill -9 14269
,彻底杀死14269这个进程 -
rm :用于删除一个文件或者目录。在使用这个命令之前需要注意,不要随便执行这个命令,
文件一旦通过rm命令删除,则无法恢复
所以可能有时候不小心删除某些文件,第二天新闻就出来“杭州某公司丙某因为执行时rm -rf
命令,导致服务器或者数据库 数据丢失 造成严重损失” -
$rm gc.log.20210506151038
rm: remove regular file ‘gc.log.20210506151038’? y -
扩展:
rm gc.log.20210506151038
,删除 gc.log.20210506151038 文件?会跳出一个确定提示,输入 y,则是删除 -
扩展:
rm -f gc.log.20210506151038
,不会产生确认删除提示,直接删除文件 -
扩展:
rm -rf gc.log.20210506151038
,不会产生确认删除提示,直接删除文件,并且会把当前目录下的所有文件一并删除,非常的暴力。 -
gzip :用于压缩文件。文件经它压缩过后,其名称后面会多出".gz"的扩展名。当服务器某个文件过大时,你下载非常的慢,所以考虑一下压缩之后再下载。
- 扩展:
gzip gc.log.20210506151038
,压缩一下文件gc.log.20210506151038,压缩之后会生成一个文件gc.log.20210506151038.gz,这个比较简单,压缩完可以使用上面的 ll 或者 du 等相关命令再查看下文件的大小。 - 扩展:
gzip -<压缩效率> gc.log.20210506151038
, 压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高,控制压缩比例。 -
ps :(全拼:process status)用于显示当前进程的状态,主要是用来查询当前进程的状态,比如说需要查询一下当前tomcat的相关信息,或者说服务器配置的tomcat的一些启动参数,都是可以看到。
-
$ps -ef | grep tomcat
www 383 304 0 00:02 pts/0 00:00:00 grep --color=auto tomcat
www 5579 1 8 Oct22 ? 10:36:09 /opt/vdian/java/bin/java -Djava.util.logging.config.file=/home/www/item-sell/.server/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -server -Xms5g -Xmx5g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xmn2g -XX:MaxDirectMemorySize=512m -XX:SurvivorRatio=8 -
扩展:
ps -ef | grep 进程关键字
,查询某个关键字的进程,如下所示,能显示很多信息。我这里没有复制全,自己可以进公司的服务试一下,不会有问题的。 -
扩展:
ps -A
,列出所有的进程 -
扩展:
ps -aux
,显示所有包含其他使用者的行程 -
等等还有很多很多,我就举出常用的,一一列举大家不常用也就没有什么意思。
-
pwd :用于显示工作目录,这个命令就很简单了, 没有什么特殊的参数啥的,就是显示当前目录地址。
-
$pwd
/home/www -
扩展:
pwd
,跟简单,后面不需再加什么参数,显示一下目录,方便下我们复制文件的目录地址。 -
source :这个命令一般就是和**点(.)**是一样的效果,就是修改了某个文件不用重启,而可以立马生效
- 扩展:
source fileName
等于. fileName
是一个效果。使改动的文件立即生效 -
tail :用于查看文件的内容。通常比如说我们需要查看正在变动的日志文件,那就可以用这个命令了。
- 扩展:
tail -f filename
,会把 filename 文件里的最尾部的内容显示出来,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 - 扩展:
tail -20f filename
,会把 filename 文件里的最后的20行内容显示出来,并且不断刷新。 - 扩展:
tail -c 20 filename
,显示文件 filename 的最后 20 个字符。 - 扩展:
tail -n +20 filename
,显示文件 filename 的内容,从第 20 行至文件末尾。
tail -f 查看日志
:wq 保存并退出编辑模式
:wq! 保存并退出编辑模式 ,忽略文件的只读属性
ls显示当前目录下的文件,ll 显示当前目录下的详细文件信息
chmod:用于改变指定文件访问的权限
rwx对于文件代表的意思:
r (read):可读取文件的实际内容
w(write):可以编辑、新增或者是修改该文件的内容
x(execute):该文件具有可以被系统执行的权限
chown 改变文件的所有者
chown root int.sh
文件查找:
find [文件路径] -name 查找指定目录下面的制定文件
find /etc -name *init
find /ect -name ?init // ?代表一个字符
find /usr/ect/test -name -exec rm -rf {} \;
locate 【路径】 【文件名】 根据linux中的数据库索引查找文件
touch a.sh 并没有立即写入到数据库索引中
要updatedb以后才会写入
which 查看命令所在的位置
tar -zxvf //解压
tar -zcvf //压缩
source /etc/profile 使环境变量生效