一.基础面试
(一).linux面试题
1.写一个脚本查找最后创建时间是三天前,后缀是*.log的文件并删除
find . -ctime +3 -name ‘*.log’|rm -rf
2.统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
cat access.log|awk’{print$1}’|uniq -c|sort -rn|head -10
3.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log。
tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log
tcpdump -w test host 192.168.1.1 and tcp port 22 > tcpdump.log
4.查出哪个IP地址连接最多
netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -
netstat -na|grep SYN|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r
5.对服务器各种状态下的连接数分组并查询得到结
netstat -n|awk ‘/^tcp/{++S[$NF]} END {for a in S } print a,S[a]’
netstat -n|awk ‘/^tcp/{++S[$NF]} END{for(a in S) print a,S[a]}’
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
6.查看当前并发访问数:
netstat -an | grep ESTABLISHED
7.有文件file1
a.请用shell查询file1 里面空行的所在行号
awk ‘KaTeX parse error: Expected group after '^' at position 4: 0~/^̲/{print NR}’ file1
grep -n “^$” file1
b.编写ShellScript查询file1 以abc结尾的行
grep “abc$” file1
sed -n ‘/abc$/p’ file1
c.打印出file1 文件第1 到第3 行
sed -n ‘1,3p’ file1
8.显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非空白字符的行。
grep “#{1,}[]” /etc/inittab
9.显示 /etc/inittab 中包含了:一个数字:(即两个冒号中间一个数字) 的行
grep “:[0-9]{1}:” /etc/inittab
10.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
iptables –t nat -A PREROUTING -d 192.168.2.1 -p tcp –dport 80 -j REDIRECT --to 8080
11.仅列出/test目录下的所有目录,请写出完整命令
ls /test -l |grep “^d”
12.查看/var/log目录下的文件数
ls /var/log/ -1R | grep “-” | wc -l
13.请问如何用iptables工具阻断来自 192.168.0.1的所有网络连接
iptable -IINPUT -s 192.168.0.1 -jDROP
14.如何查看占用端口8080 的进程
netstat -anpt|grep 8080
lsof -i:8080
15.shell下32位随机密码生成。
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass
16.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
tcpdump -nn tcp port 80
17.请写出Tomcat程序的主配置文件名
server.xml
18.umask 022 ,请描述该命令的含义
umask设置文件或目录的缺省权限,umask022表示目录的缺省权限为755,文件的缺省权限为644
19.在排除 /test/a目录的条件下,归档并gzip压缩整个/test目录,请写出完整的操作命令t
tar -zcvf backup.tar.gz --exclude /test/a/test
20.查询并列出 test进程所打开的当前所有文件,请写出完整的操作命令
lsof -c test
21.查询并列出test.rpm包里所包含的所有文件,请写出完整的操作命令
rpm -qpl test.rpm
22.将 /test/a目录建立软链接到 /test/b目录,请写出完整的操作命令
ln -s /test/a test/b
23.设置当前用户环境中 test变量为 123并使之立即生效,请写出完整操作命令
exporttest=123
24.设置系统当前运行级别中 test服务状态为启动时自动加载,请写出完整操作命令假设运行级别为3级别
chkconfig --level3 test on
25.在11月份内,每天的早上6点到12点,每隔2小时执行一次/usr/bin/httpd.sh怎么实现
0 6-12/2 * 11 * /usr/bin/httpd.sh
26.手动安装grub
grub-install /dev/sda
27.修改内核参数
vi /etc/sysctl.conf 这里修改参数
sysctl -p 刷新后可用
28.在1-39内取随机数
expr $[RANDOM%39] +1
RANDOM随机数
%39取余数范围0-38
- 如何让history命令显示具体时间?
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"
export HISTTIMEFORMAT
重新开机后会还原,可以写/etc/profile
30.限制apache每秒新建连接数为1,峰值为3
每秒新建连接数 一般都是由防火墙来做,apache本身好像无法设置每秒新建连接数,只能设置最大连接:
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit --limit 1/second -j ACCEPT
31.查看 http 的并发请求数与其 TCP 连接状态
netstat -n | awk ‘/^tcp/ {++b[$NF]}’ END {for(a in b) print a,b[a]}’’
32.查看当前系统每个ip的连接数
netstat -n | awk ‘/^tcp/ {print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -rn
33.用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
34.Linux如何挂载windows下的共享目录
mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456
linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号
35.保存当前磁盘分区的分区表
dd 命令是以个强大的命令,在复制的同时进行转换
dd if=/dev/sda of=./mbr.txt bs=1 count=512
36.怎么把脚本添加到系统服务里,即用service来调用
在脚本里加入
#!/bin/bash
chkconfig: 345 85 15
description: httpd
然后保存
chkconfig httpd add 创建系统服务
现在就可以使用service 来 start or restart
37.如何在文本里面进行复制.粘贴,删除行,删除全部,按行查找和按字母查找。
以下操作全部在命令行状态操作,不要在编辑状态操作。
在文本里 移动到想要复制的行 按yy 想复制到哪就移动到哪,然后按P 就黏贴了
删除行 移动到改行 按dd
删除全部 dG 这里注意G一定要大写
按行查找 :90 这样就是找到第90行
按字母查找 /path 这样就是 找到path这个单词所在的位置,文本里可能存在多个,多次查找会显示在不同的位置。
38.如何查看二进制文件的内容
我们一般通过hexdump命令 来查看二进制文件的内容。
hexdump -C XXX(文件名) -C是参数 不同的参数有不同的意义
-C 是比较规范的 十六进制和ASCII码显示
-c 是单字节字符显示
-b 单字节八进制显示
-o 是双字节八进制显示
-d 是双字节十进制显示
-x 是双字节十六进制显示
39.Linux 系统的开机启动顺序
加载BIOS>读取MBR>Boot Loader>加载内核>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)>init进程执行rc.syninit>启动内核模块>执行不同级别运行的脚本程序>执行/etc/rc.d/rc.local(本地运行服务)>执行/bin/login,就可以登录了。
40.ps aux 中的 VSZ代表什么意思,RSS代表什么意思
VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间
41.检测并修复/dev/hda5
fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查
42.符号链接与硬链接的区别
我们可以把符号链接,也就是软连接 当做是 windows系统里的 快捷方式。
硬链接 就好像是 又复制了一份.
ln 3.txt 4.txt 这是硬链接,相当于复制,不可以跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。
ln -s 3.txt 4.txt 这是软连接,相当于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了。不可以用了。
43.FTP 的主动模式和被动模式
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT 命令告诉服务器:“我打开了XX端口,你过来连接我”。于是服务器从20端口向客户端的 XX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV 命令告诉客户端:“我打开了XX端口,你过来连接我”。于是客户端向服务器的XX端口 发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完 全不同。
(二).mysql面试题
1.Mysql客户端工具中,请问如何查询当前所有的连接进程信息
mysql -uuser -ppassword -e “showprocesslist”
(三).脚本面试题
1.批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现。
eg1:
echo stu{01…10}|tr " " “\n”|sed -r ‘s#(.*)#useradd \1 ; pass=pass"|passwd --stdin \1; echo -e "\1 \t echo "$pass"
">>/tmp/oldboy.log#g’|bash
eg2:
echo stu{11…12}|xargs -n1 useradd ;echo stu{11…12}:cat /dev/urandom|tr -dc 0-9|fold -w8|head -1
|xargs -n1|tee -a pass.txt|chpasswd
eg3:
echo stu{21…30} | tr ’ ’ ‘\n’ | sed -e ‘s/^/useradd /’ -e ‘s/stu[0−9]{2}$/\1 && echo “\1:echo $[$RANDOM**3] | cut -c1-8
” | tee -a userInfo.txt | cut -d: -f2 | passwd --stdin \1/’ | bash
eg4:
echo stu{01…10} |tr ’ ’ ‘\n’|sed -rn ‘s@^(.*)$@useradd \1 ; echo $RANDOM|md5sum|cut -c 1-8 >/data/\1;cat /data/\1|passwd --stdin \1@gp’|bash
2.写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面跟5个随机字符
#!/bin/bash
for i in seq -f"%02g" 1 20
do
useradd user$i
echo “user$i-echo $RANDOM|md5sum|cut -c 1-5
”|passwd ?Cstdinuser$i >/dev/null 2>&1
done
3.写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
#!/bin/bash
for ip in seq 1 255
do
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
done
wait
4.写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出其它任何键可以通过vim打开这个指定的脚本
[root@localhost tmp]# cat checksh.sh
#!/bin/bash
read -p "please input check script-> " file
if [ -f $file ]; then
sh -n $file > /dev/null 2>&1
if [ $? -ne 0 ]; then
read -p "You input $file syntax error,[Type q to exit or Type vim to edit]" answer
case $answer in
q | Q)
exit 0
;;
vim )
vim $file
;;
*)
exit 0
;;
esac
fi
else
echo "$file not exist"
exit 1
fi
5.编写个shell 脚本将/usr/local/test 目录下大于100K的文件转移到/tmp目录下
find /usr/local/test -type f -size +100k -exec mv {} /tmp/
for i in i /tmp/;done
or
#!/bin/bash
filelist=$(ls/usr/local/test -l|grep “^-”|awk ‘{print$9}’)
filepath="/usr/local/test"
for file in $filelist
do
filesize=$(du -s file |awk ‘{print$1}’)
if [ $file size -gt 100];then
mv file /tmp/
fi
done
6.简述raid0 raid1 raid5 三种工作模式的工作原理及特点。
RAID0:带区卷,连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,RAID0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID0不能应用于数据安全性要求高的场合。
RAID1:镜像卷,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据,不能提升写数据效率。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1可以提高读取性能。RAID1是磁盘阵列中单位成本最高的,镜像卷可用容量为总容量的1/2,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
RAID5:至少由3块硬盘组成,分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据(最多允许1块硬盘损坏)。所以raid5可以实现数据冗余,确保数据的安全性,同时raid5也可以提升数据的读写性能。
RAID10:高可靠性与高效磁盘结构
一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。 主要用于容量不大,但要求速度和差错控制的数据库中。
7.oracle 数据库备份方式
从物理与逻辑的角度分类:
物理备份:对数据库操作系统的物理文件(如数据文件.控制文件.日志文件等)的备份,物理备份又分为冷备份和热备份,前者是在关闭数据库的时候进行的,后者对正以归档日志方式进行的数据库备份,可以使用RMAN进行数据库的物理备份
逻辑备份:对数据库逻辑组件(如表.表空间.存储过程等数据库对象)的备份逻辑备份的手段很多,如exp.数据泵expdp.数据库闪回技术等
从数据库的备份策略角度分类:
完全备份:每次对数据库进行完整备份
增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。
差异备份:备份那些自从上次完全备份之后被修改过的文件。
8.请写出apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前所支持的模块,并且查看是工作在哪种模式下?
prefork(多进程,每个子进程产生一个线程)和worker(多进程多线程,每个进程生成多个线程)
其主要工作方式是:当Apache服务器启动后,mpm_prefork模块会预先创建多个子进程(默认为5个),每个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork模块再将请求转交给子进程处理,并且每个子进程同时只能用于处理单个请求。如果当前的请求数将超过预先创建的子进程数时,mpm_prefork模块就会创建新的子进程来处理额外的请求。Apache总是试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求。这样客户端的请求就不需要在接收后等候子进程的产生。
由于在mpm_prefork模块中,每个请求对应一个子进程,因此其占用的系统资源相对其他两种模块而言较多。不过mpm_prefork模块的优点在于它的每个子进程都会独立处理对应的单个请求,这样,如果其中一个请求出现问题就不会影响到其他请求。Prefork在效率上要比Worker要高,但是内存使用大得多不擅长处理高并发的场景。
Worker模式(多线程多进程):
和prefork模式相比,worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。
总的来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。
可以通过命令httpd -M或httpd -l可以查看apache当前的模块
可以通过命令httpd -V查看是工作在哪种模式下
9.你使用过监控软件吗?说说其特点
使用nagios对服务器进行监控,其特点侧重于对检测项的状态监控,主要通过nrpe实现对远程主机的监控,但也可以通过snmp对设备(如路由器.交换机)进行监控,可实时实现手机短信.电子邮件.MSN.飞信报警。
使用cacti对服务器进行监控,其特点侧重性能和流量监控并通过图表显示,主要通过snmp协议收集监测项数据,可实时实现手机短信.电子邮件.
使用zabbix对服务器进行监控,zabbix是完全开源的工具,整合了cacti和nagios等特性。
zabbix可以对主机的性能监控.网络设备性能监控.数据库.FTP等通用协议监控.多种告警方式.详细的报表图表绘制
支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)
支持分布式,能集中展示.管理分布式的监控点,扩展性强
可以自己开发完善各类监控(根据相关接口编写程序实现),编写插件容易,可以自定义监控项,报警级别的设置。
数据收集,支持snmp(包括trappingandpolling),IPMI,JMX,SSH,TELNET;
10.列出当前系统中所有的网络连接(包含进程名),请写出完整操作命令
netstat -antuple
-a显示所有socket,包括正在监听的。
-n以网络IP地址代替名称,显示出网络连接情形。
-t显示TCP协议的连接情况
-u显示UDP协议的连接情况。
-p显示指定协议信息。-l或–listening显示监控中的服务器的Socket。
-e显示以太网统计。此选项可以与-s选项结合使用。
(四).第二部分综合应用
1.请写出5个你常用的系统或网络维护工具的名称
rhel centos ubuntu
iotop 用于检查I/O的使用情况
htop 实质上是top的一个增强版本。它更容易对进程排序。
ping
traceroute
2.在nslookup使用中,请问如何查看test.com域中的MX记录
#nslookup
settype=mx
test.comc.ftp,ssh,smtp,pop3,https,
请写出这些服务的默认端口
ftp:21
ssh:22
smtp:25
pop3:110
https:443
3.请简要描述Linux系统下源代码编译方式安装软件的大致步骤
tar释放源码包
cd切换到解压目录
./configure配置
make编译
makeinstall安装
- tcp/ip七层模型
应用层(Application):
网络服务与最终用户的一个接口。
协议有:HTTP/FTP/TFTP/SMTP/SNMP/DNS/TELNET/HTTPS/POP3/DHCP
表示层(PresentationLayer):
数据的表示.安全.压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG.ASCll.DECOIC.加密格式等
会话层(SessionLayer):
建立.管理.终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层(Transport):
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCPUDP,数据包一旦离开网卡即进入网络传输层
网络层(Network):
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMPIGMPIP(IPV4IPV6)ARPRARP
数据链路层(Link):
建立逻辑连接.进行硬件地址寻址.差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层(PhysicalLayer):
5.你常用的Nginx模块,用来做什么
rewrite模块,实现重写功能
access模块:来源控制
ssl模块:安全加密
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module模块实现代理
ngx_http_upstream_module模块实现定义后端服务器列表
ngx_cache_purge实现缓存清除功能
三.运维时的故障问题及其解决办法
1.开发反映需要给开发新建一个用户登陆,让开发能到服务器上,对自己的家目录下的文件夹做操作,
我就想也没想的就给他创建用户了,设置了密码,然后告诉他可以了,但是没过一会儿,他又来找我说不行,
我说不可能,结果自己亲自试了不行,于是就查找原因,先查看了他的用户,创建的没问题,没有设置成nologin,是允许登陆的,
于是就去查看服务器的访问列表,果然在里面被限制了,于是加到了白名单里面就好了。
这本来就是一个很简单的操作,但是由于我是新接手的运维工作,对于服务器也不熟悉,才会出现这种小问题。
2.一直以来,在处理linux服务器的过程中,经常会遇到一个问题,有时候kill掉进程之后,端口被占用,新的进程一直起不来,等几十秒之后才能正常启动。所以一直也没专门来处理这个问题。
最近一周频繁出现这样的情况,等待很久也不能启动新进程,总是提示端口被占用,只有重启机器才能恢复正常,这个简直是个灾难,所以下定决心要解决这个问题。
3.服务器开不了机怎么解决一步步的排查
硬件有无报警灯提示
主面板液晶面板有没有提示什么报错信息,例如raid错误的提示信息
先排除硬件还是软件问题
4.Linux开机模式
0-表示关闭系统(千万不要把默认设置成0哦!)
1-单用户模式
2-多用户模式,没有NFS服务
3-多用户文本模式
5-图形模式
6-系统重新启动
过修改/etc/inittab,使系统在启动时进入不同模式。
5.Linux系统中病毒怎么解决
找到病毒文件然后删除;中毒之后一般机器cpu.内存使用率会比较高,机器向外发包等异常情况,排查方法:
linux服务器流量剧增,用iftop查看有连接外网的情况。netstat连接的外网ip和端口。#top命令找到cpu使用率高的进程,一般病毒文件命名都比较乱
#可以用ps aux查看是否有不明进程,找出病毒文件的位置
#rm -f命令删除病毒文件
#检查计划任务.开机启动项和病毒文件目录有无其他可疑文件等
chkconfig --list|grep “3: on”
服务器启动级别是3的,检查一下了开机启动项,没有特别明显的服务。然后检查了一下开机启动的一个文件,more /etc/rc.local
6.发现一个病毒文件你删了他又自动创建怎么解决
ps axu一个个排查,方法是查看可疑的用户和系统相似而又不是的进程找出进程可疑。
杀掉所有与病毒相关的进程,然后删掉病毒这个可执行文件,最后删除病毒创建的文件
7.日志文件很大,怎么把他们切分
针对这些日志按每或每周进行分割,例如只保留一周的数据,用logrotate来实现日志的轮替。或者编写日志文件大小监控脚本,定期检查该日志文件的大小,接近设定大小时,进行轮换。
如果日志文件存在并且很大,可以用Linux下的split进行文件分割:
模式一:指定分割后文件行数
Split:按指定的行数截断文件格式:split [-n] file [name]参数说明:-n:指定截断的每一文件的长度,不指定缺省为1000行file:要截断的文件name:截断后产生的文件的文件名的开头字母,不指定,缺省为x,即截断后产生的文件的文件名为xaa,xab…直到xzz
模式二:指定分割后文件大小
命令:split -b 10m server.logs erver_part_
其中server.log是要分割的文件,server_part_是分割文件的前缀。
对二进制文件我们同样也可以按文件大小来分隔
8.查了一些资料,了解了如何查看端口占用情况和处理方法。
①.使用netstat命令查看端口占用情况。netstat -tln
②.我们还需要知道是什么程序占用,加上-p参数 netstat -tlnp
③.如果比较多的时候我们也可以用grep过滤一下 然后找到端口进程 netstat -tlnp|grep 10221
④.然后kill掉占用端口的进程即可,正常情况下就可以启动新进程了,好了,这样我们就解决了令人烦恼的端口占用问题了。
9.有台同事在处理Linux服务器时,他移走了一块硬盘,然后就直接启动红帽RHEL5,发现进了Emergency模式,焦急中他连忙跑过来找我;我第一句就是问他:你改动了硬件没,他说他移走了硬盘后就直接启动了,不是跟windows2003一样嘛,有什么问题?我都无语了,没办法 ,耐心跟他讲解 linux下/etc/fatab的作用及语法,最后告诉他可以在Emergency模式下输入root密码进入此模式,然后用mount –o remount,rw /将/分区设置成可读写,编辑/etc/fatab,将移除的硬盘用#号屏蔽掉后重启服务器,故障解除。
10.Linux/unix应该注意的事项:
①服务器中最容易坏掉的是风扇,如果是电信机房要注意检查;如果是自己内网服务器机房,平时注意将温度控制在19度以下即可;
②DELL的机器的RAID卡放电和充电都是正常现象,如果有Nagios报警也是正常的;
③有时间就多巡视下机房,检查下服务器的硬盘灯指示情况;
④注意网线不要松脱了,不然你使用Heartbeat的服务器就很麻烦了;
⑤平时如果有时间和机会,可以作一些关于Keepalived和Heartbeat的模拟故障实验,保证其高可用性。
⑥虚心学习网络相关方面的知识和疑难问题,有时绝大多数的问题是网络方面引起来的:另外,电信一般会封掉80端口的,就不要在这些问题上结了。
遇到服务器故障时,一定要胆大心细,谨慎操作,因为有时是线上环境,稍有不慎就灰飞烟灭了,多总结多思考,这样才能成长得更快。
11.修复MBR扇区故障
故障原因:
①:一些病毒.***等造成的破坏。
②:不正确的分区操作.磁盘读写的误操作。
故障现象:
①:无法加载OS开机后出现黑屏。
②:找不到引导程序启动过程中突然中断。
解决方案:
①:应提前作好备份文件
②:以RHEL5安装光盘引导进入急救模式
③:从备份文件中恢复
Example:
1).备份MBR扇区数据
dd if=/dev/sda of =/backup/sda.mbr.bak bs=512 count=1
2).模拟MBR被破坏额故障
dd if=/dev/sda of=/dev/sda bs=512 count=1
3).RHEL5关盘引导进入到急救模式
boot:linux resure
4).从备份文件中恢复MBR扇区
dd if=/tempdir/sda.mbr.bak of=/dev/sda bs=512 count=1
12.修复GRUB引导故障
故障原因:
①:MBR中的GRUB引导程序遭到破坏
②:grub.conf文件丢失.引导配置有误
故障现象:
系统引过程中停止不前显示―grub>‖提示符
解决方案:
手动输入引导命令
进入急救模式从备份中恢复grub.conf配置文件
向MBR扇区中重建grub程序
Example:
1).在―grub>‖提示符后手动输入引导命令,
成功进入系统后恢复或重建 grub.conf 配置文件
grub> root (hd0,0)
grub> kernel /vmlinuz-2.6.9-5.EL ro root=LABEL=/ rhgb quiet
grub> initrd /initrd-2.6.9-5.EL.img
grub> boot
[root@localhost ]# cd /boot/grub/
[root@localhost ]# cp grub.conf.bak grub.conf
2).进入急救模式从备份文件中恢复 grub.conf文件,向MBR扇区中重建GRUB程序
sh-3.1# chroot /mnt/sysimage
sh-3.1# cd /boot/grub/
sh-3.1# cp grub.conf.bak grub.conf
sh-3.1# grub-install /dev/sda
13.etc/inittab文件丢失
故障原因:
inittab文件被误删除或者存在配置上的问题
故障现象:
①:启动中提示 ―… INIT: No inittab file found‖
②:系统停滞无法完成初始化
解决方案:
①:进入急救模式从备份文件中恢复
②:在急救模式中重新安装 initscripts 软件包
rpm -ivh --aid --force --replacepkgs initscripts-8.45.14.EL.i386.rpm
14.etc/fstab文件丢失
故障原因:
fstab文件被误删除或者存在配置错误
故障现象:
①:启动中提示 ―… /etc/fstab: No such file or directory‖
②:系统停滞无法完成初始化
解决方案:
①:进入急救模式手动查找并挂载根分区查找逻辑卷
lvm vgscan
激活指定的逻辑卷
lvm vgchange -ay /dev/VolGroup00
②:恢复或重建fstab配置文件
15.忘记root用户的密码
故障现象:
①:无法进行需要root权限的管理操作
②:若没有其他可用帐号将无法登录系统
解决方案:
①:引导进入单用户模式runlevel=1然后重设密码
grub > kernel … single 或 s 或 1
②:进入急救模式然后重设密码
16.软件包类故障 —— rpm数据库损坏
故障原因:
非正常关机.误删除运行中的程序文件
RPM数据文件被误写或删除
故障现象:
不能正常查询rpm包信息 rpm -ql ; rpm -qa …
无法安装.升级或卸载软件包等 rpm -U ; rpm -i…
解决方案
重建RPM数据库
重建命令rpm --rebuilddb 或 rpm --initdb
17.磁盘资源耗尽故障
故障原因:
①:磁盘空间已被大量的数据占满空间耗尽
②:虽然还有可用空间但文件数i节点耗尽
故障现象:
①:无法写入新的文件提示―… : 设备上没有空间‖
②:部分程序无法运行甚至系统无法启动
解决方案
①.清理磁盘空间删除无用.冗余的文件
②.转移或删除占用大量i节点的琐碎文件
③.进 入单用户模式.急救模式进行修复
④.用户设置磁盘配额—系统管理中必做的
18.排除故障的原则
当发生问题时系统只会显示当前的症状而不会提示问题出在哪里
所以只能尽量收集证据来定义系统到底发生了什么问题
除了收集资料外还要定义好系统里有哪些功能可以正常运行
相问资料收集完成后我们才能假设可能发生问题的原因是什么
可以查看日志文件来证明是不是某个系统发生了问题
如果要修改配置文件那么修改前最好先备份
19.界面故障时
排除故障的流程
当X界面故障时,千万不能在run level 5下排除故障,要在run level 3的环境中排除故障
vi /etc/inittab
#修改id:5:initdefault为id:3:initdefault。
执行system-config-display命令,看看能不能显示图形界面的显示器设置工具
如果不能显示表示问题可以出现在显卡那我们可以
X -probeonly #检测显卡
依据/etc/X11/xorg.conf的设置测试能否启动X服务器检测结果记录在/var/log/Xorg.0.log
如果显卡没有问题的话则检查/home和/tmp和/var目录是不是满的
如果以上都不是可以查看xfs服务有没有启动
service xfs status #查看xfs服务的状态
20.网络故障时排除故障的流程
首先确认是不是名称解析出了问题
dig hostname
是不是IP或者网卡的问题
ifconfig #查看网卡的设置和网卡的IP地址
若网卡正常还有正确获取IP地址则可能是Default gateway网关不正确
如果以上设置都正确则看看内核里是否载入了网卡驱动
cat /etc/modprobe.conf #查看是否载入网卡驱动
在这个文档中可以确定是否载入了正确的网卡驱动并确认网卡有没有对应到eth开头的别名
如果以上都不是则重新启动网卡看看有没有错误提示
ifdown eth0 #停用网卡
ifup eth0 #启动网卡
在正常情况下无论是停用或是启动系统都不会提示任何信息
21.开机故障时排除故障的流程
首先查看是不是开机管理程序出了问题
在RHEL4中会使用GRUB当作默认的开机管理程序
接下来确认有没有正确的载入内核
开机时发生panic则表示根目录没有挂载成功
检查/sbin/init设置有没有错误
检查/etc/inittab设置有没有错误
并且检查根目录有没有损坏
如果/etc/rc.d/rc.sysinit执行不成功则有可能是
/bin/bash文件损坏
/etc/fstab设定有误
都不是以上问题的话则检查/etc/rc.d/rc文件
检查/etc/rc.d/rcn1-6.d有没有问题
22.文件系统故障时,排除故障的流程
文件系统故障,通常是因为电脑宕机或不正常关机
当文件系统故障时,先卸载文件系统
#fsck –y 来测试指定的文件系统
当文件系统修复后,再挂载文件系统
#fsck 可以用来测试并修复Linux的文件系统
修复文件系统,全程文字记录
umount /home #卸载文件系统
ls /home #查看目录是不是空的确定是否被卸载
fsck -y /dev/sda8 #检查并修复文件系统对应的文件
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/home: clean, 31/130560 files, 32156/522080 blocks
mount /dev/sda2 /home #挂载修复完成的文件系统
ls /home #查看是否修复成功
apache lost+found soft tmail tmail_v4.5.1_release.tar www
23.Run-levels故障时如何修复
当Run-level发生问题时必须进入Single user mode单用户模式来修复单用户模
式共分以下三种
Runlevel 1进入GRUB菜单后按下a键在最后输入空格和1
执行init后 >> /etc/rc.sysinit初始化文系统 >> /etc/rc1.d/*
Runlevel S当出现Welcome to Red Hat时挡下I键然后一个一个的问我们要不要
启用某些服务
执行init后 >> /etc/rc.sysinit初始化文件系统
Runlevel emergency通常/etc/fstab设定错误时会自动进入
执行init后 >> /etc/rc.sysinit的重要程序不会全部执行即sulogin模式
我们可以模拟一下错误在/etc/fstab文件里随便填写一个不存在的分区和挂载点系统启动
时会提示错误并让我们输入root密码进入sulogin模式注意在sulogin模式下所有命
令都必须使用绝对路径因为它没有环境变量在这里就不做示范了。
24.什么是Rescue Mode救援模式
当一个目录所在的文件系统损坏,或者是开机管理程序被破坏的时候,会导致不能通过硬盘开机
所以我们只能用光盘开机
使用RHEL4或RHEL5中的第一张光盘
也可以用第一张光盘里images目录下的boot.iso刻一张光盘作为启动盘
也可以使用第一张光盘里images目录下的diskboot.img复制到U盘里面
开机过程中,会把光盘或者U盘里开机必要的文件载入到内存,成为一个可以开机的操作系统
我们才能通过指令进入救援模式
救援模式会尝试找到根目录所在的文件系统,并把根目录挂载到/mnt/sysimages目录里
模拟开机管理程序被破坏时进入救援模式
#dd if=/dev/zero of=/dev/sda bs=446 count=1
意思是把/dev/zero复制到/dev/sda文件里去也就是把/dev/sda的前446b改成0来模
拟开机管理程序被破坏。
现在从BIOS里设置用光盘或者U盘来开机,保存并退出。
当光盘开机到boot的时候,输入
Boot:linux rescue
#进入救援模式
#grub-install /dev/sda
#修复开机管理程序
会提示错误/sbin/grub:Not found
这是因为所有的文件系统都被挂载到/mnt/sysimages了
#chroot /mnt/sysimage/
#将根目录设置为/mnt/sysimage/
#grub-install /dev/sda
#修复开机管理程序
#exit #第一个exit表示退出chroot
#exit #退出救援系统然后就可以正常使用硬盘开机了
模拟根目录所在的文件系统损坏的时候如何修复
根目录所在的文件系统损坏不一定是指文件系统真的坏掉了,有可能是系统找不到根目录
所以会认为根目录所在的文件系统损坏我们可以
#vi /boot/grub/grub.conf
把kernel这一行的/rhgb quiet删掉,重启时系统就提示找不到根目录。
开机时会提示错误信息Kernel panic – not syncing:Attempted to kill init
可以在这个错误信息上面找找看有没有相关的错误提示解决方法
进入GRUB菜单后,按下a键,在最后输入删掉的信息,或者要设定的信息,在LABLE=后面
输入/表示要把LABLE值等于/的目录当成是根目录并挂载,这样就可以启动了。
linux启动过程及troubleshooting
Linux系统启动过程大致按照如下步骤进行,这是一个简述
第一阶段BIOS启动引导阶段
在该过程中实现硬件的初始化以及查找启动介质
从MBR中装载启动引导管理器GRUB并运行该启动引导管理
第二阶段GRUB启动引导阶段
装载 stage1
装载 stage1.5
装载 stage2
读取 /boot/grub.conf 文件并显示启动菜单
装载所选的 kernel 和 initrd 文件到内存中
第三阶段内核阶段
运行内核启动参数
解压 initrd 文件并挂载 initd 文件系统装载必须的驱动
挂载根文件系统
第四阶段 Sys V init 初始化阶段
启动 /sbin/init 程序
运行 rc.sysinit 脚本设置系统环境启动 swap 分区检查和挂载文件系统
读取 /etc/inittab 文件运行在 /et/rc.d/rc<#>.d 中定义的不同运行级别的服务初始化脚本
打开字符终端 1-6 号控制台 / 打开图形显示管理的 7 号控制台
25.启动
①.mbr损坏或丢失. 进入RESCUE模式grub-install
②.启动时所需的配置文件不正确
#要对文件的内容与格式熟悉
/boot/grub/grub.conf
/etc/inittab
/etc/fstab
③.启动系统时所用的文件或目录丢失
eg: mount ,bash,inittab,init ,/initrd ,/proc
1).mountbash被替换或删除。 进入RESCUE模式网络重新安装mount,bash包
2)./sbin/init 丢失或替换。此文件在SysVinit*包内此包还包括如下文件/sbin下面的
halt,poweroff,init,runlevel,reboot,shutdown等
init丢失时(a).直接启动时会进入bash2.05#只读shell
④.用单用户进入如下提示
s 😒 no such file or directory
kernel panic : Attempted to kill init
修复如mount的修复
⑤.initscripts*包
启动的相关文件:/etc/inittab,/etc/rc.d,/etc/rc.d/rc,rc.sysinit,
/etc/sysconfig/* ,/etc/sysclt.conf, /sbin/ifup,/sbin/ifdown
/sbin/service
inittab丢失 INITno inittab file found.
Enter runlevel:
#/etc/rc.d ,/etc/rc.d/rc 丢失
用reboot,shutdown,init 6 命令重启时有如下明显提示
INIT : can not execute “/etc/rc.d/rc”
INIT: no more processes left in this runlevel
按电源重启系统可以到达login界面
Kernel 2.4.21-15.EL on an i686
(none)login :
可以登录但会提示
modprobe : modprobe : Can’t locate module Char-major-10-224
login(PAM-unix)[22] Session ipened for user root by (uid=0)
-bash: Command not found
此时没有网络不能修复主要提示在重启的时候进入rescue模式
修复后可正常使用/etc/rc.d丢失重新安装initscripts*包登录时
仍会有提示但常使用。
#/etc/rc/rc.sysinit 为系统启动时所用的第一个脚本若丢失
系统启动时
INIT : can’t execute /etc/rc.d/tc.sysinit not found
及其它提示
#/sbin/ifup,/sbin/ifdown 如果丢失网络将无法启动。
#/sbin/service 若丢失或被替换任何服务无法启动。
⑥. /initrd 目录丢失,启动时有如下提示:
pivotroot: pivotroot (/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc failed : 2
Freeing unused kernel memory : 164k freed
Kernel panic : no init found,Try passing init = option to kernel
进入rescue模式,建立/initrd 目录即可
六.本地系统
1.用户登录问题
①.root用户不可登录
a.密码失效
b.是否过期
c.被锁
d./etc/securitty 定义了
root可安全登录的终端 e.没用root用户,uid=0 用户不存在
2.user不可登录
a.密码失效
b.是否过期
c.被锁
d.存在/etc/nologin空文件
e.passwd文件中没有shell或被替换
f./etc/bash_profile
g. ./bash_profile中有exit,logout
3.root user都不可登录
/bin/bash被替换或删除
检查pam, /etc/security/access.conf , /etc/pam.d/system-auth, 用authconfig清除设置
4.拒绝ssh登录用户
需求:
开发需要登录到服务器上创建自己的项目,需要给就发创建个用户,在当前家目录下就成
故障:
给开发创建用户完成后,开发说无法登陆;然后我自己去测试了也无法登陆,
解决方案:
①、查看用户是否创建成功,是否是nologin(没问题)
②、查看用户是否被锁(没有)
③、是否在sshd的配置文件中有限制(没有)
④、查看是否存在黑名单中(没有)
⑤、最后才发现了是在hosts的白名单中有这么一条
sshd : all : deny
拒绝了所有用户的登录,把它去掉就OK了
①./etc/ssh/sshd_config
denyusers user
②.pam 中/etc/security/access.conf
/etc/pam.d/sshd
5.故障现象阐述:刚刚重新安装的系统,安装过程中一切正常,没有任何错误提示,安装完成后,提示重新引导系统,重新引导后,发现没有出现bootloader的界面,屏幕上没有任何错误提示,只有一个光标在不停闪动,硬盘读写指示灯没有闪烁。
故障判断及其解决方法:
根据linux系统的启动过程,我们大致可以判断硬件完好,BIOS检查通过,检查发现第一引导设备是硬盘,这也正常,所以接下来应该出现bootloader的界面,让我们选择需要引导的系统,而故障中没有出现,所以我们判断应该是bootloader有误。接下来解决问题,从光盘引导系统,进入rescue模式,发现无法使用命令chroot /mnt/sysimages切换到硬盘上的Linux系统,没办法,只好进入目录cd /mnt/sysimages,查看下,发现只有三个目录/boot,/sys,/proc,其他目录都没有,修复bootloader的最后方法就是重新安装grub(现在默认的bootloader都
是grub),而/etc/grub.conf文件是链接到/boot/grub/grub.conf,所以进入/boot/grub目录,发现配置文件都正常,说明grub的rpm包应该安装了,下面我们来安装grub到mbr.
依次运行下面三个命令
grub---->root (hd0,0)
------>setup (hd0)
------>quit
,然后重新
启动系统从硬盘启动出现了bootloadergrub的选择界面
6.故障现象阐述:
原以为经过上面的一番折腾,我的linux系统可以正常启动了,可以启动过程中却有出问题了。
系统引导到initrd文件加载完成,系统init进程启动之前,系统引导出错,无法继续启动,系
统提示有些问题文件系统无法挂载,有些文件系统不存在等等。
故障判断及其解决方法:
根据linux启动过程和系统提示我们发现系统当时应该是在挂载硬盘分区到系统出现了错误
而这个过程是通过文件/etc/fstab来控制所以我怀疑是这个文件被改动了而且配置不正确
并且这个也和在rescue模式下系统中只有三个目录的现象吻合。下面就来解决问题了依然是
从光盘启动引导系统进入rescue模式。现在出现了一个新问题fstab文件在etc目录下但
是当前系统根本就没有etc这个目录我们到哪里去修改fstab这个文件呢思考中…对了
既然系统不能自动挂载那我就手动挂载首先使用命令fdisk -l来查看当前硬盘分了那些
分区各个分区都有什么内容应该被挂载到哪里。查看发现硬盘分了三个区100M的那个
应该是boot分区文件系统类型为swap的那个应该是交换分区还有一个是lvm进入LV
M那个分区看下cd /dev/vol0/发现两个逻辑分区分别命名为root和home初步怀疑r
oot那个逻辑分区是根分区然后在/mnt下建立一个目录叫testdir(mkdir /mnt/testdir),
然后使用命令将根分区挂在到testdir目录(mount /dev/vol0/root /mnt/testdir)进入te
stdir目录ls看下所有目录都有果然是根分区接下来进入正题修改fstabvi /etc/f
stab发现这个文件已经被改的面目全非了没办法重新写一个吧如下
/dev/Vol0/root / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
/dev/Vol0/home /home ext3 defaults 1 2
/dev/sda3 swap swap defaults 0 0
OK,保存退出了重新引导系统从硬盘启动
7.故障现象阐述:
经过上面那些艰难的操作系统总算是慢慢启动了期待中…挂载文件系统也正常了解下
来该启动init进程了下面确定系统启动级别然后启动相关服务吧不对呀我的系统怎么
自动重启了再次启动也是这样郁闷了。
故障判断及其解决方法:
根据上述现象系统的所有相关服务应该都没有开始启动而且系统重启的系统级别是6这样
inittab这个文件就有很大的嫌疑了老办法了进入rescue模式这次chroot /mnt/sysi
mages这个命令运行正常没有任何错误提示而且系统的所以目录都有了这就说明我的上
一步操作是正确的。vi /etc/inittab发现有一段脚本错误
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 6
l4:4:wait:/etc/rc.d/rc 6
l5:5:wait:/etc/rc.d/rc 6
l6:6:wait:/etc/rc.d/rc 6
有了这段脚本我现在可以确定我的判断是正确的每当启动到3或者5的级别时就自动运
行了6级别的脚本这样不重启才怪呢二话不说修改成这样
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
OK保存退出reboot…
8.故障现象阐述:
进入图形化界面然后打开一个终端看看我都做了些什么奇怪为什么我的终端打不开呀一开就弹出个对话框具体内容不大记得了反正就是说我的terminal不能使用可是我明明已经解决了所有的故障呀难道有人对我特别照顾加了一个
故障判断及其解决方法:
我认真的思考冷静的思考仔细的思考回忆以上出的四个问题我敢肯定其中的三个问题我都处理的正确只有那个挂载文件系统的那个我有点不太肯定到不是写错了什么而是怀疑我写漏了什么
vi /etc/fstab
/dev/Vol0/root / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
/dev/Vol0/home /home ext3 defaults 1 2
/dev/sda3 swap swap defaults 0 0
总感觉好像缺点什么对了我好像忘了挂载三个虚拟文件系统分别是devpts,proc,sys,加上后如下
/dev/Vol0/root / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
/dev/Vol0/home /home ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
/dev/sda3 swap swap defaults 0 0
OK,保存退出reboot…再打开terminalOk,一切正常
9.MBR错误
由于意外原因主引导记录被破坏新手安装多操作时系统常发生先装linux再装windows
类系统后只能引导win的情况。这种情况下grub.conf或lilo.conf正常只需进入rescue
模式重安装一次MBR即可。
情况描述只能进入win类系统或开机后BIOS自检通过后黑屏无任何提示。
10.引导程序错误
grub.conf或lilo.conf文件错误。修改了grub.conf或lilo.conf后或者硬盘物理位置和分区
发生变化后造成不能正常启动。进入rescue模式修改grub.conf或lilo.conf即可。注意修
改了lilo.conf后需执行lilo命令可加-v 参数查看详细信息
情况描述
一grub的一般情况
①.如果没有找到内核(vmlinuz-x.x.x文件
出现File not found
Press any key to continue....
说明root(hdx,x)错误或内核文件名不对
②.如果找到内核后运行一会出现kernel Panic:Not init Found一般来说是没有找到根分区(/分区即root=/dev/xxx不对
③.如果找到内核后运行一会
出现Kernel panic: VFS: Unable to mount root fs on …
一般来说可能忘了加上initrd /initrd-2.4.21-4.EL.img大多情况发生在使用scsi硬盘
④.总的来说grub.conf里面必须存在的就几行。
#more grub.conf
title linux
root (hd0,1) #/boot分区所在位置
kernel /vmlinuz-2.4.21-4.EL ro root=/dev/TEST/root
#内核和根分区/分区位置
根分区可能是LVM和raid而不仅是hdx和sdx
initrd /initrd-2.4.21-4.EL.img
平时练习grub.conf菜单文件的最好办法是把这个文件删掉每次重启时自己使用grub的
交互命令行就快就会对文件里面的内容熟悉。
二lilo的一般情况
lilo中没有找到内核文件或ramdisk文件initrd-2.4.xx.x.ximg出现的提示与grub中相同
但如果是分区发生变化就会出现众所周知的L.LI.等错误。
lilo.conf中必须出现的几行。
image=/boot/vmlinuz-2.4.21-4.EL #内核所在位置
label=linux #等于grub中的title
root=/dev/sdc1 #根分区所在位置
initrd=/boot/initrd-2.4.21-4.EL.img
注意如果lilo中不加boot=/dev/sdx则运行lilo程序时需加参数指明
lilo -b /dev/sdx
人事题
1.你对现在运维工程师的理解和以及对其工作的认识
运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高.最快.最稳定.最安全的服务。运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨及富有创新精神。
转载于:https://blog.51cto.com/853056088/2094685
来源:https://blog.csdn.net/weixin_45496892/article/details/101349898