01.Linux-常用命令知识点总结
2019-08-13 本文已影响0人
花神子
01 使用两种命令创建一个文件?
touch filename 建立一个空文件 [touch filename1 filename2 filename3]
cat > filename 建立一文件 然后把接下来的键盘输入写入文件,直到按Ctrl+D为止
vi filename
2. · 硬链接和软链接的区别?
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index);在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
硬连接
- 硬链接就是同一个文件使用了多个别名(他们有共同的 inode -索引节点号(Inode Index))。
- 硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。
- 只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
- 硬链接不能对目录进行创建,只可对文件创建。
硬链接可由命令 link 或 ln 创建,如:
link oldfile newfile
ln oldfile newfile
软链接(也叫符号链接)
- 与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。
- 软链接就是一个普通文件,只是数据块内容有点特殊。
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
软链接可对文件或目录创建。加-s选项表示创建的是软链接。
ln -s old. file soft.link
ln -s old. dir soft.link. dir
3. 怎么看一个 Java 线程的资源耗用?
1 top -p $pid -H 加上-H这个参数后,会列出有哪些线程。这样就可以看到哪个线程id最消耗系统资源了。
看到的线程id是10进制的数字。
2 jstack $pid 可以打印出制定java进程的stack状况。**./jstack 进程id > xxx.out**。
3 将第1步top命令看到的线程id转为16进制显示,就可以在jstack的结果xxx.out文件里面匹配,就能找到具体是那行代码导致的CPU问题.
**一下是10进制转16进制的sh,并进行匹配。
#!/bin/sh
file=$1
nid=`python -c "print hex($2)" `
grep -i $nid $file
4. Load 过高的可能性有哪些?
top命令中显示的load average即为最近1分钟、5分钟和15分钟的系统平均负载。
情况1:CPU高、Load高
1. 首先排查哪些进程cpu占用率高。 通过命令 ps ux
2. 通过第一步看到某个JAVA进程占有资源率较高,查看对应java进程的每个线程的CPU占用率。通过命令:ps -Lp 15047
3. 追踪线程内部,查看load过高原因。通过命令:jstack 15047
4. 其他经验:cpu load的飙升,一方面可能和full gc的次数增大有关,一方面可能和死循环有关系
情况2: CPU低、Load高
1. 通过top命令查看CPU等待IO时间,即%wa;
2. 通过iostat -d -x -m 1 10查看磁盘IO情况;
3. 通过sar -n DEV 1 10查看网络IO情况;
4. 通过如下命令查找占用IO的程序;
ps -e -L h o state,cmd | awk '{if($1=="R"||$1=="D"){print $0}}' | sort | uniq -c | sort -k 1nr
5. /etc/hosts 文件什么做用?
配置ip地址和其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名。不同的linux版本,这个配置文件也可能不同。比如Debian的对应文件是/etc/hostname。
6. 如何快速的将一个文本中所有“abc”替换为“xyz”?
cat file | tr "abc" "xyz" > new_file
7. 如何在 log 文件中搜索找出 error 的日志?
grep "at com.zw." error.log > business.log
8. 发现磁盘空间不够,如何快速找出占用空间最大的文件?
//find命令找到大于指定大小的文件:
find / -type f -size +10G
//占用磁盘空间最大的前10个文件或文件夹
du -a /var | sort -n -r | head -n 10
du -hsx * | sort -n -r | head -10
说明:
du : 显示每个文件和目录的磁盘使用空间~~~文件的大小。
-a #显示目录中文件的大小 单位 KB 。
-b #显示目录中文件的大小,以字节byte为单位。
-c #显示目录中文件的大小,同时也显示总和;单位KB。
-k 、 -m 、#显示目录中文件的大小,-k 单位KB,-m 单位MB.
-s #仅显示目录的总值,单位KB。
-h #以K M G为单位显示,提高可读性~~~(最常用的一个~也可能只用这一个就满足需求了)
# sort命令
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息
# head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
9.shell 参数
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前[进程ID](https://www.baidu.com/s?wd=%E8%BF%9B%E7%A8%8BID&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的[进程ID](https://www.baidu.com/s?wd=%E8%BF%9B%E7%A8%8BID&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用