28个运维经典面试题
2023运维工程师面试题20道基础

以下是20道关于运维工程师的面试题,涵盖了基础知识和实践经验:
1.什么是运维工程师,其主要职责是什么?
2.描述一下您在过去的运维工作中所负责的任务。
3.什么是Linux操作系统,它与Windows操作系统的区别是什么?
4.您如何管理和维护Linux服务器?
5.您如何监控Linux服务器的性能和安全?
6.什么是SSH协议,它是如何工作的?
7.您如何进行网络故障排除?
8.您如何配置和管理网络设备,如路由器和交换机?
9.您如何备份和恢复数据?
10.您如何安装和配置软件和应用程序?
11.您如何处理系统安全问题,例如防止黑客攻击和保护敏感数据?
12.您如何优化系统性能?
13.您如何解决系统故障和问题?
14.您如何编写自动化脚本以简化重复的任务?
15.您如何与其他团队成员合作以实现共同的目标?
16.您如何处理突发故障和紧急事件?
17.您如何管理多个项目并确保它们按时完成?
18.您如何评估和提高系统的可用性和可靠性?
19.您如何持续改进和优化运维过程和工具?
20.您认为作为一名运维工程师最重要的品质是什么?
以上问题可以帮助您了解应聘者的技术水平、实践经验、问题解决能力和团队合作精神。
运维面试提问

超哥分享 以下问题,针对想⾯试中级运维岗位提问,初级运维会再简单些。
1.在公司负责运维什么?(整体考核)
2.针对性提问(知识点考核)
web :
数据库:
回答:关于⽹站架构,⾃动化,持续集成,迭代更新,数据备份,容器化,问题排错
涉及知识点:前后端⽹站部署架构,ansible ,saltstack ,jenkins ,shell ,rsync ,docker ,k8s
12 ⾃动化:
基础:ansible ,命令,剧本⽤法
进阶:playbook 脚本写的如何,发布过什么项⽬,jinja2,role ⽤的如何
123 nginx
1 mysql
redis
mongodb
postgreSQL
1234
CICD:
容器篇:
k8s 篇:
关于更多⾯试题,google 能搜到很多,可以给⾃⼰查漏补缺。
jenkins 如何⽤的
1 公司项⽬是否容器化
docker ⽤法,dockerfile 指令作 docker 存储,⽹络如何设置 docker-compose 如何编排应⽤1234 etcd ⽤过哪些功能
k8s 安装流程,原理是否了解 什么是静态pod
pod 创建流程
pod 重启策略,健康检查,探针 configmap 和secret 作⽤,区别 说说k8s workload
k8s 扩容机制
service 怎么找到pod ? ⽤过⽆头svc 吗
外部如何访问k8s 内应⽤ k8s 数据采集的⽅式有哪些 k8s 的⽇志管理⽅式
12345678910111213。
运维面试题(含答案)

运维工程师面试题姓名: 答题时间:1.新安装MYSQL后怎样提升MYSQL的安全级别A.修改mysql默认端口下可以通过iptables来限制访问mysql端口的IP地址】C.对所有用户设置较复杂密码并严格指定对应账号的访问IP(可在mysql库中user表中指定用户的访问可访问IP地址)特权账号的处理(建议给root账号设置强密码,并指定只允许本地登录)E.开启二进制查询日志和慢查询日志安装目录及数据存储目录权限控制:给mysql安装目录读取权限,给mysql日志和数据所在目录读取和写入权限G.删除无用mysql账号和删除无用的数据库(安装好的mysql默认会有个test库,可将其删除)2.】3.MYSQL的主从原理,怎么配置文件整体上来说,复制有3个步骤:将改变记录到二进制日志(binarylog)中(这些记录叫做二进制日志事件,binarylogevents);将master的binarylogevents拷贝到它的中继日志(relaylog);重做中继日志中的事件,将改变反映它自己的数据。
4.~5.mysql主从复制的优点<1>如果主服务器出现问题,可以快速切换到从服务器提供的服务;<2>可以在从服务器上执行查询操作,降低主服务器的访问压力;<3>可以在从服务器上执行备份,以避免备份期间影响主服务器的服务。
6.Mysql复制的基本原理过程.(1)Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;(2)Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。
返回信息中除了日志所包含的信息之外,还包括本次返回的信息在Master端binarylog文件的名称以及在Binarylog中的位置;(3)Slave的IO线程收到信息后,将接收到的日志内容依次写入到Slave端的RelayLog文件()的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”(4)Slave的SQL线程检测到RelayLog中新增加了内容后,会马上解析该Log文件中的内容成为在Master 端真实执行时候的那些可执行的查询或操作语句,并在自身执行那些查询或操作语句,这样,实际上就是在master 端和Slave端执行了同样的查询或操作语句,所以两端的数据是完全一样的。
面试运维的面试题目(3篇)

第1篇一、基础理论题1. 请简要介绍Linux操作系统的特点及其在运维工作中的应用。
解析:Linux操作系统具有开源、稳定、安全性高、可定制性强等特点。
在运维工作中,Linux操作系统被广泛应用于服务器、存储、网络等领域,如Web服务器、数据库服务器、文件服务器等。
2. 什么是IP地址?请解释IPv4和IPv6地址的区别。
解析:IP地址是互联网中用于标识设备位置的数字标识。
IPv4地址采用32位表示,分为A、B、C、D、E五类,其中A、B、C类地址用于公共网络,D类地址用于多播,E类地址为保留地址。
IPv6地址采用128位表示,采用冒号分隔的十六进制形式,旨在解决IPv4地址耗尽的问题。
3. 请解释TCP/IP协议栈中的TCP和UDP协议的区别。
解析:TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议,适用于传输大量数据、需要保证数据完整性的场景。
UDP(用户数据报协议)是一种无连接的、不可靠的、基于数据报的传输层协议,适用于传输少量数据、对实时性要求较高的场景。
4. 请解释DNS域名解析的过程。
解析:DNS(域名系统)是一种将域名转换为IP地址的系统。
域名解析过程如下:(1)本地DNS缓存查询:首先,DNS服务器会检查本地缓存中是否有对应的域名解析记录。
(2)递归查询:如果本地缓存中没有记录,DNS服务器会向根域名服务器查询顶级域名服务器(如.com、.cn等)的IP地址。
(3)迭代查询:顶级域名服务器返回相应的权威域名服务器的IP地址,DNS服务器再次查询该权威域名服务器。
(4)获取IP地址:权威域名服务器返回对应的IP地址,DNS服务器将IP地址返回给客户端。
5. 请解释HTTP协议的工作原理。
解析:HTTP(超文本传输协议)是一种应用层协议,用于在Web浏览器和服务器之间传输数据。
HTTP协议的工作原理如下:(1)客户端发送请求:客户端(如浏览器)向服务器发送HTTP请求,包括请求方法(如GET、POST)、URL、协议版本、请求头等信息。
运维工程师的面试题及答案

运维工程师的面试题及答案一、简介运维工程师是负责系统运维管理的专业人员,需要具备一定的技术和知识储备。
在面试中,面试官通常会提出一些相关的问题,以评估应聘者的技术能力和工作经验。
本篇文章将整理一些典型的运维工程师面试题目及其答案,帮助读者更好地准备面试。
二、面试题目及答案题目一:请介绍一下你在之前的工作中负责的项目。
回答:在之前的工作中,我参与了一个大型网络公司的运维团队,负责管理和维护公司的服务器和网络设备。
我负责监控系统运行情况,进行故障排除,并提供技术支持。
此外,我还定期进行系统维护和更新,并制定应急预案以确保系统的稳定性和安全性。
题目二:请描述一下你在处理一次系统故障时的整个过程?回答:在处理系统故障时,我首先会迅速定位问题,并进行初步的排查。
接下来,我会检查系统的日志文件和监控数据,以了解问题的具体原因。
如果问题严重影响了系统的正常运行,我会立即采取措施进行紧急修复,以减少故障对业务的影响。
在修复故障后,我会进行详细的分析和记录,以避免类似问题再次发生。
题目三:在运维工作中,你遇到过哪些紧急情况,如何解决的?回答:我曾经遇到过一次数据库服务器突然宕机的紧急情况。
在发现问题后,我立即与数据库管理员配合,进行问题排查。
我们迅速找到了问题所在,是由于服务器硬件故障导致的。
为了尽快恢复服务,我们利用备份恢复了数据,并将服务迁移到备用服务器上。
在修复主服务器后,我还对整个系统进行了全面的检查和测试,以确保问题不会再次发生。
题目四:你在工作中如何保障系统的安全性?回答:为了保障系统的安全,我采取了多种措施。
首先,我定期对系统进行漏洞扫描和安全评估,并及时修补任何发现的漏洞。
其次,我会定期备份重要的数据,并将备份数据存储在安全的地方,以防止数据丢失。
另外,我会监控系统的日志,并及时发现并应对任何异常行为。
此外,我还会进行用户权限管理,确保只有授权的用户才能访问系统。
题目五:你在工作中如何与其他团队进行协作?回答:在工作中,我经常需要与其他团队进行协作,比如研发团队或者产品团队。
运维笔试面试题目及答案精选全文完整版

可编辑修改精选全文完整版运维笔试面试题目及答案一、题目一:Linux命令1. 查看服务器当前运行的进程的命令是什么?答:ps aux2. 列出当前目录下所有的文件(包括隐藏文件)的命令是什么?答:ls -a3. 如何查看一个文件的前10行?答:head -n 10 文件名4. 如何将一个文件从一个目录移动到另一个目录?答:mv 文件名目标目录5. 如何查看一个文件有多少行?答:wc -l 文件名二、题目二:网络基础1. 解释TCP/IP协议族。
答:TCP/IP协议族是一组用于互联网通信的协议,包括TCP、IP、UDP、ICMP等协议。
TCP负责可靠的数据传输,IP负责寻址和路由选择,UDP用于无连接的数据传输,ICMP用于错误检测和网络状况通知。
2. 什么是MAC地址?答:MAC地址是网卡的物理地址,在以太网中唯一标识一个网络设备。
MAC地址由48位二进制数组成,通常以十六进制表示,格式为00-00-00-00-00-00。
3. 解释DNS的作用。
答:DNS(Domain Name System)将域名转换为IP地址的过程,使得用户可以通过域名访问互联网资源。
DNS解析使用了分布式数据库的技术,将域名与IP地址进行映射。
4. 什么是HTTP协议?答:HTTP(Hypertext Transfer Protocol)是一种基于请求与响应模式的应用层协议,用于传输超文本资源。
HTTP使用TCP作为传输协议,客户端发送请求给服务器,服务器返回响应给客户端。
5. 什么是ARP协议?答:ARP(Address Resolution Protocol)用于将IP地址解析为MAC 地址,通过发送ARP请求广播来获取目标设备的MAC地址,以便在局域网内进行通信。
三、题目三:服务器硬件1. 什么是RAID?常见的RAID级别有哪些?答:RAID(Redundant Array of Independent Disks)是一种磁盘阵列技术,将多个硬盘组合成一个逻辑单元,实现数据的冗余备份和性能提升。
(完整版)运维面试题(含答案)

(完整版)运维面试题(含答案)运维工程师面试题姓名: 答题时间:1.新安装MYSQL后怎样提升MYSQL的安全级别?A.修改mysql默认端口B.linux下可以通过iptables来限制访问mysql端口的IP地址C.对所有用户设置较复杂密码并严格指定对应账号的访问IP(可在mysql库中user表中指定用户的访问可访问IP地址)D.root特权账号的处理(建议给root账号设置强密码,并指定只允许本地登录)E.开启二进制查询日志和慢查询日志F.mysql安装目录及数据存储目录权限控制:给mysql安装目录读取权限,给mysql日志和数据所在目录读取和写入权限G.删除无用mysql账号和删除无用的数据库(安装好的mysql默认会有个test库,可将其删除)2.MYSQL的主从原理,怎么配置文件?整体上来说,复制有3个步骤:A.master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);B.slave将master的binary log events拷贝到它的中继日志(relay log);C.slave重做中继日志中的事件,将改变反映它自己的数据。
3.mysql主从复制的优点<1> 如果主服务器出现问题,可以快速切换到从服务器提供的服务;<2> 可以在从服务器上执行查询操作,降低主服务器的访问压力;<3> 可以在从服务器上执行备份,以避免备份期间影响主服务器的服务。
4.Mysql复制的基本原理过程(1)Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;(2)Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。
返回信息中除了日志所包含的信息之外,还包括本次返回的信息在Master端binary log文件的名称以及在Binary log中的位置;(3)Slave的IO线程收到信息后,将接收到的日志内容依次写入到Slave端的RelayLog 文件(mysql-relay-lin.xxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info 文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”(4)Slave的SQL线程检测到Relay Log中新增加了内容后,会马上解析该Log文件中的内容成为在Master端真实执行时候的那些可执行的查询或操作语句,并在自身执行那些查询或操作语句,这样,实际上就是在master端和Slave端执行了同样的查询或操作语句,所以两端的数据是完全一样的。
运维工程师面试题目

运维工程师面试题目【正文】一、系统运维的基础知识1.请简要介绍一下系统运维的定义和职责。
系统运维,全称系统运维工程师,是指负责维护、管理和监控计算机系统及相关的硬件和软件资源,确保系统正常运行和高效工作的专业人员。
其主要职责包括但不限于:- 配置和安装服务器、网络设备等硬件设备;- 安装和维护操作系统和应用程序;- 监控系统性能,并进行故障排除和问题解决;- 制定和执行数据备份和恢复策略;- 进行系统性能调优和优化。
2.请列举一些常见的服务器操作系统。
常见的服务器操作系统有:- Windows Server- Linux(如CentOS、Ubuntu、Red Hat等)- Unix- FreeBSD3.系统运维中,如何进行有效的日志管理?日志管理在系统运维中非常重要,可以采取以下措施进行有效管理:- 设置合适的日志级别,避免过多的冗余信息;- 定期对日志进行清理和归档,防止磁盘空间过载;- 配置日志轮转,避免单个日志文件过大;- 使用日志分析工具,及时监测和发现异常;- 建立日志备份策略,保证日志的安全可靠存储。
4.请介绍一下常见的负载均衡技术。
常见的负载均衡技术包括以下几种:- 硬件负载均衡:使用专用的负载均衡硬件设备,如F5、CiscoACE等;- 软件负载均衡:通过软件方式实现负载均衡,如Nginx、HAProxy 等;- DNS负载均衡:通过DNS解析将请求分发到多个服务器上;- 会话保持:确保用户的会话在同一台服务器上进行,避免切换导致错误。
5.在运维过程中,常见的安全策略有哪些?常见的运维安全策略包括:- 访问控制:采用权限管理,为不同的角色和用户分配不同的访问权限;- 防火墙:配置和管理防火墙规则,限制非法访问;- 定期更新和升级软件:及时修补系统和应用的安全漏洞;- 加密通信:采用HTTPS等加密协议确保数据传输的安全;- 监控和审计:运行安全监控工具,进行实时监测和异常处理。
二、网络运维与故障排查1.请解释什么是IP地址?IPv4与IPv6有什么区别?IP地址是指互联网协议地址,用于标识和定位计算机和网络设备。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、Linux如何挂载windows下的共享目录?mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456linux 下的server需要自己手动建一个后面的user与pass 是windows主机的账号和密码注意空格和逗号2、如何查看http的并发请求数与其TCP连接状态?netstat -n | awk ‘/^tcp/ {++b[$NF]}’ END {for(a in b) print a,b[a]}’还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024,不修改这里web服务器修改再大也没用。
若要用就修改很几个办法,这里说其中一个:修改/etc/security/limits.confsoft nofile 10240hard nofile 10240重启后生效3、如何用tcpdump嗅探80端口的访问看看谁最高?tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4″.”}’ | sort |uniq -c | sort -nr | head-5 4、如何查看/var/log目录下的文件数?ls /var/log/ -1R | grep “-” | wc -l5、如何查看Linux系统每个ip的连接数?netstat -n | awk ‘/^tcp/ {print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -rn6、shell下生成32位随机密码cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass7、统计出apache的access.log中访问量最多的5个ipcat access.log | awk ‘{print $1}’ | sort | uniq -c | sort -n -r | head -58、如何查看二进制文件的内容?我们一般通过hexdump命令来查看二进制文件的内容。
hexdump -C XXX(文件名) -C是参数不同的参数有不同的意义-C 是比较规范的十六进制和ASCII码显示-c 是单字节字符显示-b 单字节八进制显示-o 是双字节八进制显示-d 是双字节十进制显示-x 是双字节十六进制显示9、ps aux 中的VSZ代表什么意思,RSS代表什么意思?VSZ:虚拟内存集,进程占用的虚拟内存空间RSS:物理内存集,进程战用实际物理内存空间10、如何检测并修复/dev/hda5?fsck用来检查和维护不一致的文件系统。
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查11、介绍下Linux系统的开机启动顺序加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。
12、符号链接与硬链接的区别我们可以把符号链接,也就是软连接当做是windows系统里的快捷方式。
硬链接就好像是又复制了一份,举例说明:ln 3.txt 4.txt 这是硬链接,相当于复制,不可以跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。
ln -s 3.txt 4.txt 这是软连接,相当于快捷方式。
修改4,3也会跟着变,若删除3,4就坏掉了。
不可以用了。
13、保存当前磁盘分区的分区表dd 命令是以个强大的命令,在复制的同时进行转换dd if=/dev/sda of=./mbr.txt bs=1 count=51214、如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找?以下操作全部在命令行状态操作,不要在编辑状态操作。
在文本里移动到想要复制的行按yy 想复制到哪就移动到哪,然后按P 就黏贴了删除行移动到改行按dd删除全部dG 这里注意G一定要大写按行查找:90 这样就是找到第90行按字母查找/path 这样就是找到path这个单词所在的位置,文本里可能存在多个,多次查找会显示在不同的位置。
15、手动安装grubgrub-install /dev/sda16、修改内核参数vi /etc/sysctl.conf 这里修改参数sysctl -p 刷新后可用17、在1-39内取随机数expr $[RANDOM%39] +1RANDOM随机数%39取余数范围0-3818、限制apache每秒新建连接数为1,峰值为3每秒新建连接数一般都是由防火墙来做,apache本身好像无法设置每秒新建连接数,只能设置最大连接:iptables -A INPUT -d 172.16.100.1 -p tcp –dport 80 -m limit –limit 1/second -j ACCEPT19、FTP的主动模式和被动模式FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端在命令链路上用PORT 命令告诉服务器:“我打开了XX端口,你过来连接我”。
于是服务器从20端口向客户端的XX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,服务器在命令链路上用PASV 命令告诉客户端:“我打开了XX端口,你过来连接我”。
于是客户端向服务器的XX端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。
20、显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非空白字符的行grep “^#\{1,\}[^]” /etc/inittab21、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行grep “\:[0-9]\{1\}:” /etc/inittab22、怎么把脚本添加到系统服务里,即用service来调用?在脚本里加入#!/bin/bash# chkconfig: 345 85 15# description: httpd然后保存chkconfig httpd –add 创建系统服务现在就可以使用service 来start or restart23、写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面跟5个随机字符#!/bin/bash#description: useraddfor i in `seq -f”%02g” 1 20`;douseradd user$iecho “user$i-`echo $RANDOM|md5sum|cut -c 1-5`”|passwd –stdinuser$i >/dev/null 2>&1done24、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线#!/bin/bashfor ip in `seq 1 255`doping -c 1 192.168.1.$ip > /dev/null 2>&1if [ $? -eq 0 ]; thenecho 192.168.1.$ip UPelseecho 192.168.1.$ip DOWNfi}&donewait25、写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出其它任何键可以通过vim打开这个指定的脚本[root@localhost tmp]# cat checksh.sh#!/bin/bashread -p “please input check script-> ” fileif [ -f $file ]; thensh -n $file > /dev/null 2>&1if [ $? -ne 0 ]; thenread -p “You input $file syntax error,[Type q to exit or Type vim to edit]” answercase $answer inq | Q)exit 0;;vim )vim $file;;*)exit 0;;esacfielseecho “$file not exist”exit 1fi26、写一个脚本,要求如何:创建一个函数,能接受两个参数:1)第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置;2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本;3)如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则返回0给调用脚本,否则,返回52给调用脚本;[root@localhost tmp]# cat downfile.sh#!/bin/bashurl=$1dir=$2download(){cd $dir >> /dev/null 2>&1if [ $? -ne 0 ];thenread -p “$dir No such file or directory,create?(y/n)” answerif [ “$answer” == “y” ];thenmkdir -p $dircd $dirwget $url 1> /dev/null 2>&1elsereturn “51”fifiif [ $? -ne 0 ]; thenreturn “52”fi}download $url $direcho $?27、写一个脚本,详细需求如下:1、创建一个函数,可以接受一个磁盘设备路径(如/dev/sdb)作为参数;在真正开始后面步骤之前提醒用户有危险,并让用户选择是否继续;而后将此磁盘设备上的所有分区清空(提示,使用命令dd if=/dev/zero of=/dev/sdb bs=512 count=1实现,注意其中的设备路径不要写错了;如果此步骤失败,返回67给主程序;接着在此磁盘设备上创建两个主分区,一个大小为100M,一个大小为1G;如果此步骤失败,返回68给主程序;格式化此两分区,文件系统类型为ext3;如果此步骤失败,返回69给主程序;如果上述过程都正常,返回0给主程序;2、调用此函数;并通过接收函数执行的返回值来判断其执行情况,并将信息显示出来;local Darray=(`ls /dev/sd[a-z]`)for i in ${Darray};do[[ “$i” == “$1” ]] && Sd=$i &&breakdoneelsereturn66fi#当匹配成功,进入选择,告诉用户,是否继续,输错的话进入无限循环,当用户选择Y,则清空目标分区,且跳出while循环while :;doread -p “WarningThis operation will clean $Sd data.Next=y,Quit=n [y|n]:” Choicecase $Choice iny)dd if=/dev/zero of=$Sd bs=512 count=1 &> /dev/null &&break || return 67 ;;n)exit 88 ;;*)echo “Invalid choice,please choice again.” ;;esacdone#使用echo传递给fdisk进行分区,如果此命令失败,则跳转出去,错误值68,需要注意的是,有时候这个返回值很诡异,笔者之前成功与否都是返回的1,后来重启之后,就好了,如果慎重的话,可以对创建的分区,进行判断,不过就需要使用其他工具截取相关字段了,虽有些小麻烦,但无大碍echo-e “n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n”|fdisk /dev/sdb&> /dev/null || || return 68#格式化之前,让内核重新读取磁盘分区表,值得注意的是,有的系统版本,使用partprobe无效,譬如笔者的环境是rhel5.8,而rhel6.0以后,这个命令就很危险了,而使用partx -a /dev/sdb则效果更好…此项需慎重,如果格式化失败,则告知把失败的分区定义成变量,且跳出函数,并带出错误值69`partprobe`Part=`fdisk -l /dev/$Sd|tail -2|cut -d” ” -f1`for M in ${Part};domke2fs -j $M &> /dev/null && ErrorPart=$M &&return 69donereturn 0}#下面代码,调用函数,接收函数返回值,根据返回值进行判断哪里出错。