美团Linux运维工程师面试真题答案

美团对 Linux 运维工程师招聘岗位的面试题与答案分析

1、LINUX 系统软件安装和卸载的常见方法

答: 有 3 种方式安装与卸载软件包:

rpm 包卸载:rpm -e XXX.rpm (如果想忽略依赖,可加上–nodeps)

yum remove xxx.rpm 这种方法非常不建议使用,卸载过程会将待卸载的软件包所依赖的软件包一并卸载掉,很容 易造成系统缺少某些包而崩溃等问题

源码包卸载:cd 命令进入编译后的软件目录,即安装时的目录,执行 make uninstall 命令即可;或者直接删除安装 目录

2、Windows 和 LINUX 常用的远程连接工具有那些 答:

命令远程连接工具:Xshell、SecureCRT、Putty、SSH Secure Shell Client 等

图形远程连接工具:xmanager(需安装配置服务并打开 177 端口)、VNC-Viewer(linux 需安装 vncserver)、 windows 自带的远程桌面(linux 需安装 xrdp 和 vnc)

3、如何修改 LINUX 的 IP 地址、网关和主机名: 答:

A、修改 IP 地址、网关:编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改里面 IPADDR 和 GATEWAY 内容,没有 这两行,则添加即可,添加时确保 BOOTPROTO=static,静态地址,如 IPADDR=192.168.1.100

GATEWAY=192.168.1.1

B、修改主机名称:编辑/etc/sysconfig/network,修改里面的 HOSTNAME 内容,如设置主机名称为 mysql,则: HOSTNAME=mysql 即可;

4、编写脚本实现以下功能

每天早上 5 点开始做备份

要备份的是/var/mylog 里所有文件和目录可以压缩进行备份

备份可以保存到别一台器上 192、168、1、2 FTP 帐号 aaa 密码 bbb

要示每天的备份文件要带有当天的日期标记

答:脚本内容如下:

[root@haojiu ~]#cat /root/mylogbak.sh

#!/bin/bash

#scripts for dirbakup and upload to ftp server.

#author by haojiu

#create by

bakdir=mylog

date=`date +%F`

cd /var

tar zcf ${bakdir}_${date}.tar.gz ${bakdir}

sleep 1

ftp -n <<- EOF

open 192.168.142.129

user aaa bbb

put mylog_*.tar.gz bye EOF

rm -rf mylog_*.tar.gz

#远程 ftp 服务器 IP

#这步之前可以做一个判断,判断文件上传成功再执行 rm,留给各位发挥吧。

添加 crontab:

crontab -l

00 05 * * * /bin/bash /root/mylogbak.sh

#每天早上 5 点开始执行备份脚本

5、mysql 相关的题:新安装 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 库,可将其删除)

6、MYSQL 的主从原理,怎么配置文件

答: 整体上来说,复制有 3 个步骤:

; A.master 将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)

B.slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);

C.slave 重做中继日志中的事件,将改变反映它自己的数据。

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 端执行了同样的查询或操作语句,所以两端的数据是完全一样的。

补充:mysql 主从复制的优点————

<1> 如果主服务器出现问题, 可以快速切换到从服务器提供的服务;

<2> 可以在从服务器上执行查询操作, 降低主服务器的访问压力;

<3> 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务。

为 MYSQL 添加一个用户

mysql> grant select,insert,update,delete on book.* to test2@localhost identified by “abc”; 权限;

语法:mysql> GRANT <权限> ON <库>.<表> TO ‘用户’@’主机名’ identified by “密码”;

7、显示/test 目录下的所有目录

答:4 种方法:

ls -d */

) find . -type d -maxdepth 1 (如果不加-maxdepth 参数,将会列出无穷多的子目录。

ls -F | grep ‘/$’

ls -l | grep ‘^d’|awk ‘{print $9}’

8、将文件/etc/a 下中除了 b 文件外的所有文件压缩打包放到/home/a 下,名字为 a.gz

答: tar --exclude /etc/a/b -zPcvf /home/a/a.gz /etc/a (不加 P 选项会提示:『tar: Removing leading `/’ ) from member names』

验证:

(忽略掉 b 文件) [root@haojiu a]# tar tPvf /home/a/a.gz

drwxr-xr-x root/root 0 2015-08-21 10:15 /etc/a/

-rw-r–r– root/root 0 2015-08-21 10:15 /etc/a/d

-rw-r–r– root/root 0 2015-08-21 10:15 /etc/a/f

-rw-r–r– root/root 0 2015-08-21 10:15 /etc/a/c

-rw-r–r– root/root 0 2015-08-21 10:15 /etc/a/e

9、给一个脚本赋予执行权限的命令及选项 答:

chmod +x a.sh

#增加 test2 用户,密

码为 abc。并只能在 localhost 这台主机上登录,并且只能访问 book 这个库中的表,具有查询,插入,更新,删除

10、umask 022 代表什么意思

答: 新建文件夹或文件的权限是由所谓基本码减去称之为 umask 的屏蔽位得到的。

按照规定:文件夹的基本码是 rwxrwxrwx(777),文件的基本码是 rw-rw-rw-(666)

因此新建文件夹是 777-022=755(rwxr-xr-x),新建文件是 666-022=644(rw-r–r–)。

综上,umask 022 表示默认创建新文件权限为 755 也就是 rxwr-xr-x(所有者全部权限,属组读写,其它人读写)

11、如何查看某进程所打开的所有文件

答:取出该进程的进程号,然后用 lsof -p pid 查看打开的所有文件。(这里以 crond 进程为例)

[root@haojiu a]# ps -ef |grep crond|grep -v grep |awk ‘{print $2}’ #取出进程号

2550

[root@zintao01 a]# lsof -p 2550 #查看该进程打开的所有文件

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

crond 2550 root cwd DIR 8,2 4096 2/

crond 2550 root rtd DIR 8,2 4096 2/

crond 2550 root txt REG 8,2 64096 820728 /usr/sbin/crond

crond 2550 root mem REG 8,2 65928 524319 /lib64/libnss_files-2.12.so

crond 2550 root mem REG 8,2 99158576 788202 /usr/lib/locale/locale-archive

crond 2550 root mem REG 8,2 472064 554920 /lib64/libfreebl3.so

crond 2550 root mem REG 8,2 43392 554921 /lib64/libcrypt-2.12.so

crond 2550 root mem REG 8,2 1926800 554903 /lib64/libc-2.12.so

crond 2550 root mem REG 8,2 115536 554937 /lib64/libaudit.so.1.0.0

crond 2550 root mem REG 8,2 22536 554909 /lib64/libdl-2.12.so

crond 2550 root mem REG 8,2 58480 554938 /lib64/libpam.so.0.82.2

crond 2550 root mem REG 8,2 124624 554913 /lib64/libselinux.so.1

crond 2550 root mem REG 8,2 156928 554899 /lib64/ld-2.12.so

crond 2550 root 0u CHR 1,3 0t0 4160 /dev/null

crond 2550 root 1u CHR 1,3 0t0 4160 /dev/null

crond 2550 root 2u CHR 1,3 0t0 4160 /dev/null

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4