Linux命令的实际运用(三)

一、解决基本问题

1 怎么查看当前进程?怎么执行退出?怎么查看当前路径?

答案:查看当前进程: ps;执行退出: exit;查看当前路径: pwd

2 查看指定帮助用什么命令?

man 这个很全 而且有例子; --help 这个告诉你一些常用参数;

3 Linux下命令有哪几种可使用的通配符?分别代表什么含义?

“?”可替代单个字符。

“*” 可替代任意多个字符。

方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]

4 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)

wc 命令 - w 统计字数 - l 统计行数 - c 统计字节数 。

如果想要查找文件的单词数,可以用 wc -w 文件名 来实现。
想要查找文件有多少行,可以用 wc -l 文件名称 来实现。
想要查看文件的字节数可以用 wc -c 文件名称 来实现。

5 获取kernel版本信息的命令是什么?

命令: uname -a
作用: 查看系统内核版本号及系统名称

命令: cat /proc/version
作用: 查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称

6 查找/etc/目录下以.conf结尾的文件

find /etc/ -name  "*.conf"

7 统计/etc/目录下.conf结尾文件的个数

wc(word count)-l 表示统计行数

find /etc/ -name "*.conf" | wc -l

8 查找/etc/目录下大小大于 1M的文件(记得大写)

find /etc/ -size +1M

二、字符串相关问题

1 统计某个字符串abc出现的次数:( 使用[grep])

grep -o abc  filename | wc -l

2 是多个字符串出现次数,可使用:(\ | 连接)

grep -o ‘abc\|abc2' filename|wc -l #直接用\| 链接起来即可
  • -o 或 --only-matching : 只显示匹配PATTERN 部分。

3 统计日志中出现次数最多的前10个ip

利用shell脚本即可

cat test.log | grep -v "^$" | awk -F ' ' '{print $2}' | sort | uniq -c | sort -n -r|awk -F ' ' '{print $2}'|head -n 10

脚本分析:

1.cat *.log将文本内容打印到屏幕
2.grep -v "^$"去除空行
3.使用awk命令可以按照分割符将一行分割为多个列,第一列用$1表示,第二列用$2表示,依次类推
awk -F" " '{print $2} 表示用空格作为分隔符进行分割,打印出第2列

4.sort 进行排序,默认是按照ascii码进行排序的
5.uniq -c 统计相邻的行的重复数量,结果是类似 3 127.13.13.13,前面的数字代码重复的行数

sort|uniq -c统计重复的行数

6.sort -n是按照数值进行由小到大进行排序, -r是表示逆序,-t是指定分割符,-k是执行按照第几列进行排序

sort -nrk 1 -t’ ’

7.使用awk命令可以按照分割符将一行分割为多个列,第一列用$1表示,第二列用$2表示,依次类推
awk -F" " ‘{print $2}’ //表示用空格作为分隔符进行分割,打印出第2列

8.head -n表示取前n个
head -10

https://blog.csdn.net/weixin_43927540/article/details/108075356

4 使用重定向将命令输出保存到文件中

  • > 会将命令输出重定向到文件,它会替换文件中的所有内容。
  • >> 会将命令输出添加到文件现有内容的末尾。

command > file.txt

三、日志查看方法

1、tail

这个是我最常用的一种 查看方式

命令格式: tail[必要参数][选择参数][文件]
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

用法如下:

tail  -n  10   test.log   查询日志尾部最后10行的日志;
tail  -n +10   test.log   查询10行之后的所有日志;
tail  -fn 1000   test.log   循环实时查看最后1000行记录(最常用的)

一般还会配合着grep用,例如 :

 tail -fn 1000 test.log | grep '关键字'

grep 命令用于查找文件里符合条件的字符串

2、head

跟tail是相反的head是看多少行日志

head -n  10  test.log   查询日志文件中的头10行日志;
head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

3、cat

cat 是由第一行到最后一行连续显示在屏幕上

一次显示整个文件 :

 $ cat filename

从键盘创建一个文件 :

$cat > filename

将几个文件合并为一个文件:

$cat file1 file2 > file 只能创建新文件,不能编辑已有文件.

将一个日志文件的内容追加到另外一个 :

$cat -n textfile1 > textfile2

清空一个日志文件:

$cat : >textfile2

注意:> 意思是创建,>>是追加。千万不要弄混了。

cat`其他参数参考`tail

4、sed

这个命令可以查找日志文件特定的一段 , 根据时间的一个范围查询,可以按照行号和时间范围查询

按照行号

sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。

按照时间段

 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p'  test.log

5、常用命令参数

less与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,而且 less 在查看之前不会加载整个文件。

less log2013.log 查看文件
ps -ef | less   ps查看进程信息并通过less分页显示
history | less   查看命令历史使用记录并通过less分页显示
less log2013.log log2014.log   浏览多个文件

常用命令参数:
-b <缓冲区大小> 设置缓冲区的大小
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
h 显示帮助界面
q 退出less 命令

6、查日志配合应用的其他命令

history // 所有的历史记录

history | grep XXX  // 历史记录中包含某些指令的记录

history | more // 分页查看记录

history -c // 清空所有的历史记录

!! 重复执行上一个命令

查询出来记录后选中 : !323

作者:程序员内点事https://cloud.tencent.com/developer/article/1579977

四、常见面试题一

1 建立软链接(快捷方式),以及硬链接的命令。

答案:
软链接: ln -s slink source
硬链接: ln link source

2 文件权限修改: chmod

chmod u +x file 给file的属主 增加 执行权限

chmod 751 file
给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod u=rwx,g=rx,o=x file上例的另一种形式
chmod =r file 为所有用户分配读权限

3 查看文件内容有哪些命令可以使用?

vi 文件名 #编辑方式查看,可修改
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数

4 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

绝对路径: 如/etc/init.d
当前目录和上层目录: ./ ../
主目录: ~/
切换目录: cd

5 怎么使一个命令在后台运行?

一般都是使用 &命令结尾来让程序自动运行。(命令后可以不追加空格)

6 利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?

ps -ef (system v 输出)

ps -aux bsd 格式输出

ps -ef | grep pid

7 哪个命令专门用来查看后台任务?

job -l

8 把后台任务调到前台执行使用什么命令? 把停下的后台任务在后台执行起来用什么命令?

把后台任务调到前台执行 fg

把停下的后台任务在后台执行起来 bg

9 搜索文件用什么命令? 格式是怎么样的?

find <指定目录> <指定条件> <指定动作>

whereis 加参数与文件名

locate 只加文件名

find 直接搜索磁盘,较慢。

find / -name "string*"

10 使用什么命令查看网络是否连通?

netstat

11 du 和 df 的定义,以及区别?

du 显示目录或文件的大小

df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。

12 如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?

使用命令compgen ­-c,可以打印出所有支持的命令列表。

13 怎样一页一页地查看一个大文件的内容呢?

通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个需要.

cat file_name.txt | more

五、常见面试题二

1 显示一个文件的第2000-5000行

命令:
cat file | head -n  5000 | tail -n +2000  # 显示2000行到5000行
解析:

tail -n +2000 表示的是从2000行开始显示

tail -n 2000 表示的是显示文件最后2000行,差别很大,注意灵活使用。

务必注意:head与tail的前后顺序。 如果将tail 放前面,如下命令: cat file | tail -n +2000 | head -n 5000 表示的是 : 从第2000行开始,共显示5000行,也就是2000~6999行!

2 将当前目录下以".log"结尾且修改时间大于90天的10G以上的大文件 删除

命令:
find ./ -name "*.log" -type f -mtime +90 -size +10G -maxdepth 1 -print -exec rm {} \;
解析:
  • -name "*.log" : 按名称查找,如果忽略大小写,则用-iname,注意引号别丢;
  • -type f :文件类型限定为文件,目录是d
  • -mtime +90 :修改时间大于90天。-n指n天以内,+n指n天以前
  • -size +10G :文件size过滤
  • -maxdepth 1 :限制查找最大深度,当前目录是1
  • -print :将找到的文件以相对路径的形式打出来
  • -exec rm {} \ ; 找到的文件将执行删除命令,最后是"空格"+{}+"分号;"都不能省。
  • 补充:
  • 如果是删除文件,用rm -rf ;
  • 如果想要删除前确认,将" -exec rm {} ;"替换成"-ok rm {} ;"

https://cloud.tencent.com/developer/article/1664801

posted @ 2022-03-20 23:55  yu10001  阅读(100)  评论(0编辑  收藏  举报