在信息技术日新月异的今天,Linux以其开源、稳定、高效的特性,逐渐成为了众多专业人士的首选操作系统。然而,关于Linux知识的学习,却常常陷入一个误区------许多人认为,掌握Linux就是死记硬背各种命令和参数。这种观念,不仅忽略了Linux学习的本质,也阻碍了Linux知识的有效应用。事实上,**Linux知识不是靠背,而是要在某应用场景下懂得去用。**不信大家可以一起探讨下吧!
在实际应用中,Linux知识的运用远比单纯的记忆更为重要。
1、比如大家背得ls命令是用来列出文件或者目录,但是平时却很少有人结合-h和-S参数来,更便于人类识别,并且将所列出文件从大到小排序呈现。
[root@haodaolinux01 ~]# ls -lhS总用量 228M-rw-r--r--. 1 root root 228M 3月 9 03:17 haodaolinux.tar-rw-r--r--. 1 root root 73K 4月 1 2002 cmatrix-1.2a.tar.gz-rwxr-xr-x. 1 root root 4.1K 4月 19 04:05 show_basy.shdrwxrwxrwx. 2 500 500 4.0K 9月 5 2022 cmatrix-1.2a-rw-------. 1 root root 1.6K 11月 5 2021 anaconda-ks.cfg-rwxr-xr-x. 1 root root 81 9月 8 2022 test.sh-rw-r--r--. 1 root root 7 3月 8 23:20 haodao.txt-rw-r--r--. 1 root root 0 9月 8 2022 =-rwxr-xr-x. 1 root root 0 2月 24 2022 test[root@haodaolinux01 ~]#
2、比如大家背得通过ps命令来查看进程,但是却很少有人知道以下这些更适用运维场景的命令。
(1)ps命令结合相关参数及管道符,使得进程按照内存从大到小排列。
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
(2)ps命令查看的按 CPU 利用率从大到小排列的 进程 。
ps -e -o "%C : %p : %z : %a"|sort -nr
(3)ps 查找当前系统内存使用量较高的进程(前20个);
ps -aux | sort -rnk 4 | head -20
(4)ps查**** 找当前系统CPU使用量较高的进程(前20个);
ps -aux | sort -rnk 3 | head -20
3、大家都说Linux下一切皆文件,查找某个文件时犹如大海捞针,显得十分困难。但是却忽略了find命令的这些高效用法,利用好这些命令,你查找文件时,会显得一切都是手到擒来!
(1)查找当前目录下名字为haodao.py的文件;
find . -name haodao.py
(2)查找当前目录下名字以.py结尾的文件;
find . -name "*.py"
(3)查找当前目录下名字以.py结尾的文件,并且指定为文件类型搜索;
find . -type f -name "*.py"
(4)查找当前目录下名字包含haodao的目录;
find . -type d -name "haodao*"
(5)查找当前目录下文件权限为755的对应文件;
find . -type f -perm 755
(6)查找当前目录下不具有755权限的所有文件;
find . -type f ! -perm 755
(7)查找当前目录下具有777权限的所有文件,并且将这些权限全部改为755;
find . -type f -perm 777 -exec chmod 755 {} \;
(8)查找当前目录下文件大小为100MB~1GB的所有文件;
find . -type f -size +100M -size -1G
(9)查找当前目录下以.py结尾的文件,并且删除;
find . -name "*.py" -exec rm -rf {} \;
或
find . -name "*.py" | xargs rm -rf {};
或
rm -rf $(find . -name "*.py")
以上3种快速删除指定类别文件方法,哪一种更香更好用呢?
(10)查找当前目录下30天前修改过的所有文件;
find . -mtime 30
(11)查找当前目录下30天前访问过的所有文件;
find . -atime 30
(12)查找当前目录下过去1个小时内修改过的所有文件;
find . -mmin -60
(13)查找当前目录下过去1个小时内修改过的所有文件;
find . -amin -60
(14)查找当前目录下修改超过10天,但修改不到30天的所有文件;
find . -mtime +10 -mtime -30
(15)查找当前目录下7天前创建的,并且后缀名是以.py结尾的文件,并且进行删除;
find . -mtime +7 -name "*.py" | xargs rm -rf {};
(16)查找当前目录大于1000M的文件,并将该文件移动到/root/home目录下;
find . -size +1000M -exec mv {} /root/home ;
(17)查找当前目录下创建于30天前,大小大于1000M,以.py结尾的文件,并且进行删除;
find . -name "*.py" --mtime +30 --type f --size +1000M |xargs rm --rf {};
4、大家印象中只知道cat命令可以查看文件内容,但是却很少知道cat命令还能这么用的。
(1)查看有几个逻辑cpu, 包括cpu型号;
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
(2)查看有几颗cpu,每颗分别是几核;
cat /proc/cpuinfo | grep physical | uniq -c
5、当需要大文件进行某个场景测试时,好多首先想到的就是把windows上拷贝一个大文件到Linux系统,却不知道通过dd命令,只需简单命令即可实现本地创建大文件。
(1)借助dd命令生成大文件。
dd if=/dev/zero of=/root/haodaolinux/test.txt bs=1M count=1024
上述命令,在/root/haodaolinux目录下生成一个文件名为test.txt 大小为 1G 的文件。
如果大家还觉得dd命令玩得不过瘾,可以看看以下这篇针对dd命令的详解
6、大家都知道通过vi等编辑工具,可以编辑文件中任何内容。但是却不懂利用sed命令可以快速编辑所需的特定内容。
(1)如何通过sed命令将文件test.py中的haodao全部替换成HAODAO;
sed -i "s/haodao/HAODAO/g" test.py
(2)替换haodao.py文件中的目录;
sed -i "s:/etc/dhcp:/home:g" haodao.py
即表示将haodao.py文件中的/etc/dhcp目录替换成/home目录。
如果大家还想了解sed相关高效命令,可以前往以下这篇针对sed命令详解的文章看看~
7、大家都知道tcpdump命令是用来抓包的,但是却很少有人这样高效抓包分析。
(1)针对网口ens33抓取不限制大小的报文,保存为文件haodao.cap;
tcpdump -i ens33 -s 0 -w haodao.cap
(2)针对网口ens33进行抓包,过滤出 icmp 报文并且源 IP 地址是 192.168.20.231的相关报文;
tcpdump icmp and src 192.168.20.231 -i ens33 -n
(3) 针对网口ens33进行抓包,过滤出源 IP 地址是 192.168.20.231的相关报文;
tcpdump src host 192.168.20.231 -i ens33 -n -c 5
(4)针对网口ens33进行抓包,过滤出目的 IP 地址是 192.168.20.231的相关报文;
tcpdump dst host 192.168.20.231 -i ens33 -n -c 5
(5)针对网口ens33进行抓包,过滤出端口号是 8080 的相关报文;
tcpdump port 8080 -i ens33 -n -c 5
(6)针对网口ens33进行抓包,过滤出 80端口到443端口 的相关报文;
tcpdump portrange 80-433 -i ens33 -n -c 8
如果真心想研究tcpdump相关高效抓包命令,可以看看这篇针对tcpdump工具使用的详解~
搞IT运维,不仅要懂Wireshark抓包,还要会Tcpdump抓包
8、好多小伙伴都知道Nginx服务器,但是却很少有人能够讲得明白关于它的具体使用场景,如果感兴趣,可以移步去看看这篇超过2万字的Ngnix文章,通过实验带你了解nginx7大使用场景,根本不用背就可以掌握。
9、好多小伙伴学习Linux时,实验环境下把防火墙相关服务一关就顺利进行,但是实际运维工作环境中,防火墙使用方面相关的知识还是很重要的,所以掌握Linux下iptables和firewalld相关操作技巧是十分必要的,如果你想快速掌握,可以挪步看看以下两篇关于防火墙知识的详解。
10、好多运维或测试小伙伴,都了解Jenkins如何牛逼,却很少能够自己静下心来做一遍实验,跑通代码自动打包发布编译的整个流水线操作。如果你真想去学习,可以看看这篇称为全网最强且手把手教的教程了!
Centos7下搭建Jenkins+GitLab+Maven 实现代码自动打包编译发布
11、其实Linux下有好多工具可以供我们使用解决很多问题,浩道真心推荐以下这些工具,大家可以好好去学习使用,你会发现他们是真的香!
12、大家都知道Linux运维中shell脚本十分重要,通过shell脚本,可以减少很多人工不必要的且重复繁杂的工作量,然而想要提升shell编程能力,光靠背是不可能会的,靠的是平时多敲敲代码,积累编码代码能力,这个确实没有什么好说的。这里推荐大家学习以下全网最经典的几百条shell脚本,学习请移步下篇。
【建议收藏】249个开箱即用的Shell脚本,拿好了(附PDF)
13、随着各个业务量增大,集群环境下相关运维工作也是大家平时经常接触的,因此搞懂高可用相关知识点就显得十分重要了,这里推荐大家学习一波Keepalived+MySQL的高可用配置。
14、业务量大的平台,监控是绕不开的一个运维话题,做好监控,一切运维都会显得轻松,就看你有没有兴趣将监控体系搞好了,监控做得好,日常吃鸡真不是梦,这里强烈推荐的监控系统Prometheus,大家可以参考学习一番。
【全网最详细】40个步骤安装部署Prometheus监控系统
15、最后再说关于k8s相关的学习,当下也是一个非常热的知识体系,这个靠背的话只能永远停留在理论阶段,最直接最有效就是要在实验中去使用去排错去总结。
通过以上列举一些知识点,真的发现光靠死记硬背是学不来的,都是靠在实际工作中去摸索去积累得出的经验。当然,每个人学习方法不一样,但是经验应该都是通用的。
学习Linux,首先要理解其背后的设计理念与哲学。Linux不仅仅是一个操作系统,更是一种开放、协作的精神体现。它鼓励用户根据自己的需求去定制和优化系统,而非被固定的操作模式所束缚。因此,学习Linux,更应该是一种思维方式的转变,而非简单的记忆过程。
在实际应用中,Linux知识的运用远比单纯的记忆更为重要。例如,在系统维护中,我们需要根据具体的硬件配置和软件环境,灵活选择适当的命令和工具。在网络安全领域,Linux提供了丰富的防火墙和入侵检测工具,但如何配置和使用这些工具,则依赖于我们对Linux安全机制的深入理解。此外,在软件开发、云计算等领域,Linux都发挥着不可替代的作用。这些领域的应用,都需要我们结合具体场景,灵活运用Linux知识。
强调Linux知识的实践应用,并不意味着我们可以忽视基础知识的学习。相反,扎实的基础是有效应用的前提。我们需要掌握Linux的基本命令、文件系统结构、网络配置等基础知识,但这些知识的掌握,应该建立在理解其原理和应用场景的基础上。只有这样,我们才能在遇到实际问题时,迅速找到解决方案,而不是死记硬背一堆无用的命令。
此外,随着技术的不断发展,Linux也在不断更新和演进。新的功能、新的工具不断涌现,这就要求我们保持持续学习的态度,不断跟进Linux的最新发展。这种学习,不再是简单的记忆,而是一种对新技术、新应用的探索和实践。