https://zhangge.net/1986.html

1.linux 如何挂在 windows 下的共享目录

 
 
 
 

Shell

 
1
mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=123456

linux 下的 server 需要自己手动建一个  后面的 user 与 pass 是 windows 主机的账号和密码 注意空格 和逗号

2.查看 http 的并发请求数与其 TCP 连接状态

 
 
 
 

Shell

 
1
netstat -n | awk '/^tcp/ {++b[$NF]} END {for(a in b) print a, b[a]}'

还有 ulimit -n 查看 linux 系统打开最大的文件描述符,这里默认 1024,不修改这里 web 服务器修改再大也没用。若要用就修改很几个办法,这里说其中一个:

修改/etc/security/limits.conf

 
 
 
 

Shell

 
1
2
* soft nofile 10240
* hard nofile 10240

重启后生效

3.用 tcpdump 嗅探 80 端口的访问看看谁最高

 
 
 
 

Shell

 
1
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -5 

4.查看/var/log 目录下文件数

 
 
 
 

Shell

 
1
ls /var/log/ -lR| grep "^-" |wc -l

5.查看当前系统每个 IP 的连接数

 
 
 
 

Shell

 
1
netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort -rn

6.shell 下 32 位随机密码生成

 
 
 
 

Shell

 
1
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass

将生成的 32 位随机数 保存到/pass 文件里了

7.统计出 apache 的 access.log 中访问量最多的 5 个 IP

 
 
 
 

Shell

 
1
 cat access_log | awk  '{print $1}' | sort | uniq -c | sort -n -r | head -5

8.如何查看二进制文件的内容

我们一般通过 hexdump 命令 来查看二进制文件的内容。

hexdump -C XXX(文件名)  -C 是参数 不同的参数有不同的意义

-C  是比较规范的 十六进制和 ASCII 码显示

-c  是单字节字符显示

-b  单字节八进制显示

-o  是双字节八进制显示

-d  是双字节十进制显示

-x  是双字节十六进制显示

等等等等

9.ps aux 中的 VSZ 代表什么意思,RSS 代表什么意思

VSZ:虚拟内存集,进程占用的虚拟内存空间

RSS:物理内存集,进程战用实际物理内存空间

10.检测并修复/dev/hda5

fsck 用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用 fsck 命令对文件系统进行检查,用法:

11.Linux 系统的开机启动顺序

加载 BIOS–>读取 MBR–>Boot Loader–>加载内核–>用户层 init 一句 inittab 文件来设定系统运行的等级(一般 3 或者 5,3 是多用户命令行,5 是界面)–>init 进程执行 rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。

12.符号链接与硬链接的区别

我们可以把符号链接,也就是软连接 当做是 windows 系统里的 快捷方式。

硬链接 就好像是 又复制了一份.

ln 3.txt 4.txt   这是硬链接,相当于复制,不可以跨分区,但修改 3,4 会跟着变,若删除 3,4 不受任何影响。

ln -s 3.txt 4.txt  这是软连接,相当于快捷方式。修改 4,3 也会跟着变,若删除 3,4 就坏掉了。不可以用了。

13.保存当前磁盘分区的分区表

dd 命令是以个强大的命令,在复制的同时进行转换

 
 
 
 

Shell

 
1
dd if=/dev/sda of=./mbr.txt bs=1 count=512

14..没有 14 题,我自己来个简单的,如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找。

以下操作全部在命令行状态操作,不要在编辑状态操作。

在文本里 移动到想要复制的行  按 yy  想复制到哪就移动到哪,然后按 P  就黏贴了

删除行  移动到改行 按 dd

删除全部  dG  这里注意 G 一定要大写

按行查找  :90 这样就是找到第 90 行

按字母查找 /path  这样就是 找到 path 这个单词所在的位置,文本里可能存在多个,多次查找会显示在不同的位置。

15.手动安装 grub

 
 
 
 

Shell

 
1
grub-install /dev/sda

16.修改内核参数

vi /etc/sysctl.conf  这里修改参数

sysctl -p  刷新后可用

17.在 1-39 内取随机数

 
 
 
 

Shell

 
1
expr $[$RANDOM%39] + 1

RANDOM 随机数

%39 取余数 范围 0-38

18.限制 apache 每秒新建连接数为 1,峰值为 3

每秒新建连接数 一般都是由防火墙来做,apache 本身好像无法设置每秒新建连接数,只能设置最大连接:

 
 
 
 

Shell

 
1
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit --limit 1/second  -j ACCEPT

硬件防火墙设置更简单,有界面化,可以直接填写数字。。。

最大连接 apache 本身可以设置

MaxClients 3  ,修改 apache 最大连接 前提还是要修改系统默认 tcp 连接数。我博客里也说了,这就不说了。

19.FTP 的主动模式和被动模式

FTP 协议有两种工作方式:PORT 方式和 PASV 方式,中文意思为主动式和被动式。

PORT(主动)方式的连接过程是:客户端向服务器的 FTP 端口(默认是 21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用 PORT 命令告诉服务器:“我打开了 XX 端口,你过来连接我”。于是服务器从 20 端口向客户端的 XX 端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的 FTP 端口(默认是 21)发送连接请 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV 命令告诉客户端:“我打开了 XX 端口,你过来连接我”。于是客户端向服务器的 XX 端口 发送连接请求,建立一条数据链路来传送数据。

从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完 全不同。

20.显示/etc/inittab 中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非空白字符的行

 
 
 
 

Shell

 
1
grep "^# \{1,\}[^ ]" /etc/inittab

21.显示/etc/inittab 中包含了:一个数字:(即两个冒号中间一个数字)的行

 
 
 
 

Shell

 
1
grep "\:[0-9]\{1\}\:" /etc/inittab

22.怎么把脚本添加到系统服务里,即用 service 来调用

在脚本里加入

 
 
 
 

Shell

 
1
2
3
#!/bin/bash
# chkconfig: 345 85 15
# description: httpd

然后保存

chkconfig httpd –add  创建系统服务

现在就可以使用 service 来 start or restart

23.写一个脚本,实现批量添加 20 个用户,用户名为 user01-20,密码为 user 后面跟 5 个随机字符

 
 
 
 

Shell

 
1
2
3
4
5
6
#!/bin/bash
#description: useradd
for i in `seq -f"%02g" 1 20`;do
useradd user$i
echo "user$i:`echo $RANDOM|md5sum|cut -c 1-5`"|passwd –stdinuser$i >/dev/null 2>&1
done

24.写一个脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些,能 ping 通则认为在线

 
 
 
 

Shell

 
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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

25.写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入 Q 或者 q 无视错误并退出其它任何键可以通过 vim 打开这个指定的脚本

 
 
 
 

Shell

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[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

26、写一个脚本:(26 包括 3 个小题)

1、创建一个函数,能接受两个参数:

1)第一个参数为 URL,即可下载的文件;第二个参数为目录,即下载后保存的位置;

2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个 51 的错误值给调用脚本;

3)如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则返回 0 给调用脚本,否则,返回 52 给调用脚本;

 
 
 
 

Shell

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost tmp]# cat downfile.sh
#!/bin/bash
url=$1
dir=$2
download()
  {
    if [[ ! -d $dir ]];then
        read -p "$dir No such directory,create?(y/n)" answer
        if [[ "$answer" == "y" ]];then
            mkdir -p $dir
        else
            return "51"
        fi
    fi
    cd $dir && wget $url >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        return "52"
    fi
    return 0
}
download $url $dir
echo $?

27、写一个脚本:(27 包括 2 个小题)

1、创建一个函数,可以接受一个磁盘设备路径(如/dev/sdb)作为参数;在真正开始后面步骤之前提醒用户有危险,并让用户选择是否继续;而后将此磁盘设备上的所有分区清空(提示,使用命令 dd if=/dev/zero of=/dev/sdb bs=512 count=1 实现,注意其中的设备路径不要写错了;

如果此步骤失败,返回 67 给主程序;

接着在此磁盘设备上创建两个主分区,一个大小为 100M,一个大小为 1G;如果此步骤失败,返回 68 给主程序;
格式化此两分区,文件系统类型为 ext3;如果此步骤失败,返回 69 给主程序;

如果上述过程都正常,返回 0 给主程序;

2、调用此函数;并通过接收函数执行的返回值来判断其执行情况,并将信息显示出来;

 
 
 
 

Shell

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if [[ -n $1 && $1 =~ "/dev/sd[a-z]" ]];
then    
    local Darray=(`ls /dev/sd[a-z]`)
    for i in ${Darray};do
        [[ "$i" == "$1" ]] && Sd=$i && break
    done
else
    return 66
fi
#当匹配成功,进入选择,告诉用户,是否继续,输错的话进入无限循环,当用户选择Y,则清空目标分区,且跳出while循环
while :;do
    read -p "Warning!!!This operation will clean $Sd data.Next=y,Quit=n [y|n]:" Choice
    case $Choice in
y)
   dd if=/dev/zero of=$Sd bs=512 count=1 &> /dev/null &&break || return 67 ;;
n)
   exit 88 ;;
*)
   echo "Invalid choice,please choice again." ;;
esac
done

#使用 echo 传递给 fdisk 进行分区,如果此命令失败,则跳转出去,错误值 68,需要注意的是,有时候这个返回值很诡异,笔者之前成功与否都是返回的 1,后来重启之后,就好了,如果慎重的话,可以对创建的分区,进行判断,不过就需要使用其他工具截取相关字段了,虽有些小麻烦,但无大碍

 
 
 
 

Shell

 
1
echo-e "n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n"|fdisk /dev/sdb&> /dev/null || return 68

#格式化之前,让内核重新读取磁盘分区表,值得注意的是,有的系统版本,使用 partprobe 无效,譬如笔者的环境是 rhel5.8,而 rhel6.0 以后,这个命令就很危险了,而使用 partx -a /dev/sdb 则效果更好…此项需慎重,如果格式化失败,则告知把失败的分区定义成变量,且跳出函数,并带出错误值 69

 
 
 
 

Shell

 
1
2
3
4
5
6
7
`partprobe`
Part=`fdisk -l /dev/$Sd|tail -2|cut -d” ” -f1`
for M in ${Part};do
   mke2fs -j $M &> /dev/null && ErrorPart=$M &&return 69
done
  return 0
}

#下面代码,调用函数,接收函数返回值,根据返回值进行判断哪里出错。

 
 
 
 

Shell

 
1
2
3
4
5
6
7
Disk_Mod $1
Res=$?
[ $Res-eq 0 ] && exit 0
[ $Res-eq 66 ] && echo "Error! Invalid input."
[ $Res-eq 67 ] && echo "Error! Command -> dd <- Faild."
[ $Res-eq 68 ] && echo "Error! Command -> fdisk <- Faild."
[ $Res-eq 69 ] && echo "Error! Command -> mke2fs <- Faild."

30道linux运维面试题(很精典)的更多相关文章

  1. 30 道linux运维题

    1.linux如何挂在windows下的共享目录mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=12345 ...

  2. Linux运维面试题:请简要说明Linux系统在目标板上的启动过程?

    Linux运维面试题:请简要说明Linux系统在目标板上的启动过程? 该问题是Linux运维面试最常见的问题之一,问题答案如下: 1.用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备( ...

  3. linux上安装shell编辑器与linux运维面试题

    分两个部分 一.安装B-shell解释器 安装cygwin  Eclipse要找到安装的bin路径 https://cygwin.com 二.安装编辑器shellEd 下载可以得到一个:net.sou ...

  4. linux运维面试题

    一.有文件file1 1.查询file1 里面空行的所在行号 grep -n "^#" file1 or awk ‗{if($0~/^$/)print NR}‘ file or g ...

  5. linux运维面试题1

    一.填空题 1. 在Linux 系统 中,以文件方式访问设备 . 2. Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统 . 3. Linux 文件系统中每个文件用indoe节 ...

  6. linux运维面试题汇总一

    1.如何让history历史命令显示命令使用的具体时间? [root@node0 ~]# export HISTTIMEFORMAT='%F  %T ' [root@node0 ~]# history ...

  7. Linux 运维笔试题(一)

    试题:   1.说出下列服务对应的端口或者端口对应的服务 21  23  25  873  161  111  110  53  123  2049   2.文件atime,ctime,mtime的区 ...

  8. Linux运维面试题之--网页打开缓慢如何优化

    服务器负载过高或者网页打开缓慢,简单说说你的优化思路 ? 首先我们要发现问题的过程,通过操作系统,数据库,程序设计,硬件角度四个维度找到问题所在 找到瓶颈点的位置 制定好优化方案,形成处理问题的体系 ...

  9. Linux 运维笔试题(一)答案

    答案:   1. ftp:21    远程连接telnet端口:23  smtp:25   rsync:873 SNMP:161   RPC(Remote Procedure Call,远程过程调用) ...

随机推荐

  1. day15数据类型

    一.浮点数 之前讲过的,有序 : 列表 元组 字符串 数字类 :int flost complex bool 散列累 :集合和字典 浮点数:--包含所有小数 和复数 复数:a +bj   实部和虚部 ...

  2. PDO drivers no value in Windows

    学习php编程遇到 Uncaught exception 'PDOException' with message 'could not find driver' 或者 Undefined class ...

  3. Yii 2 的安装 之 踩坑历程

    由于刚接触yii2 ,决定先装个试试:可是这一路安装差点整吐血,可能还是水平有限吧,  但还是想把这个过程分享出来,让遇到同样问题的同学有个小小的参考,好了言归正传!! <(~.~)> 下 ...

  4. jQuery倒计时实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 初步认识dubbo--小案例

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

  6. 学习 Tornado

    异步编程 预习 lambda Lambda functions can be used wherever function objects are required. They are syntact ...

  7. 修改已生成项目app名称

    在搜索里添加product Name,然后修改成你需要的app名称 修改完后可能会报错误如下 原因是test的测试路径发生了变化,其实如果不修改Test host的路径保留原来的重命名之前的app也是 ...

  8. 接口测试工具 — postman(post请求)

    1.登录接口 2.添加学生信息,这个接口是用来讲入参是json类型的 3.学生金币充值接口,这个接口是为了讲添加cookie以及身份验证的 4.上传文件接口

  9. 接口测试工具 — postman(get请求)

    一.Postman说明 Postman是一种网页调试与发送网页http请求的chrome插件.我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口. 二.postman安装(略) 三 ...

  10. 如何将大数据保存到 MySql 数据库

    1. 什么是大数据 1. 所谓大数据, 就是大的字节数据,或大的字符数据. 2. 标准 SQL 中提供了如下类型来保存大数据类型: 字节数据类型: tinyblob(256B), blob(64K), ...