运维面试准备
常见岗位要求
1.熟悉windows系统、熟悉linux系统知识及常用命令
2.了解网络知识,熟悉常见网络设备,如路由器、交换机、子网划分
3.具备一定的网络基础,掌握TCP/IP、http、VRRP等常用协议,熟练使用strace、netstat、sed等命令
4.熟练使用shell或者python,具备编写和维护自动化脚本的能力
5.docker/k8s、redis、nginx、mysql、MQ、NFS、ES等,有公有云类产品的运维经验
6.熟练gitlab、jenkins配置使用,需要有搭建和维护经验
7.至少精通一种数据库(如mysql、pgsql、oracle等)的管理、优化和故障排除技术
这是我看完某些招聘后的面试准备,同时也是对自己工作4年的知识梳理归纳,以及查缺补漏
windows系统相关
1.查看本机ip
ipconfig
2.netstat 查看网络连接状态
netstat -ano #查看网络连接、状态以及对应的进程id
netstat -ano | find "10.242.254.123" #通过管道符查找特定ip的网络连接及进程号
3.路由跟踪
tracert www.baidu.com #探测数据包从源地址到目的地址经过的路由
4.测试主机是否连通 的常用方法
ping 10.242.254.123
telnet 10.242.254.123 80 #测试端口是否通
Test-NetConnection -ComputerName 10.242.254.123 -Port 80 #通过powershell测试端口连通性,如果端口是通的,TcpTestSucceeded 属性为True,否则为False。
nmap -p 80 10.242.254.123 #这个需要安装Nmap工具,才可以用
5.windows配置多用户远程登录
参考:
https://blog.csdn.net/happymagic/article/details/79448752
https://blog.csdn.net/happymagic/article/details/79448752
windows下使用wget
1.进入安装目录 然后cmd
输入wget --version 可以查看版本
2.下载文件
下载文件重命名:
wget -o 重命名.zip 网址
下载文件到指定目录:
wget -P 目录 网址
例如:
wget -P D:\xxx.zip http://www.xdown.com/xxx.zip
下载整个目录加-r参数
wget -o -r 重命名.zip 网址
linux常用命令
1.查看日志
#查看实时日志
tail -f
过滤实时日志
#查看含有'appid'关键字的前后5行
tail -f filename |grep 'appid' -C5
过滤需要的日志
cat filename |grep '关键字' -C10 #显示关键字的前后10行
cat filename |grep '关键字' -A10 #显示关键字的后10行
cat filename |grep '关键字' -B10 #显示关键字的前10行
cat filename | grep --color 'appid' #搜索日志中所有包含appid的行,–color匹配到的数据变红
grep -i 'get' filename #无视大小写过滤,等同于cat filename | grep -i 'get'
# 将过滤出来的 appid 所在的行 追加到 名字为test.log文件里,如果没有此文件,会默认创建;
grep 'appid' filename >> test.log
# 反选,将appid除外的行,覆盖到 test.log 文件里;
grep -v 'appid' filename > test.log
其他基础命令
tail -n 10 filename 查询日志尾部最后10行的日志;
tail -n +10 filename 查询10行之后的所有日志;
head -n 10 filename 查询日志文件中的头10行日志;
head -n -10 filename 查询日志文件除了最后10行的其他所有日志;
2.文件用户所属组及权限
# ls -lh 查询当前目录下文件夹/文件用户所属组及权限
# 将/xxx目录下的所有文件与子目录的拥有者皆设为runoob,群体的使用者runoob
chown -R runoob:runoob /xxx
#把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
#将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
#将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
#把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
chmod ug +rw log 表示给属主以及与属主相同组的用户添加读写权限。
chmod -r log 表示所有用户都删除读log文件的权限
chmod 640 log :所有者有读和写的权限,组用户只有读的权限,其他用户无任何权限
chmod 777 log :每个人都有读和写以及执行的权限
chown user log 表示把log的所有者设置为user
chown .users log 表示把log的属组设置为users,注意组名前加点
chown user.users log 表示把log的所有者设置为user,属组设置为users
chown -R user Desktop 表示把Desktop目录及其下的所有文件和子目录的属主改为user
chgrp -R users Desktop 表示把Desktop目录及其下的所有文件和子目录的属组改为users
3.进程相关
ps -ef | head
# 查看tomcat进程数
ps -ef | grep -v grep | grep tomcat | wc -l
# 查看父进程的子进程
ps -T -p 1137
# 统计子进程数
ps -T -p pid | grep -v grep | wc -l
ps查看CPU和内存占用前10的进程
# 内存增序
ps aux --sort rss
# 内存减序
ps aux --sort -rss
# cpu增序
ps auxw --sort=%cpu
# cpu减序
ps auxw --sort=-%cpu
# 找出占用内存资源最多的前 10 个进程
ps -auxf | sort -nr -k 4 | head -10
# 找出占用 CPU 资源最多的前 10 个进程
ps -auxf | sort -nr -k 3 | head -10
4.磁盘相关
#查看磁盘
df -hl
#查看文件大小
du -sh *
#查看服务器内存磁盘等情况
free -h
top
df -hl
uname -a #查看操作系统架构
free -h命令解析
[root@xxx ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 3.8G 447M 368M 2.0G 1.7G
Swap: 8.0G 1.2G 6.8G
字段含义:
total:#服务器内存总大小:7.6G
used:#已经使用了多少内存:3.8G,已用内存总量(used = total-free-buffers-cache,这里没减去shared,我理解是shared是used的其中一部分)
free:#未被任何应用使用的真实空闲内存,也叫未被分配出去的内存,(真正尚未被使用的物理内存数)
shared:#表示多个进程共享的内存总额。
buff/cache: #表示buffers和cache所用总量的总和(buffers为内核缓冲区所用的内存,cache为页缓存和slabs所用的内存容量),也有人说是表示磁盘缓存的大小。
linux跟目录扩容
1.查看可以分配容量
vgs
2.把剩余的容量扩容到跟目录
lvextend -l +100%free sysvg/lv_root
resize2fs /dev/sysvg/lv_root
3.查看/dev/vda数据盘容量为500G,所以还有340G可以进行分区
lsblk
4.开始新建第三个分区/dev/vda3
fdisk /dev/vdb
n
p
w
5.使用vgextend命令向卷组"sysvg"中添加物理卷
vgextend sysvg /dev/vda3 #将物理卷"/dev/vda3"加入卷组"sysvg"
6.把123G的容量扩容到跟目录
lvextend -L +123G /dev/mapper/sys-lv_root
resize2fs /dev/sysvg/lv_root
其他:
1.使用vgremove命令删除LVM卷组"vg1000"
[root@xxx ~]# vgremove vg1000 #删除卷组"vg1000"
Volume group "vg1000" successfully removed
2.逻辑卷扩容
lvextend -l +100%free sysvg/lv_root 等同于 lvextend -l +100%free /dev/mapper/sys-lv_root
证明,可以看到他们都是指向同一个
5.解压缩文件
压缩文件
#同时将test001,test002中的所有文件压缩打包成test.zip
zip -r test.zip test001 test002
#压缩当前目录的所有文件、子目录、子文件
zip -r /home/user_name/lib_words.zip ./*
解压文件
#解压缩 unzip:将test.zip解压缩到某个目录下
unzip test.zip -d /home/user_name/test
详情查看:https://www.cnblogs.com/qi-yuan-008/p/11863114.html
6.删除文件
#删除xxx开头的文件或者文件夹
rm -rf xxx*
#使用rm 命令按扩展名删除文件
rm -rf *.gif
#同时删除多个扩展名的文件
rm -rf *.txt *.pdf
#使用find命令递归删除具有特定扩展名的文件
#rm命令仅删除当前目录中的文件。即使使用递归选项,它也不会从子目录中删除文件。
#要递归删除具有特定扩展名的文件,可以组合find命令和rm命令。
find . -type f -name "*.gif" -exec rm -v {} \
详情:
https://blog.csdn.net/yaxuan88521/article/details/127994960
7.查找
Linux下在文件夹所有文件中查找相关内容
grep -nr "str" path
在yaml结尾的文件里面,查找字符串xxx
find / -name "*.yaml" | xargs grep "wecarecims8kwe8de887393bb78a6949"
查找包含salt的文件或者目录
find / -type f -name "*salt*"
#删除对应时间点 日志行
grep -v '2024-04-07' app.log > app1.log
mv app1.log app.log
rm -rf app1.log
使用grep命令配合-v参数删除特定行,写到中间文件中
grep -v '2024-04-07' app.log > app1.log
筛选出的结果 回写到源文件
mv -f ./app1.log ./app.log
注意:指令>和>>区别
指令 > : 如果文件存在,将原来文件的内容覆盖;原文件不存在则创建文件,再添加信息。
指令 >>:不会覆盖原文件内容,将内容追加到文件的尾部。
Linux快速删除特定行的方法
https://blog.csdn.net/u011807844/article/details/135011065
https://blog.csdn.net/weixin_41311528/article/details/127108981
8.查看端口号
ss -lnt
ss -lnt 命令详解
https://blog.csdn.net/q4423887982/article/details/130763956
# 查看全部端口
lsof -i
# 查看指定端口
lsof -i:80
# 显示全部tcp,udp 的端口和进程等相关情况
netstat -tunlp
# 显示指定端口
netstat -tunlp | grep 80
检查远程端口是否连通
curl -kv http://7.180.184.173:6080 # 推荐使用
telnet 7.180.184.173 6080 # 不一定安装有该命令
nmap 7.180.184.173 -p 6080 # 不一定安装有该命令
nc -v 7.180.184.173 6080 # 不一定安装有该命令
### 服务端监听端口
netstat -anp|grep -iE "tcp|udp" | grep -iE "listen|udp" | grep -v "127.0.0.1" | grep -v "::1:"
### 客户端使用端口
netstat -anp|grep -iE "tcp|udp" |grep -iE "established"|grep -v "127.0.0.1" | grep -v "::1:"
##-e参数,uid 用户ID。
netstat -ape|grep -iE "tcp|udp" |grep -iE "established"|grep -v "127.0.0.1" | grep -v "::1:"
#列出所有端口的情况
netstat -ano
9.crontab的使用
crontab [-u username] //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)
实例1:每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
0 */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart
参考:https://www.runoob.com/w3cnote/linux-crontab-tasks.html
10.远程拷贝
从本地主机复制文件至远程节点
scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file
- 从远程节点复制文件至本地主机
scp remote_username@remote_ip:remote_file local_folder
scp remote_username@remote_ip:remote_file local_file
scp remote_ip:remote_file local_folder
scp remote_ip:remote_file local_file
- 从本地主机复制目录至远程节点
scp -r local_folder remote_username@remote_ip:remote_folder
scp -r local_folder remote_ip:remote_folder
- 从远程节点复制目录至本地主机
scp -r remote_username@remote_ip:remote_folder local_folder
scp -r remote_ip:remote_folder local_folder
这个当时从哪里参考的,历史久远 忘记了,如果侵权后台联系我下,我给你加上参考出处