Linux

01.Linux-常用命令知识点总结

2019-08-13  本文已影响0人  花神子

01 使用两种命令创建一个文件?

touch filename 建立一个空文件 [touch filename1 filename2 filename3]
cat > filename 建立一文件 然后把接下来的键盘输入写入文件,直到按Ctrl+D为止
vi filename

2. · 硬链接和软链接的区别?

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index);在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。

硬连接

  1. 硬链接就是同一个文件使用了多个别名(他们有共同的 inode -索引节点号(Inode Index))。
  2. 硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。
  3. 只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
  4. 硬链接不能对目录进行创建,只可对文件创建。
硬链接可由命令 link 或 ln 创建,如:
link oldfile newfile 
ln oldfile newfile

软链接(也叫符号链接)

  1. 与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。
  2. 软链接就是一个普通文件,只是数据块内容有点特殊。
  3. 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
软链接可对文件或目录创建。加-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命令功能相同
$@ 跟$*类似,但是可以当作数组用

上一篇下一篇

猜你喜欢

热点阅读