运维必须掌握的Linux面试题
1、解释下什么是GPL,GNU,自由软件?GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。2、linux系统里,buffer和cache如何区分?buffer和cache都是内存中的一块区域,当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。3、描述Linux运行级别0-6的各自含义0:关机模式1:单用户模式<==破解root密码2:无网络支持的多用户模式3:有网络支持的多用户模式(文本模式,工作中最常用的模式)4:保留,未使用5:有网络支持的X-windows支持多用户模式(桌面)6: 重新引导系统,即重启4、描述Linux系统从开机到登陆界面的启动过程⑴开机BIOS自检,加载硬盘。⑵读取MBR,MBR引导。⑶grub引导菜单(Boot Loader)。⑷加载内核kernel。⑸启动init进程,依据inittab文件设定运行级别⑹init进程,执行rc.sysinit文件。⑺启动内核模块,执行不同级别的脚本程序。⑻执行/etc/rc.d/rc.local⑼启动mingetty,进入系统登陆界面。5、描述Linux下软链接和硬链接的区别在Linux系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。①默认不带参数的情况下,ln创建的是硬链接,带-s参数的ln命令创建的是软链接。②硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号,与源文件不同,③ln命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。④删除软链接文件,对源文件和硬链接文件无任何影响。⑤删除文件的硬链接文件,对源文件及软链接文件无任何影响。⑥删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。⑦同时删除源文件及其硬链接文件,整个文件才会被真正的删除。⑧很多硬件设备的快照功能,使用的就是类似硬链接的原理。⑨软链接可以跨文件系统,硬链接不可以跨文件系统。6、shell脚本中“$?”标记的用途是什么?在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“?0如果结束状态是0,说明前一个命令执行成功。root@localhost:~# ls /usr/bin/sharels: cannot access /usr/bin/share: No such file or directoryroot@localhost:~# echo $?2如果结束状态不是0,说明命令执行失败。7、如何让history命令显示具体时间?$ HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"$ export HISTTIMEFORMAT重新开机后会还原,可以写/etc/profile8、用shell统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前10位的IP数。以下是nginx的访问日志节选202.101.129.218- - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"1}' access.log |sort|uniq -c |head -n 1031 202.101.129.21821 123.93.29.1111 13.92.19.319、将本地的80端口的请求转发到8080端口,本机地址10.0.0.254,写出命令$ iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dprot 80 -j DNAT --to-destination 10.0.0.254:808010、Load过高的可能性有哪些?排查思路:其他经验:cpu load的飙升,一方面可能和full gc的次数增大有关,一方面可能和死循环有关11、描述/etc/fstab 文件中每个字段的含义?(1)第一列:将被加载的文件系统名;(2)第二列:该文件系统的安装点;(3)第三列:文件系统的类型;(4)第四列:设置参数;(5)第五列:供备份程序确定上次备份距现在的天数;(6)第六列:在系统引导时检测文件系统的顺序。12、 如何在打包时排除指定目录?$ tar --exclude=/home/dmtsai --exclude=.tar -zcvf myfile.tar.gz /home//etcmysql> update user set password=password('123123') where user='root';

linux经常问的面试题有哪些?
1、如何查看系统内核的版本这里有两种方法:1) uname -auname 这个命令是用来打印系统信息的, -a 可以打印系统所有信息,其中包含内核版本,比如我的版本号是3.10.0-957.21.3.el7.X86_64。2) cat /proc/version下面再补充一下各个数字和字母代表的含义:3 表示主版本号,有结构性变化才更改 (最新的是5)10 表示次版本号,新增功能才会变化,一般基数表示测试版,偶数表示稳定版。2020年3月30日,Linus Torvalds 发布了最新的 Linux 内核版本为 5.60 表示对次版本的修订次数或补丁包数957 代表编译的次数,每次编译可对少数程序优化或修改el7 用来表示版本的特殊信息,有较大的随意性;el 代表企业版,pp代表测试版,fc代表 Fedora core,rc代表候选版本X86_64 表示64位2、如何查看系统当前的 IP 地址也有两种方法:1)ifconfig -aifconfig 是用来配置网络接口的命令,-a 可以显示当前所有的接口。请点击输入图片描述2)ip addr show请点击输入图片描述3、如何查看磁盘还有多少剩余空间这里主要可以用 df -ah 命令来查看,df 是用来查看文件系统磁盘空间使用情况的命令,-a 显示所有文件系统,-h 用人们可读的方式进行显示。请点击输入图片描述上面可以看到我的磁盘 /dev/vda1 有40 G,已经用了1.7 G,还有 36 G的可用空间。4、如何在系统中管理服务这里别人可能会问你,如何查看一个服务是否在运行,如何启动、停止、或重新加载配置文件。这里答案也有两种。1) 使用 service 命令查看服务状态1service [servicename] status启动/停止/重启服务1service [servicename] [start|stop|restart]重新加载服务配置文件(不重启服务)1service [servicename] [reload]比如我想查看一下 sshd 的服务有没有开启请点击输入图片描述2)使用 systemctl 命令比较新的系统都已经采用了 systemd,systemctl 是systemd的一个工具,主要负责控制systemd系统和服务管理器。查看服务状态1systemctl status [servicename]启动/停止/重启服务1systemctl [start|stop|restart] [servicename]重新加载服务配置文件(不重启服务)1systemctl [reload] [servicename]5、如何查看一个目录的大小可以使用 du -sh [目录] 命令,du 使用来计算文件/目录大小的命令,-s 显示文件或整个目录的大小,-h 是用可读格式。请点击输入图片描述比如上面我查看了一下我的主目录下tmp目录的大小,一共有80 K6、如何查看你系统中开放的端口号1) 使用 netstat 命令netstat命令用来显示网络状态,包括网络连接、路由表、接口统计等信息。常用的参数如下:-a (all) 显示所有选项,默认不显示LISTEN相关。-t (tcp) 仅显示tcp相关选项。-u (udp) 仅显示udp相关选项。-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服务状态。-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计-c 每隔一个固定时间,执行该netstat命令。下面我用了 netstat -tulpn 命令,可以看到端口 22正在被监听。请点击输入图片描述2)使用 ss 命令现在也有很多人用 ss 命令,ss 一般用于转储套接字统计信息。它还可以显示所有类型的套接字统计信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。这里可以用 ss -lntpd7、如何查看某个进程对 CPU 的使用情况1) 可以使用 top 命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。2) 使用 ps 命令ps aux 可以显示所有使用者的进程,最常用的方法是ps aux,然后再利用一个管道符号导向到grep去查找特定的进程。比如查看nginx 进程可以用1ps aux | grep nginx8、Linux里如何来做挂载这里主要考的是 mount 命令,用于挂载Linux系统外的文件。只输入 mount命令可以查看所有系统已经挂载的文件。如果想挂载一个新的文件,比如将 /dev/hda1 挂在 /mnt 之下,可以用1mount /dev/hda1 /mnt9、如何查看一些你不太熟悉的命令这里要考大家的是使用 man 命令。对某个 Linux的命令不熟悉,可以用 man <命令 >,系统会返回该命令的一个非常详细的手册,来帮助大家使用。

分享70个经典的 Shell 脚本面试题与答案
我们为你的面试准备选择了 70 个你可能遇到的 shell 脚本面试问题及解答。了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。在过去的几年里,我们注意到所有的 linux 工作职位都要求脚本技能。1) 如何向脚本传递参数 ?./script argument例子: 显示文件名称脚本(LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。)2) 如何在脚本中使用参数 ?第一个参数 : 2例子 : 脚本会复制文件(arg1) 到目标地址(arg2)3) 如何计算传递进来的参数 ?4) 如何在脚本中获取脚本名称 ?5) 如何检查之前的命令是否运行成功 ?6) 如何获取文件的最后一行 ?7) 如何获取文件的第一行 ?8) 如何获取一个文件每一行的第三个元素 ?9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素10) 如何调试 bash 脚本将 -xv 参数加到 #!/bin/bash 后例子:11) 举例如何写一个函数 ?12) 如何向连接两个字符串 ?输出HelloWorld13) 如何进行两个整数相加 ?输出3据 @kashu 的意见,本题的更佳回答为:两个整数相加,还有若干种方法实现:14) 如何检查文件系统中是否存在某个文件 ?15) 写出 shell 脚本中所有循环语法 ?for 循环 :while 循环 :until 循环 :16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?这一行说明要使用的 shell。#!/bin/bash 表示脚本使用 /bin/bash。对于 python 脚本,就是17) 如何获取文本文件的第 10 行 ?18) bash 脚本文件的第一个符号是什么19) 命令:[ -z "" ] && echo 0 || echo 1 的输出是什么20) 命令 “export” 有什么用 ?21) 如何在后台运行脚本 ?在脚本后面添加 “&”。据 @kashu 的意见,更好的答案是:大部分时间我们可能是远程使用Linux,我碰到过由于网络断线使得在后台运行的command &没了...22) "chmod 500 script" 做什么 ?使脚本所有者拥有可执行权限。23) ">" 做什么 ?重定向输出流到文件或另一个流。24) & 和 && 有什么区别25) 什么时候要在 [ condition ] 之前使用 “if” ?当条件满足时需要运行多条命令的时候。26) 命令: name=John && echo 'My name is $name' 的输出是什么variable27) bash shell 脚本中哪个符号用于注释 ?28) 命令: echo ${new:-variable} 的输出是什么variable29) ' 和 " 引号有什么区别 ?30) 如何在脚本文件中重定向标准输出和标准错误流到 log.txt 文件 ?在脚本文件中添加 "exec >log.txt 2>&1" 命令。31) 如何只用 echo 命令获取字符串变量的一部分 ?例子:32) 如果给定字符串 variable="User:123:321:/home/dir",如何只用 echo 命令获取 home_dir ?或33) 如何从上面的字符串中获取 “User” ?或34) 如何使用 awk 列出 UID 小于 100 的用户 ?35) 写程序为用户计算主组数目并显示次数和组名36) 如何在 bash shell 中更改标准的域分隔符为 ":" ?37) 如何获取变量长度 ?38) 如何打印变量的最后 5 个字符 ?39) {variable: -10} 有什么区别?40) 如何只用 echo 命令替换字符串的一部分 ?41) 哪个命令将命令替换为大写 ?42) 如何计算本地用户数目 ?43) 不用 wc 命令如何计算字符串中的单词数目 ?44) "export $variable" 或 "export variable" 哪个正确 ?45) 如何列出第二个字母是 a 或 b 的文件 ?46) 如何将整数 a 加到 b 并赋值给 c ?或或47) 如何去除字符串中的所有空格 ?48) 重写这个命令,将输出变量转换为复数: item="car"; echo "I like $item" ?49) 写出输出数字 0 到 100 中 3 的倍数(0 3 6 9 …)的命令 ?或50) 如何打印传递给脚本的所有参数 ?或51) [ b ] 和 [ b ] 有什么区别52) = 和 == 有什么区别53) 写出测试 $a 是否大于 12 的命令 ?[ $a -gt 12 ]54) 写出测试 $b 是否小于等于 12 的命令 ?[ $b -le 12 ]55) 如何检查字符串是否以字母 "abc" 开头 ?[[ $string == abc* ]]56) [[ string == "abc" ]] 有什么区别*57) 如何列出以 ab 或 xy 开头的用户名 ?egrep "ab|xy" /etc/passwd|cut -d: -f158) bash 中 $! 表示什么意思 ?后台最近执行命令的 PID.59) $? 表示什么意思 ?前台最近命令的结束状态。60) 如何输出当前 shell 的 PID ?echo $$61) 如何获取传递给脚本的参数数目 ?echo $#(LCTT 译注:和第3题重复了。)62) @ 有什么区别63) 如何在 bash 中定义数组 ?64) 如何打印数组的第一个元素 ?65) 如何打印数组的所有元素 ?66) 如何输出所有数组索引 ?67) 如何移除数组中索引为 2 的元素 ?68) 如何在数组中添加 id 为 333 的元素 ?69) shell 脚本如何获取输入的值 ?a) 通过参数b) 通过 read 命令70) 在脚本中如何使用 "expect" ?

linux常用命令面试题有哪些?
linux常用命令有:1、cp命令,作用复制,参数如下:-a:将文件的特性一起复制。-p:连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份。-i:若目标文件已经存在时,在覆盖时会先询问操作的进行。-r:递归持续复制,用于目录的复制行为。-u:目标文件与源文件有差异时才会复制。2、rm命令作用为删除,参数:-f:就是force的意思,忽略不存在的文件,不会出现警告消息。-i:互动模式,在删除前会询问用户是否操作。-r:递归删除,最常用于目录删除,它是一个非常危险的参数。3、mv命令作用为移动文件:-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖。-i:若目标文件已经存在,就会询问是否覆盖。-u:若目标文件已经存在,且比目标文件新,才会更新。4、pwd命令,作用为查看”当前工作目录“的完整路径。pwd-P#显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径。5、rmdir命令删除目录:rmdir [选项]... 目录...-p:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。-v:verbose显示指令执行过程。
linux常用命令有:cp命令,作用复制,参数如下:-a:将文件的特性一起复制。-p:连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份。-i:若目标文件已经存在时,在覆盖时会先询问操作的进行。-r:递归持续复制,用于目录的复制行为。-u:目标文件与源文件有差异时才会复制。常用命令及技巧1、date:打印或者设置系统的日期和时间2、stty-a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、Ctrl-Z等)3、passwd:用passwd-h查看4、logout,login:登录shell的登录和注销命令5、more,less,head tail:显示或部分显示文件内容以上内容参考:百度百科-Linux

Linux系统工程师面试题附答案(2)
Linux系统工程师面试题(附答案)prefork的特点是:(预派生)1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销2.可以防止意外的内存泄漏3.在服务器负载下降的时候会自动减少子进程数worker的特点是:支持混合的多线程多进程的多路处理模块如果对于一个高流量的HTTP服务 器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。15.名词解释 HDLC,VTP,OSPF,RIP,DDOS,system V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等。16.编写shell脚本获取本机的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0方法一:#!/bin/bash#This script print ip and networkfile=”/etc/sysconfig/network-scripts/ifcfg-eth0″if [ -f $file ] ;thenIP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }’`MASK=`grep “NETMASK” $file|awk -F”=” ‘{ print $2 }’`echo “$IP/$MASK”exit 1fi方法二:#!/bin/bash#This programm will printf ip/network#IP=`ifconfig eth0 |grep ‘inet ‘ |sed ‘s/^.*addr://g’|sed ‘s/ Bcast.*$//g’`NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ‘s/^.*Mask://g’`echo “$IP/$NETMASK”exit17.在命令行下发一邮件,发件人:123@abc.com, 收信人:abc@xyz.com二、简述题:1.linux下如何改IP,主机名,DNS2.linux下如何添加路由3.简述linux下编译内核的意义与步骤4.简述Linux启动过程5.简述DDOS攻击的原理6.简述Tcp三次握手的过程7.简述VPN,常见有哪几种?三、设计题:1.系统设计请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。您有的资源:8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机Apache 2.2.xTomcat 5.5.X数据库系统最多8个Internet IP地址,请您设计一个系统:1、使用双apache web server前端;2、采用AJP连接后段的3台Tomcat应用服务器,这些tomcat被配置成cluster, 因此需要考虑apache对后端的分配,分配采用完全平衡的方法;配置使用cookie来实现session stickness;3、1台数据库服务器只有tomcat才需要连接,也不需要对Internet提供服务。4、考虑系统的安全性和维护方便性;5、通过rewrite规则配置把下属URL规则改写成友好的URLhttp://server/webapp/getinfo?id=XXXX&name=YYYY –> http://server/getinfo/YYYY/XXXX您需要提交1、服务器规划,包括:* 网络结构图* 每台机器的IP地址分配* 每台机器上运行的关键软件* 您从安全性和维护性方面的考虑2、Apache的以下配置文件给我们:* extra/http-proxy-ajp.conf* extra/http-rewrite.conf2.你可以采取任何设备和不同操 作系统服务器设计对两台WWW服务器和两台FTP服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)第一种方法: DNS轮巡www1 IN A 192.168.1.1www2 IN A 192.168.1.2www3 IN A 192.168.1.3ftp1 IN A 192.1.1.4ftp2 IN A 192.1.1.5ftp3 IN A 192.1.1.6www IN CNAME www1www IN CNAME www2www IN CNAME www3ftp IN CNAME ftp1ftp IN CNAME ftp2ftp IN CNAME ftp3 ;

本文由 在线网速测试 整理编辑,转载请注明出处。