为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-
groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
-
语法格式:groupadd [参数]
-
常用参数:
-g 指定新建工作组的id
-r 创建系统工作组,系统工作组的组ID小于500
-K 覆盖配置文件“/ect/login.defs”
-o 允许添加组ID号不唯一的工作组
- 使用-g参数新建linuxcool工作组名,1005是工作组id:
[root@linuxcool ~]# groupadd -g 1005 linuxcool
-使用-r创建系统工作组:
[root@linuxcool ~]# groupadd -r -g 368 linuxcool
-
groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。
-
userdel修改系统账户文件,删除与 GROUP 相关的所有项目。给出的组名必须存在。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
-
语法格式:groupdel [参数] [群组名称]
-
常用参数:
-h 显示帮助信息
-R 在chroot_dir目录中应用更改并使用chroot_dir目录中的配置文件
- 使用groupdel命令删除linuxcool工作组:
[root@linuxcool ~]# groupdel linuxcool
- 查看linuxcool组是否删除成功:
[root@linuxcool ~]# more /etc/group|grep linuxcool
通过查看/etc/group配置文件里面不存在linuxcool组,说明已经被删除了。
-
chmod命令主要用于修改文件或者目录的权限,例如chmod o+w test.txt,赋予test.txt其他人w写权限
-
语法格式: chmod [参数] [文件]
-
常用参数:
-
-R 目录下所有文件
-c 若该文件权限确实已经更改,才显示其更改动作
-f 若该文件权限无法被更改也不显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
- 将档案 file1.txt 设为所有人皆可读取:
[root@linuxcool ~]# chmod a+r file.txt
- 将目前目录下的所有文件与子目录皆设为任何人可读取 :
[root@linuxcool ~]# chmod -R a+r *
- 将 file.txt 设定为只有该文件拥有者可以执行:
[root@linuxcool ~]# chmod u+x file.txt
- chown命令主要用于文件或者文件夹宿主及属组的修改,命令格式例如chown –R root.root /tmp/test.txt,表示修改test.txt文件的用户和组均为root
用法:chown [选项]… [所有者][:[组]] 文件…
或:chown [选项]… --reference=参考文件 文件…
更改每个文件的所有者和/或所属组。
当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。
-f, --silent, --quiet 去除大部份的错误信息
–reference=参考文件 使用参考文件的所属组,而非指定值;
-R, --recursive 递归处理所有的文件及子目录;
-v, --verbose 为处理的所有文件显示诊断信息;
-H 命令行参数是一个通到目录的符号链接,则遍历符号链接;
-L 历每一个遇到的通到目录的符号链接;
-P 历任何符号链接(默认);
–help 显示帮助信息并退出;
–version 显示版本信息并退出。
- 将test.txt文件用户组与用户都改为bin:
[root@linuxcool ~]# ll test.txt.bz2
-rw-r–r-- 1 root root 56 Jul 22 20:17 test.txt.bz2
[root@linuxcool ~]# chown bin:bin test.txt.bz2
[root@linuxcool ~]# ll test.txt.bz2
-rw-r–r-- 1 bin bin 56 Jul 22 20:17 test.txt.bz2
- 显示改动动作:
[root@linuxcool ~]# ll test.txt
-rw-r–r-- 1 root root 45 Jul 22 21:11 test.txt
[root@linuxcool ~]# chown -c bin:bin test.txt
changed ownership of `test.txt’ to bin:bin
- 将当前目录下所有文件的拥有者都改为 linuxcool,用户组改为 linuxcoolgroup:
[root@linuxcool ~]# chown -R linuxcool:linuxcoolgroup *
================================================================
-
主要用于创建文件、修改时间
-
touch -t 2103081018 he.txt 修改he.txt文档,时间为21年3月18日10点18分
-
touch haha.txt 创建 haha.txt文件
用法:touch [选项]… 文件…
将每个文件的访问时间和修改时间改为当前时间;
不存在的文件将会被创建为空文件,除非使用-c 或-h 选项;
如果文件名为"-"则特殊处理,更改与标准输出相关的文件的访问时间;
长选项必须使用的参数对于短选项时也是必需使用的;
-a 只更改访问时间;
-c, --no-create 不创建任何文件;
-d, --date=字符串 使用指定字符串表示时间而非当前时间;
-f (忽略);
-h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地;
(当系统支持更改符号链接的所有者时,此选项才有用);
-m 只更改修改时间;
-r, --reference=文件 使用指定文件的时间属性而非当前时间;
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间;
–time=WORD 使用WORD 指定的时间:access、atime、use 都等于-a;
选项的效果,而modify、mtime 等于-m 选项的效果;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出。
-
主要用于创建目录
-
常用参数
-
mkdir -pv hbs 创建目录
-
[root@localhost ~]# mkdir -p a/{b/{e,f},c,d/{g,h}} 命令扩展 大括号{}
用法:mkdir [选项]… 目录;若指定目录不存在则创建目录;
长选项必须使用的参数对于短选项时也是必需使用的;
-m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask;
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理;
-v, --verbose 每次创建新目录都显示信息;
-Z, --context=CTX 将每个创建的目录的SELinux 安全环境设置为CTX;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出。
-
主要用于删除文件和目
-
常用命令
-
rm -r 递归删除目录及其内容
-
rm -rf 强制删除。忽略不存在的文件,不提示确认
用法:rm [选项]… 文件…删除 (unlink) 文件。
-f, --force 强制删除。忽略不存在的文件,不提示确认;
-i 在删除前需要确认;
-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提示内容更少,但同样可以阻止大多数错误发生;
-r, -R, --recursive 递归删除目录及其内容;
-v, --verbose 详细显示进行的步骤;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出;
默认时,rm 不会删除目录,使用–recursive(-r 或-R)选项可删除每个给定的目录,以及其下所有的内容;
要删除第一个字符为"-“的文件 (例如”-foo"),请使用以下方法之一:
rm – -foo
rm ./-foo
-
主要用于拷贝文件
-
常用命令
-
[root@hbs ~]# cp -r b/c/ /tmp/ 拷贝目录
-
拷贝文件,只能一对一
-
拷贝多个目录,只能是目录
-
-i 覆盖式提示信息
-
-f 强制复制
-
-p 保留原有属性
用法:cp [选项]… [-T] 源文件 目标文件
或:cp [选项]… 源文件… 目录
或:cp [选项]… -t 目录 源文件…
将源文件复制至目标文件,或将多个源文件复制至目标目录。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --archive 等于-dR --preserve=all;
–backup[=CONTROL 为每个已存在的目标文件创建备份;
-b 类似–backup 但不接受参数;
–copy-contents 在递归处理是复制特殊文件内容;
-d 等于–no-dereference --preserve=links;
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项;
存在时则不需再选此项);
-i, --interactive 覆盖前询问(使前面的 -n 选项失效);
-H 跟随源文件中的命令行符号链接;
-l, --link 链接文件而不复制;
-L, --dereference 总是跟随符号链接;
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效);
-P, --no-dereference 不跟随源文件中的符号链接;
-p 等于–preserve=模式,所有权,时间戳;
-
移动、重命名
-
目标在本地,是重命名
-
目标在远端,是移动
用法:mv [选项]… [-T] 源文件 目标文件;
或:mv [选项]… 源文件… 目录;
或:mv [选项]… -t 目录 源文件;
将源文件重命名为目标文件,或将源文件移动至指定目录。长选项必须使用的参数对于短选项时也是必需使用的。
–backup[=CONTROL] 为每个已存在的目标文件创建备份;
-b 类似–backup 但不接受参数;
-f, --force 覆盖前不询问;
-i, --interactive 覆盖前询问;
-n, --no-clobber 不覆盖已存在文件,如果您指定了-i、-f、-n 中的多个,仅最后一个生效;
–strip-trailing-slashes 去掉每个源文件参数尾部的斜线;
-S, --suffix=SUFFIX 替换常用的备份文件后缀;
-t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录;
移动至 指定目录;
-T, --no-target-directory 将目标文件视作普通文件处理;
-u, --update 只在源文件文件比目标文件新,或目标文件;
不存在时才进行移动;
-v, --verbose 详细显示进行的步骤;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出。
-
主要用于查看文件内容(适用短文本)
-
常用命令
-
cat -n he.txt 显示行号的
用法:cat [选项]… [文件]…
将[文件]或标准输入组合输出到标准输出。
-A, --show-all 等于-vET;
-b, --number-nonblank 对非空输出行编号;
-e 等于-vE;
-E, --show-ends 在每行结束处显示"$";
-n, --number 对输出的所有行编号;
-s, --squeeze-blank 不输出多行空行;
-t 与-vT 等价;
-T, --show-tabs 将跳格字符显示为^I;
-u (被忽略);
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出。
-
cat …EOF …EOF用法
-
添加内容,会覆盖前面内容
-
追加内容
[root@hbs a]# cat > /tmp/hbs.txt <<EOF
my name is hbs
I love a girl
EOF
[root@hbs a]#
[root@hbs a]# cat >> /tmp/hbs.txt <<EOF 追加内容
I LOVE LIU AO NI
EOF
[root@hbs a]#
-
主要用于查看文件内容,通常查看头10行
-
常用命令
-
[root@hbs ~]# head -3 anaconda-ks.cfg 看前3行
用法:head [选项]… [文件]…
将每个指定文件的头10 行显示到标准输出。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为"-",则从标准输入读取数据,长选项必须使用的参数对于短选项时也是必需使用的;
-q, --quiet, --silent 不显示包含给定文件名的文件头;
-v, --verbose 总是显示包含给定文件名的文件头;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出;
-c, --bytes=[-]K 显示每个文件的前K 字节内容,如果附加"-"参数,则除了每个文件的最后K字节数据外显示剩余全部内容;
-n, --lines=[-]K 显示每个文件的前K 行内容,如果附加"-"参数,则除了每个文件的最后K 行外显示剩余全部内容。
-
主要用于查看文件内容,通常用于尾 10行
-
常用命令
-
tail -10 anaconda-ks.cfg 查看尾 10行
用法:tail [选项]… [文件]…
显示每个指定文件的最后10 行到标准输出。
若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。
如果不指定文件或文件为"-" ,则从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-n, --lines=K 输出的总行数,默认为10行;
-q, --quiet, --silent 不输出给出文件名的头;
–help 显示此帮助信息并退出;
–version 显示版本信息并退出;
-f, --follow[={name|descriptor}] 即时输出文件变化后追加的数据;
-f, --follow 等于–follow=descriptor
-F 即–follow=name –retry
-c, --bytes=K 输出最后K字节;另外,使用-c +K 从每个文件的第K字节输出。
-
实时查找,精确性强,遍历指定目录中所有文件完成查找,
-
查找速度慢,支持众多查找标准。
-
语法:find [OPTION…] 查找路径 查找标准 查找到以后的处理动作
-
查找路径 默认为当前目录
-
查找标准 默认为指定路径下的所有文件
-name ‘filename’ 对文件名作精确匹配.支持glob通配符机制
-iname ‘filename’ 文件名匹配时不区分大小写
-regex pattern 基于正则表达式进行文件名匹配.以pattern 匹配整个文件路径字符串,而不仅仅是文件名称
-user username 根本属主来查找
-group groupname 根据属组来查找
-uid 根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
-gid 根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
-nouser 查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
-nogroup 查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
-type 根据文件类型来查找(f,d,c,b,l,p,s)
-size 根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M, +表示大于,-表示小于
mtime 修改时间
-ctime 改变时间
-atime 访问时间+5 ,5天前;-5,5天以内
-mmin 多少分钟修改过
-cmin 多少分钟改变过
-amin 多少分钟访问过, +5 ,5分钟前;-5,5分钟以内
-perm mode 根据权限精确查找
-perm -mode 文件权限能完全包含此mode时才符合条件
-perm /mode 9位权限中有任何一位权限匹配都视为符合查找条件
处理动作:默认为显示到屏幕上
-print 显示
-ls 类似ls -l的形式显示每一个文件的详细信息
-delete 删除查找到的文件
-fls /path/to/somefile 查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} ; 对查找到的每个文件执行COMMAND,每次操作都需要用户确认
-exec COMMAND {} ; 对查找到的每个文件执行COMMAND,操作不需要确认
[root@localhost ~]# find / -name abc 找名字是 abc的
/root/abc
/opt/abc
[root@localhost ~]# find / -iname abc 忽略大小写的
/root/abc
/opt/abc
/opt/ABC
[root@localhost ~]# find / -nouser tom 找没有user的
[root@localhost ~]# find -type d 找目录
.
./a
./a/b
./a/b/e
[root@localhost ~]# find -size -1M 小于1m的文件
./00:00:00
./2021
[root@localhost ~]# find -size +1k 大于1k的文件
.
./.bash_history
./anaconda-ks.cfg
[root@localhost ~]# find -mmin +1 一分钟前改变的
./.bash_logout
./.bash_profile
./.bashrc
[root@localhost ~]# find -type d -name 5 必须是目录,名字是 5的目录
./5
[root@localhost ~]# find -type f -name 5
[root@localhost ~]#
[root@localhost ~]# find -type d -name 5 -ls 组合命令
33576693 0 drwxr-xr-x 2 root root 6 Apr 8 10:25 ./5
[root@localhost ~]#
[root@localhost ~]# find -type f -name he.txt -print 查找 名字为he.txt的文件,并且打印出来
./he.txt
[root@localhost ~]#
[root@localhost ~]# find -type f -name 5 -delete **查找名字是 5的文件,并删除
**
[root@localhost opt]# find ./ -type f -name *.sh -exec mv {} /opt/ ; 将当前文件 名为 .sh 的文件移动到 /OPT下
-
从前往后看,不能回退
-
有进度条显示
-
可以回退,空格 从前往后翻屏幕。
-
从后往前翻屏,b键
-
q键 退出查看
-
常用于查看文件在磁盘中的使用量
-
常用命令
-
[root@hbs ~]# du -sh /tmp/ 查看当前目录所有文件及文件及的大小
-
主要用于查询磁盘分区
-
常用命令
-
df –h,查看磁盘分区信息
[root@hbs ~]# du -sh /boot/ 查看目录及文件大小
110M /boot/
[root@hbs ~]# df -h /boot/ 查看boot 目录的使用情况
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 197M 121M 77M 62% /boot
[root@hbs ~]#
用法:df [选项]… [文件]…
显示每个文件所在的文件系统的信息,默认是显示所有文件系统。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all 显示所有文件系统的使用情况,包括虚拟文件系统;
-B, --block-size=SIZE 使用字节大小块;
-h, --human-readable 以人们可读的形式显示大小;
-H, --si 同-h,但是强制使用1000而不是1024;
-i, --inodes 显示inode 信息而非块使用量;
-k 即–block-size=1K;
-l, --local 只显示本机的文件系统;
–no-sync 取得使用量数据前不进行同步动作(默认);
-P, --portability 使用POSIX 兼容的输出格式;
–sync 取得使用量数据前先进行同步动作;
-t, --type=类型 只显示指定文件系统为指定类型的信息;
-T, --print-type 显示文件系统类型;
-x, --exclude-type=类型 只显示文件系统不是指定类型信息;
–help 显示帮助信息并退出;
–version 显示版本信息并退出
-
主要用于统计文本、字符(数字、符号、空格、行等)
-
常用命令
-
[root@hbs ~]# wc -l anaconda-ks.cfg 查看看它有多少行
-
[root@hbs ~]# wc -c anaconda-ks.cfg 查看它有多少个字符
-
[root@hbs ~]# wc -w anaconda-ks.cfg 查看它有多少个单词
[root@hbs ~]# wc anaconda-ks.cfg
52 148 1511 anaconda-ks.cfg (行、单词、字符)
[root@hbs ~]
[root@hbs ~]# cat anaconda-ks.cfg | wc -l #查看多少行
52
[root@hbs ~]#
-
取出指定列的选项
-
常用命令选项
-
-d 指定分隔符
-
-f 指定要显示的列
[root@localhost ~]# head -5 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
adm❌3:4:adm:/var/adm:/sbin/nologin
lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]# head -5 /etc/passwd|cut -d : -f6 取出/etc/passwd 以冒号为分隔符,第6列
/root
/bin
/sbin
/var/adm
/var/spool/lpd
[root@localhost ~]#
[root@localhost ~]# head -3 /etc/passwd|cut -d: -f1
root
bin
daemon
[root@localhost ~]#
-
处理列的内容
-
常用命令选项
-
-F 指定分割符 `‘NR==行{print $需要的列}’ 文件名
[root@localhost ~]# awk -F: ‘{print $1}’ /etc/passwd|head -5 以冒号为分隔符,查看 passwd 前5行的一个。
root
bin
daemon
adm
lp
[root@localhost ~]#
[root@localhost ~]# df -h|awk ‘{print $4}’ 分割符默认是 空格,如果不是 -F
Avail
19G
901M
912M
888M
912M
77M
183M
0
[root@localhost ~]#
[root@localhost ~]# df -h|awk ‘NR==3{print $4}’ 第4列第3行
901M
[root@localhost ~]#
[root@localhost ~]# df -h|awk ‘NR==2{print NF}’ 最后一列(NF),第二行
6
[root@localhost ~]# df -h|awk ‘NR==2{print $(NF-2)}’ 倒数多少列,第二行
-
处理行的内容
-
sed 选项 动作 文件名
-
-c 修改
-
-s 替换
-
-a 追加
-
-p 打印
-
-d 删除
-
常用命令
-
sed -i ‘1s/^#//g’ bcd 去除#号
[root@localhost ~]# sed ‘2p’ bcd
123
456
456
23
[root@localhost ~]# sed -n ‘2p’ bcd
456
[root@localhost ~]# sed -n ‘1p’ bcd
123
[root@localhost ~]# sed -n ‘3p’ bcd
23
[root@localhost ~]# sed -n ‘/456/p’ bcd 匹配456 打印
456
[root@localhost ~]#
[root@localhost ~]# sed ‘3s/23/9999/g’ bcd 第3行的23 替换成 999
123
456
9999
[root@localhost ~]#
[root@localhost ~]# cat bcd
#123
#456
#23
[root@localhost ~]# sed ‘1s/^#//g’ bcd 将第1行的#号替换为 空,并没有修改原文件
123
#456
#23
[root@localhost ~]#
[root@localhost ~]# sed -i ‘1s/^#//g’ bcd 修改源文件了的
[root@localhost ~]# sed -i ‘1c888’ bcd 将第一行改成 888
[root@localhost ~]#
-
文本查找
-
常用命令参数
-
i 忽略大小写
-
v 显示没有匹配的项
-
E,一般用于 egrep
grep egrep fgrep
grep 根据模式搜索文本,并将符合模式的文本行显示出来。
使用基本正则表达式定义的模式来过滤文本的命令。
Pattern(模式) 文本字符和正则表达式的元字符组合而成的匹配条件
-i 忽略大小写
–color 匹配到的内容高亮显示
-v 显示没有被模式匹配到的行
-o 只显示被模式匹配到的字符串
-E 使用扩展正则表达式。grep -E相当于使用egrep
-q 静默模式,不输出任何信息
-A 1 被模式匹配到的内容以及其后面一行的内容都显示出来
如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
-B 1 被模式匹配到的内容以及其前面一行的内容都显示出来
如果把1改成2就表示被模式匹配到的内容以及其前面2行的内容均显示出来
-C 1 被模式匹配到的内容以及其前后的行各显示1行,如果把1改成2
就表示被模式匹配到的内容以及其前后的行各显示2行。
fgrep 不支持正则表达式,执行速度快
[root@localhost ~]# cat g.txt
world
WORLDshar
worldhelo
123456
woLD
worLD
World
WOF
[root@localhost ~]# cat g.txt |grep world 过滤world
world
worldhelo
[root@localhost ~]# cat g.txt |grep -i world 过滤world,忽略大小写
world
WORLDshar
worldhelo
worLD
World
[root@localhost ~]# cat g.txt |grep -v world 取反
WORLDshar
123456
woLD
worLD
World
WOF
[root@localhost ~]#
[root@localhost ~]# cat g.txt |egrep -E world
world
worldhelo
[root@localhost ~]#
-
主要用于打印字符或者回显
-
常常和管道符连用
-
覆盖
-
追加
-
扩展 -e,主要用于写脚本
\033[30m 黑色字 \033[0m
\033[31m 红色字 \033[0m
\033[32m 绿色字 \033[0m
\033[33m 黄色字 \033[0m
\033[34m 蓝色字 \033[0m
\033[35m 紫色字 \033[0m
\033[36m 天蓝字 \033[0m
\033[37m 白色字 \033[0m
\033[40;37m 黑底白字 \033[0m
\033[41;37m 红底白字 \033[0m
\033[42;37m 绿底白字 \033[0m
\033[43;37m 黄底白字 \033[0m
\033[44;37m 蓝底白字 \033[0m
\033[45;37m 紫底白字 \033[0m
\033[46;37m 天蓝底白字 \033[0m
\033[47;30m 白底黑字 \033[0m
- auto_lamp_v2.sh
#!bin/sh
echo -e “\033[036m Please select intstall Menu follow:\033[0m”
echo -e “\033[32m 1)install Apache Server\033[1m”
echo “2)install Mysql Server”
echo “3)install PHP Server”
echo “4)Configuration index.php and start LAMP Server”
echo -e “\033[31mUsage:{ /bin/sh $0 1|2|3|4|hep}\033[0m”
-
sort 排序
-
uniq 去重
-
-c 显示它出现的次数
-
-u 显示不重复的
-
-d 显示重复的
[root@localhost ~]# cat >> abc <<EOF
1
23
22
11
0
9
1
2
3
4
5
7
6
7
8
EOF
[root@localhost ~]# sort -n abc
0
1
1
2
3
4
5
6
7
7
8
9
11
22
23
[root@localhost ~]# sort -n abc|uniq
0
1
2
3
4
5
6
7
8
9
11
22
23
[root@localhost ~]#
[root@localhost ~]# sort -n abc|uniq -d
1
7
[root@localhost ~]# sort -n abc|uniq -c
1 0
2 1
1 2
1 3
1 4
1 5
1 6
2 7
1 8
1 9
1 11
1 22
1 23
[root@localhost ~]# sort -n abc|uniq -u 显示不重复的
0
2
3
4
5
6
8
9
11
22
23
[root@localhost ~]#
- 查看目录结构
warning: /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:tree-1.6.0-10.el7 ################################# [100%]
[root@localhost ~]#
[root@localhost ~]# which tree 查看命令安装位置
/usr/bin/which: no tre in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost ~]#
[root@localhost ~]# mkdir p/{j/{d,h},k/{n,m}} -p 创建目录
[root@localhost ~]# tree p 查看目录结构
p
├── j
│ ├── d
│ └── h
└── k
├── m
└── n
6 directories, 0 files
==================================================================
================================================================
-
常用几种格式
-
.tar.gz (tar)
-
.tar.bz2 (tar),需要安装bzip2安装包
-
.tar.xz (tar)
-
.zip (zip) 跨平台的
-
压缩比:gz<bz<xz (xz压缩效果最好,推荐使用tar.xz)
-
常用压缩文件选项
-
-zcf 创建一个gz的文件压缩包
-
-jcf 创建一个bz2的文件压缩包
-
-Jcf 创建一个xz格式的文件压缩包
-常用解压文件选项
-
-xf 解压指定文件(gz、xz用)
-
-xvf 解压指定文件并显示解压过程(gz、xz用)
-
-xjf 解压bz2文件的
-
查看压缩的文件
-
-tvf 不解压查看一个文件
-c 创建归档
-z 压缩成gz格式
-j 压缩成bz2格式
-v 显示详细信息
-t 不解压查看压缩包内容
-f 指定要压缩或解压缩的文件
-x 解压缩
-C 将压缩文件解压到指定目录
[root@localhost ~]# ls /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm 查看bzip2安装包
[root@localhost ~]# rpm -ivh /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm 安装bzip2安装包
warning: /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing… ################################# [100%]
package bzip2-1.0.6-13.el7.x86_64 is already installed
[root@localhost ~]# tar -jcf hehe.tar.bz2 [[:alnum:]] 将数字、大小写字母 压缩为hehe.tar.bz2包
[root@localhost ~]# tar -Jcf big.tar.xz * 将所有文件压缩成 tar.xz格式
[root@localhost ~]# tar -tvf big.tar.xz 不解压查看big.tar.xz 压缩包
[root@localhost opt]# tar xf digit.tar.gz 解压digit(单个数字)压缩包
[root@localhost opt]# ls
1 2 3 4 8 alnum.tar.bz2 big.tar.xz digit.tar.gz hehe.tar.bz2
[root@localhost opt]# rm -f [[:digit:]] 删除数字
[root@localhost opt]# ls
alnum.tar.bz2 big.tar.xz digit.tar.gz hehe.tar.bz2
[root@localhost opt]# tar -xvf digit.tar.gz
[root@localhost opt]# tar -xvf digit.tar.gz -C ~解压到家目录
zip 命令
-
和gz2一样,也需要单独安装zip和unzip(看情况)
-
zip xx.zip 压缩
-
unzip xx.zip 解压缩
[root@localhost opt]# which zip 查看有没有zip 命令
/usr/bin/which: no zip in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost opt]# ls /mnt/Packages/zip-3.0-11.el7.x86_64.rpm
/mnt/Packages/zip-3.0-11.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh /mnt/Packages/zip-3.0-11.el7.x86_64.rpm 安装zip命令
warning: /mnt/Packages/zip-3.0-11.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:zip-3.0-11.el7 ################################# [100%]
[root@localhost opt]#
[root@localhost ~]# zip liuaoni.zip [[:digit:]] 将数字压缩zip格式
adding: 1 (stored 0%)
adding: 2 (stored 0%)
adding: 3 (stored 0%)
adding: 4 (stored 0%)
adding: 8 (stored 0%)
[root@localhost ~]# unzip liuaoni.zip 解压zip文件
-
Linux软件包管理大致可分为二进制包、源码包,使用的工具也各不相同。Linux常见软件包分为两种,分别是源代码包(Source Code)、二进制包(Binary Code),源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运行,二进制包无需编译,可以直接安装使用。
-
通常而言,可以通过后缀简单区别源码包和二进制包,例如.tar.gz、.zip、.rar结尾的包通常称之为源码包,以.rpm结尾的软件包称之为二进制包。真正区分是否为源码还是二进制还得基于代码里面的文件来判断,例如包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源码包,而代码代码里面存在bin可执行文件,称之为二进制包。
-
CentOS操作系统中有一款默认软件管理的工具,红帽包管理工具(Red Hat Package Manager,RPM)。
-
使用RPM工具可以对软件包实现快速安装、管理及维护。RPM管理工具适用的操作系统包括:CentOS,RedHat,Fedora,SUSE等,RPM工具常用于管理.rpm后缀结尾的软件包。
-
RPM包命名格式为:
name-version.rpm
name-version-noarch.rpm
name-version-arch.src.rpm
- 如下软件包格式:
epel-release-6-8.noarch.rpm
perl-Pod-Plainer-1.03-1.el6.noarch.rpm
yasm-1.2.0-4.el7.x86_64.rpm
- 常用命令参数
PM 选项 PACKAGE_NAME
-a, --all 查询所有已安装软件包;
-q,–query 表示询问用户,输出信息;
-l, --list 打印软件包的列表;
-f, --file FILE 查询包含 FILE 的软件包;
-i, --info 显示软件包信息,包括名称,版本,描述;
-v, --verbose 打印输出详细信息;
-U, --upgrade 升级RPM软件包;
-h,–hash 软件安装,可以打印安装进度条;
–last 列出软件包时,以安装时间排序,最新的在上面;
-e, --erase 卸载rpm软件包
–force 表示强制,强制安装或者卸载;
–nodeps RPM包不依赖
-l, --list 列出软件包中的文件;
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
###################### [100%]
[root@localhost opt]#
[root@localhost ~]# zip liuaoni.zip [[:digit:]] 将数字压缩zip格式
adding: 1 (stored 0%)
adding: 2 (stored 0%)
adding: 3 (stored 0%)
adding: 4 (stored 0%)
adding: 8 (stored 0%)
[root@localhost ~]# unzip liuaoni.zip 解压zip文件
-
Linux软件包管理大致可分为二进制包、源码包,使用的工具也各不相同。Linux常见软件包分为两种,分别是源代码包(Source Code)、二进制包(Binary Code),源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运行,二进制包无需编译,可以直接安装使用。
-
通常而言,可以通过后缀简单区别源码包和二进制包,例如.tar.gz、.zip、.rar结尾的包通常称之为源码包,以.rpm结尾的软件包称之为二进制包。真正区分是否为源码还是二进制还得基于代码里面的文件来判断,例如包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源码包,而代码代码里面存在bin可执行文件,称之为二进制包。
-
CentOS操作系统中有一款默认软件管理的工具,红帽包管理工具(Red Hat Package Manager,RPM)。
-
使用RPM工具可以对软件包实现快速安装、管理及维护。RPM管理工具适用的操作系统包括:CentOS,RedHat,Fedora,SUSE等,RPM工具常用于管理.rpm后缀结尾的软件包。
-
RPM包命名格式为:
name-version.rpm
name-version-noarch.rpm
name-version-arch.src.rpm
- 如下软件包格式:
epel-release-6-8.noarch.rpm
perl-Pod-Plainer-1.03-1.el6.noarch.rpm
yasm-1.2.0-4.el7.x86_64.rpm
- 常用命令参数
PM 选项 PACKAGE_NAME
-a, --all 查询所有已安装软件包;
-q,–query 表示询问用户,输出信息;
-l, --list 打印软件包的列表;
-f, --file FILE 查询包含 FILE 的软件包;
-i, --info 显示软件包信息,包括名称,版本,描述;
-v, --verbose 打印输出详细信息;
-U, --upgrade 升级RPM软件包;
-h,–hash 软件安装,可以打印安装进度条;
–last 列出软件包时,以安装时间排序,最新的在上面;
-e, --erase 卸载rpm软件包
–force 表示强制,强制安装或者卸载;
–nodeps RPM包不依赖
-l, --list 列出软件包中的文件;
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-reJBivAk-1714794027196)]
[外链图片转存中…(img-1fSibOaf-1714794027196)]
[外链图片转存中…(img-AIEmoWJs-1714794027197)]
[外链图片转存中…(img-rEaiHBj5-1714794027197)]
[外链图片转存中…(img-4MHnuAbS-1714794027197)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新