Linux运维必会的面试题(二)

一、Linux的启动过程?

  1. 开机自检:服务器主机开机以后,将根据主板BIOS(Basic Input/Output System,基本输入输出系统)中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多数时候会移交给本机硬盘。
  2. MBR引导:当从本机硬盘中启动系统时,首先根据硬盘第1个扇区中MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)。
  3. GRUB菜单:对于Linux系统来说,GRUB算是使用最为广泛的多系统引导器程序了。系统控制权传递给GRUB以后,将会显示启动菜单提供给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。
  4. 加载Linux内核:Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。在RHEL6系统中,默认的内核文件位于"/boot/vmlinuz-2.6.32-431.e16.x86_64"。
  5. init进程初始化:为了完成进一步的系统引导过程,Linux内核首先将系统中的"/sbin/init"程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,最后等待用户进行登录。

二、linux系统监控命令,查看cpu负载内存等情况

top命令是Linux下常用的性能分析工具,比如cpu、内存的使用,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

top命令参数

d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

p:通过指定监控进程ID来仅仅监控某个进程的状态。

q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

S:指定累计模式

s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

i:使top不显示任何闲置或者僵死进程。

c:显示整个命令行而不只是显示命令名

常用操作

top  //每隔5秒显式所有进程的资源占用情况

top -d2//每隔2秒显式所有进程的资源占用情况

top -c//每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)

top -p12345 -p6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况

top -d2 -c -p123456//每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

三、查看网络流量的命令

watch -n 1 "/sbin/ifconfig eth0 | grep  bytes"

四、docker四中网络模式

  1. host模式:如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network           Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。
  2. container模式:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。
  3. none模式:这个模式和前两个不同。在这种模式下,Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。
  4. bridge模式:bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。当 Docker server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配 IP 了,Docker 会从 RFC1918 所定义的私有 IP 网段中,选择一个和宿主机不同的IP地址和子网分配给 docker0,连接到 docker0 的容器就从这个子网中选择一个未占用的 IP 使用。如一般 Docker 会使用 172.17.0.0/16 这个网段,并将 172.17.0.1/16 分配给 docker0 网桥(在主机上使用 ifconfig 命令是可以看到 docker0 的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)

    docker常用命令:

1.docker version  //查看docker的版本号,包括客户端、服务端、依赖的Go等

2.docker info  //查看系统(docker)层面信息,包括管理的images, containers数等

3.docker search <image>  //在docker index中搜索image

4.docker pull <image>  //从docker registry server 中下拉image

5.docker push <image|repository>  //推送一个image或repository到registry

6.docker push<image|repository>:TAG  //同上,指定tag

7.docker inspect <image|container>  //查看image或container的底层信息

8.docker images  //查看本机images

9.docker images –a  //列出所有的images

10.docker ps   //默认显示正在运行中的container

六、docker怎么实现容器间的独立

使用核心技术Namespaces

1.pid namespace:不同用户的进程就是通过pid namespace 隔离开的,且不同 namespace中可以有相同pid。所有的LXC进程在docker中的父进程为docker进程,每个lxc进程具有不同的 namespace 。

2.net namespace:有了pid namespace, 每个 namespace 中的pid能够相互隔离,但是网络端口还是共享 host 的端口。网络隔离是通过 net namespace 实现的,每个 net namespace 有独立的  networkdevices, IP addresses, IP routing tables, /proc/net  目录。这样每个 container 的网络就能隔离开来。docker默认采用veth的方式将 container 中的虚拟网卡同 host 上的一个docker bridge: docker0 连接在一起。

3.ipc namespace:container中进程交互还是采用linux常见的进程间交互方法 (interprocess communication - IPC),包括常见的信号量、消息队列和共享内存。container 的进程间交互实际上还是host 上具有相同pid namespace 中的进程间交互。

4.mnt namespace:类似chroot,将一个进程放到一个特定的目录执行。mnt namespace 允许不同 namespace 的进程看到的文件结构不同,这样每个 namespace  中的进程所看到的文件目录就被隔离开了。在container里头,看到的文件系统,就是一个完整的linux系统,有/etc、/lib 等,通过chroot实现。

5.uts namespace:UTS("UNIX Time-sharing System")namespace 允许每个 container 拥有独立的 hostname 和 domain name, 使其在网络上可以被视作一个独立的节点而非 Host 上的一个进程。

6.usernamespace:每个 container 可以有不同的 user  和  groupid,  也就是说可以在 container 内部用 container 内部的用户执行程序而非 Host 上的用户。

七、实现高可用的工具有哪些?

1.hearbeat

2.keepalived

...

八、MySQL数据库备份工具?

MySQLdump工具:

1.是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump,支持基于innodb的热备份。但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景。Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。

2.是 mysql 用于备份和数据转移的一个工具。它主要产生一系列的 SQL 语句,可以封装到文件,该文件包含有所有重建你的数据库所需要的 SQL 命令如 CREATE DATABASE,CREATE TABLE,INSERT 等等。可以用来实现轻量级的快速迁移或恢复数据库。

3.是将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。

4.数据库导出对象可以针对单个表、多个表、单个数据库、多个数据库、所有数据库进行导出的操

作。

percona提供的xtrabackup工具:

Xtrabackup 实现是物理备份,而且是物理热备

1.支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展,可以设立独立表空间,打开innodb_file_per_table功能,启用之后可以支持单独的表备份。

2.(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快。

九、awk和sed的区别?

awk:

awk是一种程序语言,对文档资料的处理具有很强的功能。awk擅长从格式化报文或从一个大的文本文件中抽取数据。

awk的命令格式为:

awk [-F filed-separator] “commands” input-file(s)

awk将一行文字按分隔符(filed-separator)分为多个域,依次记为$ 1,$ 2 . . . $ n。$0代表所有域值。因此awk更适合于以域为单位来处理文件。加之ARGIND等内置变量,使awk能处理多个文件。典型的应用为查找一个文件中的某个字段是否在另一个文件中出现

sed:

sed是一个精简的、非交互式的编辑器。它能执行与编辑vi和emacs相同的编辑任务,但sed编辑器不提供交互使用方式,只能在命令行下输入编辑命令。

sed的命令格式为:

sed [options] ‘command‘ file(s)

sed [options] -f scrīptfile file(s)

作为编辑器,当然少不了插入(a/、i/)、删除(d)、查找替换(s)等命令。

如果文件是格式化的,即由分隔符分为多个域的,优先使用awk

awk适合按列(域)操作,sed适合按行操作

awk适合对文件的抽取整理,sed适合对文件的编辑。

十、cacti报警已经知道了,怎么关闭报警?

将“Threshold Enabled”前面选项框中的勾去掉,即disabled阈值,当达到设置的告警阈值也不报警。

时间: 2024-10-08 23:50:33

Linux运维必会的面试题(二)的相关文章

Linux运维必会的面试题(一)

一.Varnish.Nginx.Squid各自缓存的优缺点 要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择Squid和Varnish. Varnish  Nginx Squid 优点 1. 高性能: 2. 多核支持: 3. 支持0-60秒的精确缓存时间. 跨平台 非阻塞.高并发连接(得益于使用了最新的epoll模型) 事件驱动(通过异步非阻塞的事件处理机制,Nginx实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级) Master/Worker结构 内存消耗小

linux运维必会MySQL企业面试题近百个

众所周知,MySQL是所有IT企业中的重中之重,linux运维人员如果能掌握MySQL数据库技术,对未来的高薪职业发展非常有帮助! linux运维必会MySQL企业面试题近百个 http://user.qzone.qq.com/49000448/blog/1427333863

Linux运维必会的MySQL企业面试题大全 推荐

Linux运维必会的MySQL企业面试题大全 推荐 (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld startservice mysqld startsystemctl  start mysqld 2.检测端口是否运行 lsof -i :3306netstat -lntup |grep 3306 3.为MySQL设置密码或者修改密码 设置密码 mysql -uroot -ppassword -e "set passowrd for root = passow

Linux运维必会MySQL30道基础命令

Linux运维必会MySQL 30道基础命令 老男孩老师教学与培训核心思想:重目标.重思路.重方法.重实践.重习惯.重总结. 版权声明:余连辉 本系列文档为<老男孩 Linux 运维实战培训中心>内部教学用教案,只允许 VIP 学员 个人使用,为保护大家的学习利益,禁止私自传播,违者将取消 VIP 学员资格.严重者我们将法律起诉.如果你已经参加本培训,即视为你已无条件接受上述内容说明! 联系方式: 意见投诉信箱:[email protected] 网站运维交流群:114580181 24605

MySQL数据库企业级应用实战(Linux运维必学) 套餐上线了。

为了满足广大运维朋友的要求,国内运维界顶尖实战加教育专家老男孩老师亲自主讲的 MySQL数据库企业级应用实战(Linux运维必学)上线了 http://edu.51cto.com/roadmap/view/id-66.html 本套餐一共16套核心DBA课程,祝你掌握运维人员需要掌握的数据库核心重点知识,春节前优惠发布(节后会恢复原价),想掌握DBA的运维伙伴们请抓紧下手,学习课程只是一个连接纽带,选择一个好的优秀的导师,作为自己的前进指路灯,是成就自己的关键. 本课程100%企业实战积累的精华

Linux运维 第三阶段 (十二)tcp wrapper

Linux运维第三阶段(十二)tcp wrapper tcp wrapper tcp wrapper(工作在TCP层的访问控制工具,通常只对TCP协议的应用做控制,它本身只是个库文件libwrap.so(由glibc提供)) 当来自客户端的请求访问本机服务时,请求先到达本机网卡,再到内核TCP/IP协议栈,路由发现是访问本机的,转至用户空间服务所监听的套接字上,服务响应送至内核TCP/IP协议栈,再通过路由经网卡返回至客户端:有了tcp wrapper后,在这过程当中附加了一层访问控制机制,由t

Linux编程学习:Linux运维必会的系统工具

×××教育,独家开创"Linux云计算架构师课程".这是独家的全栈Linux运维课程,包含"公有云+私有云+自动化运维+Python运维开发"等核心开发技术,其中"私有云课程"较同行最全.而值得注意的是,私有云是运维行业中薪资最高的. 更何况,×××教育Linux运维课程内容,还是由中国第29位红帽认证架构师亲自编写的,更是由他和另一位业界大咖唐老师一同讲授.课程内容紧贴一线,实时动态更新,实力打造Linux运维行业佼佼者. 1.acct or

Linux运维必会的mysql企业面试题大全

(1)基础笔试命令考察 1.开启MySQL服务/etc/init.d/mysqld startservice mysqld startsystemctl start mysqld 2.检测端口是否运行lsof -i :3306netstat -lntup |grep 3306 3.为MySQL设置密码或者修改密码设置密码mysql -uroot -ppassword -e "set passowrd for root = passowrd('passowrd')"mysqladmin

最新Linux运维必会22道Shell编程面试题精彩讲解

1.批量创建自带随机字符串的文件多种方法 本次运用到了$RANDOM变量 创建命令如下: echo $RANDOM|md5sum|tr "[0-9]" "[a-z]"|cut -c 3-8 通过echo输出随机数,然后通过md5加密,再将数字转换为字母,然后取其中的10个 具体脚本实现如下: #!/bin/bash #echo $RANDOM|md5sum|tr "[0-9]" "[a-z]"|cut -c 3-8