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 {} ;"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统