程序员开发实例大全宝库

网站首页 > 编程文章 正文

互联网公司运维工程师面试点梳理(互联网运维需要哪些知识?)

zazugpt 2024-10-20 16:05:17 编程文章 249 ℃ 0 评论

奇虎360:

1. 写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。

find / -name “*.log” -ctime +3 -exec rm -f {} \;

2.写一个脚本将某目录下大于 100k 的文件移动至/tmp下

for i in `find /test -type f -size +100k`;do cd /test && mv $i /tmp;done

3.写一个脚本将数据库备份并打包至远程服务器192.168.1.1 /backup目录下

mount 192.168.1.1:/backup /mnt

cd /mnt

/usr/local/mysql/bin/mysqldump -hlocalhost -uroot test >test.sql

tar czf test.sql.tar.gz test.sql

rm -f test.sql

4.写一个防火墙配置脚本,只允许远程主机访问本机的80端口

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

iptables -X

iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT

iptables -P INPUT DROP

5.写一个脚本进行nginx日志统计,得到访问ip最多的前10个(nginx日志路径:/home/logs/nginx/default/access.log

awk ‘{a[$1]++}END{for (j in a) print a[j],j}’ /home/logs/nginx/default/access.log|sort -nr|head -10

6.写出下列配置的含义

(1)MaxKeepAliveRequests 100

(2)Options FollowSymLinks

Order Deny Allow

Deny from all

Allow from 192.168.1.1

(1)MaxKeepAliveRequests — 100 连接的最大请求数

(2)Options FollowSymLinks — 允许192.168.1.1可以列目录

Order Deny Allow

Deny from all

Allow from 192.168.1.1

7.写一个脚本把指定文件里的/usr/local替换为别的目录

sed ‘s:/user/local:/tmp:g’ filename

8.简要描述 Linux 的启动过程?

BIOS 启动引导(从 mbr 中装载启动管理器 grub)→ GRUB 启动引导(装载 kernel 和 initrd 到内存)→ 内核启动参数 → sys init 初始化

9.简要叙述下列端口所运行的服务

21: ftp

22: ssh

23: telnet

25: SMTP

110: pop3

143: IMAP

873: rsync

3306: MySQL

10.TCP 头最小长度是多少字节?

64字节

11.让某普通用户能进行 cp /dir1/file1 /dir2 的命令时,请说明 dir1 file1 最小具有什么权限

读取和执行权限 rx

12.简述 TCP 三次握手的过程

13.请简单阐述运维工程师的职责

新浪:

1.请写出以下命令执行的结果

bash$ echo “sinaops” | read a ; echo $a

bash$ echo “sinaops” | while read a ;do echo $a ;done

第一行为空

第二行:sinaops

2.什么是 Linux 的 daemon 进程?和一般进程有什么区别?

daemon 进程又称为守护 进程,是在系统 启动就运行,系统关闭才停止的进程,独立于终端之外,不与客户端交互。一般进程在关闭终端后就停止了,而 daemon 进程不会停止。

3.通过 free 命令查看内存是,看到的 buffer 和 cache 各表示什么含义?

使用内存是实际当前使用内存减去 buffers/cache 之和;空闲内存是实际空闲内存加上 buffers/cache 之和。

4.使用ln -s和mv对某一个文件做如下操作时bash$ ln -s /usr/afile /etc/bfile bash$ mv /etc/afile /etc/bfile对 inode 和 block 有哪些影响?

5.apache 和 nginx 这两个 web 服务器有哪些区别?

6.描述 TCP 三次握手的过程

7.请说明一下 HTTP 协议中的 keeplive 是做什么的?它的适应场景是什么?

keep-alive 主要是为了让多个 HTTP 请求共享一个 TCP 连接,以避免每个 HTTP 又新建一个 TCP 连接。每个 HTTP 服务器默认的 keep-alive 时间可能是不一样的。

客户端发送了一个 HTTP 请求,服务器响应后,判断这个 HTTP 是否是 keep-alive 模式的,如果不是则关闭连接,如果是 keep-alive,则等待 keep-alive time 后再关闭,

如果这期间再收到一个 HTTP 请求,则继续等待最后一个请求的 keep-alive time 时间,直到 keep-alive time 时间内没有收到请求,则关闭。

8.请解释 session 和 cookie 的实现原理和区别

9.将 lvs 配置为 DR 方式,发现无法正常工作,经测试直接访问 realserver 可以提供服务,请问用何种方法定位 lvs 问题

10.如何发现 Linux 系统是否出现性能瓶颈?请例举出你常用的监控命令以及参数

11.尽可能多的用不同语言打印 “hello sina”

12.bash shell 里 $0.$?.$ 各表示什么含义

13.用任意脚本统计主机 TCP 连接数并按照连接状态分类

14.有一文件如下格式,请提取.sina.com.cn前面的主机名部分并写入到回到该文件中

1 test.sina.com.cn

2 www.sina.com.cn

999 z.sina.com.cn

15.同一时间脚本只能运行一个实例

16.计算出从你生日之日起到今天一共过了多少天?

17.写出一段程序,用于判断一段字符串是否是回文。

18.有一文件记录了 1-100000 之间随机的整数共 5000个,存储的格式 100, 50, 35, 89… 请取出其中最大和最小的整数。

美团点评:

1.Windows 和 Linux 常用的远程连接工具有那些

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

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

2.Linux 系统软件安装和卸载的常见方法

  1. rpm 包卸载:rpm -e XXX.rpm
  2. yum remove xxx.rpm 这种方法非常不建议使用,卸载过程会将待卸载的软件包所依赖的软件包一并卸载掉,很容易造成系统缺少某些包而崩溃等问题
  3. 源码包卸载:cd命令进入编译后的软件目录,即安装时的目录,执行make uninstall命令即可;或者直接删除安装目录

3.如何修改 Linux 的 IP地址、网关和主机名

  1. 修改 IP地址、网关:编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,修改里面 IPADDR 和 GATEWAY 内容,没有这两行,则添加即可,
  2. 添加时确保 BOOTPROTO=static,静态地址,如 IPADDR = 192.168.1.100 GATEWAY = 192.168.1.1
  3. 修改主机名称:编辑 /etc/sysconfig/network,修改里面的 HOSTNAME 内容,如设置主机名称为 mysql,则:HOSTNAME = mysql 即可;

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

每天早上5点开始做备份

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

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

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

#!/bin/bash

#scripts for dirbakup and upload to ftp server.

bakdir=mylog

date=`date +%F`

cd /var

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

sleep 1

ftp -n <<- EOF

open 192.168.1.1 # 远程ftp服务器

user aaa bbb

put mylog_*.tar.gz

bye

EOF

rm -rf mylog_*.tar.gz

添加 crontab:

crontab -1

00 05 * * * /bin/bash /root/mylogbak.sh #每天早上5点开始执行备份脚本

5.IPTABLES 相关的命令

6.你是否对 Windows 系统打过补丁,如果有 100台你会怎么做?Windows 下怎么为 MySQL 做定时完全备份?

在局域域环境中,应该是将一台服务器作为域控补丁的update服务器,利用“发布与指派”的功能,将补丁批量更新到内网其他服务器;

批处理+计划任务+ftp上传至远程服务器

7.新安装 MySQL 后怎样提升 MySQL 的安全级别?

  1. 修改 MySQL 默认端口
  2. Linux 下可以通过 iptables 来限制访问 MySQL 端口的 IP地址
  3. 对所有用户设置较复杂密码并严格指定对应账号的访问 IP(可在 MySQL 库中 user 表中指定用户的访问可访问 IP地址)
  4. root 特权账号的处理(建议给root账号设置强密码,并指定只允许本地登录)
  5. 开启二进制查询日志和慢查询日志
  6. MySQL 安装目录及数据存储目录权限控制:给 MySQL 安装目录读取权限,给 MySQL 日志和数据所在目录读取和写入权限
  7. 删除无用 MySQL 账号和删除无用的数据库(安装好的 MySQL 默认会有个 test 库,可将其删除)

8.MySQL 的主从原理,怎么配置文件?

  1. master 将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
  2. slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
  3. 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> 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务。

9.如何为 MySQL 添加一个用户?

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

#增加test2用户,密码为abc。并只能在localhost这台主机上登录,并且只能访问book这个库中的表,具有查询,插入,更新,删除权限;

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

10.显示 /test 目录下的所有目录

四种方法:

ls -d */

find .n-typem-d -maxdepth 1

ls -F | grep '/

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

11.请用 iptables 控制来自 192.168.1.2 主机的 80端口请求

iptables -A INPUT -p tcp -s 192.168.1.2 –dport 80 -j ACCEPT

#允许来自 192.168.1.2 这台主机访问 80端口

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

tar –exclude /etc/a/b -zPcvf /home/a/a.gz /etc/a

13.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(所有者全部权限,属组读写,其它人读写)

14.如何在 Windows Server 2003/2008 上开启支持内存 3-4G

在我的电脑上单击鼠标右键,选择属性,点击 “高级” 标签,点击【启动和故障恢复】下的 “设置” 按钮,点击 “编辑” 按钮,

将 Boot.ini 文件的最后一行后面添加一个开关 “/PAE”(不带引号),保存后重新启动机器即可。

15.如何查看某进程所打开的所有文件

取出该进程的进程号,然后用lsof -p pid查看打开的所有文件。

16.给一个脚本赋予执行权限的命令及选项

chmod +x a.sh

17.获取 eth0 网卡上 80端口的数据包信息

tcpdump -i eth0 port 80

18.在 MySQL 客户端查询工具中,如何获取当前的所有连接进程信息

mysql> show full processlist;

19.删除 /a/b下的所有文件及目录

rm -rf /a/b/*

20.常用的网络管理工具(5种以上)

Windows下有:ipcofnig(/all,/renew,/release),ping,tracert,nslookup

Linux下有:ifconfig,ping,tracerroute,dig,nslookup

21.ftp、https、smtp、pops、ssh 的端口号

ftp(20和21)、https(443)、smtp(25)、pops(110)、ssh(22)

22.请用 shell 脚本创建一个组 class、一组用户,用户名为 stdX,X 从 01-30,并归属 class 组

#!/bin/bash

#script for adduser

groupadd class

user=std

for i in {01..30}

do

useradd -G class ${user}$i

done

23.如何删除已满的数据库日志信息

在 my.cnf 中的 [mysqld] 段下面加入:expire-logs-days=7(设置自动清除7天钱的 logs),重启 MySQL ;

或者登录进 MySQL,执行:purge binary logs to ‘mysql-bin.000003’; # 删除 bin-log(删除mysql-bin.000003 之前的而没有包含 mysql-bin.000003)

如果是 MySQL 主从环境的,删除日志,语句格式如下: 

PURGE {MASTER | BINARY} LOGS TO ‘log_name’

PURGE {MASTER | BINARY} LOGS BEFORE ‘date’

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表