一些面试(笔试)题

1、请解释如下 cron6:
* * * * * test -f /etc/dAppCluster/gethits.py && /etc/dAppCluster/gethitspy > /dev/null 2>&1
20 4 * * * test -d /data1/www/logs && /usr/bin/find /data1/www/logs -name '*-error_log"-atime +7 -type f -exec rm -f f  ; 2>&1
  • `* * * * * test -f /etc/dAppCluster/gethits.py && /etc/dAppCluster/gethitspy > /dev/null 2>&1`
  • 这个 cron 表达式对应的任务会在每天的所有小时和分钟执行。
  • 它首先执行测试命令 `test -f /etc/dAppCluster/gethits.py` 来检查是否存在 `/etc/dAppCluster/gethits.py` 这个文件
  • 如果存在,则执行 `/etc/dAppCluster/gethitspy` 这个命令。`> /dev/null 2>&1` 是将命令的标准输出和错误输出都重定向到空设备文件,即将执行结果丢弃,不产生任何输出。

  • `20 4 * * * test -d /data1/www/logs && /usr/bin/find /data1/www/logs -name '*-error_log' -atime +7 -type f -exec rm -f {} \; 2>&1`
  • 这个 cron 表达式对应的任务会在每天的4点20分执行。
  • 它首先执行测试命令 `test -d /data1/www/logs` 来检查 `/data1/www/logs` 目录是否存在
  • 如果存在,则执行 `/usr/bin/find` 命令来查找 `-name '*-error_log' -atime +7 -type f` 条件匹配的文件,并使用 `-exec` 参数执行 `rm -f {} \;` 命令来删除这些文件。`-atime +7` 表示文件的最近一次访问时间距今超过7天。`2>&1` 是将命令的标准错误输出重定向到标准输出,即将错误信息一同输出。
2、编写一个Shell脚本,功能是求出一个文本文件的行数、字数和字符数,并输出到屏幕上。假设该文本文件的路径是 /home/user/file.txt。
#! /bin/bash

file_dir="/home/admin/file.txt"
# 统计 -l行数 -w字数 -m字符数  -L最长一行长度
lines=$(wc -l < "$file_dir")
words=$(wc -w < "$file_dir")
characters=$(wc -m < "$file_dir")
# 输出结果
echo "行数: $lines"
echo "字数: $words"
echo "字符数: $characters"
3、添加用户 ambow,密码为123456的方法有:如何批量添加用户sgt110701-sqt110730
#! /bin/bash

useradd ambow
echo  12346 | passwd --stdin ambow
#批量添加用户
for ((i=1;i<=30;i++))
do
  useradd sqt1107$i
done
4、 请写出iptables -AINPUT -p icmp -i cmp-type 8 -j ACCEPT这条命令的作用

在 iptables 规则中添加一条规则,用于允许 ICMP Echo Request(类型为 8)通过防火墙的 INPUT 链。

  • -A INPUT:表示将规则添加到 INPUT 链的末尾。
  • -p icmp:指定匹配 ICMP 协议的数据包。
  • --icmp-type 8:指定匹配 ICMP 类型为 8(Echo Request)的数据包。
  • -j ACCEPT:表示匹配上述条件的数据包将被接受(即允许通过防火墙)。
5、集群内有300台主机,如果要收集所有主机的IP地址,可以通过什么工具或者命令实现?如果要将一个rm包上传至所有主机,可以通过什么工具或者命令实现?
  1. 使用主机配置管理工具:例如Ansible、Puppet、SaltStack

  2. scp等传输文件

 6、请写出sed-n 1p testfile这个命令的作用

只输出文件中第一行的内容。

  • -n:表示关闭默认输出,并只输出经过命令处理后的内容。
  • 1p:sed 的打印命令,表示输出匹配到的行。在这里,1p 表示匹配第一行并输出。
7、请以域名为维度实时(5S 一次)统计,apache 日志/var/log/httpd/access_log 的 http状态码及相应状态码的日志条数,输出的内容如下:
domianname            httpcode        counter
www.sina.com.cn            200            1000
www.sina.com.cn            503            100
www.sinacom.cn            200            500
sports.sina.com.cn        404            3
#! /bin/bash

while true
do
    # 使用 awk 命令实时统计域名和状态码的计数
    awk '{status[$11" "$9]++} END {for (domain in status) print domain, status[domain]}' /var/log/httpd/access_log > httpcode_counter.txt
    # 输出结果表头
    echo "domainname        httpcode        counter"
    # 从 httpcode_counter.txt 文件中读取并输出统计结果
    while IFS= read -r line
    do
        echo "$line"
    done < httpcode_counter.txt
    # 清空 httpcode_counter.txt 文件
    > httpcode_counter.txt
    # 等待5秒
    sleep 5
done
8、用虚拟机安装了一台 Linux 系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?
  1. 网络适配器的 MAC 地址冲突:当克隆一台服务器时,通常会出现网络适配器的 MAC 地址冲突,这可能导致网络无法正常工作。解决这个问题的方法是:在克隆后修改虚拟机的网络适配器的 MAC 地址。
  2. IP 地址冲突:克隆的服务器和现有的服务器使用相同的 IP 地址,会导致网络冲突。解决这个问题的方法是:可以手动修改克隆服务器的网络配置文件,或者通过 DHCP 分配一个新的 IP 地址,以确保克隆的服务器使用一个唯一的 IP 地址。
  3. 网络配置文件不正确:在克隆服务器后,网络配置文件可能需要更新。查看克隆服务器的网络配置文件(如 /etc/network/interfaces 或 /etc/sysconfig/network-scripts/ifcfg-)并确保与网络环境相匹配,包括正确的 IP 地址、网关、DNS 等信息。
  4. 防火墙配置问题:如果克隆服务器上的防火墙配置不正确,可能会阻止网络流量。确保防火墙允许必要的入站和出站连接。可以查看防火墙配置文件(如 /etc/iptables/ 或 /etc/firewalld/)来检查并更新规则。
9、 每次开机在/unp目录下创建一个当天的日期文件头提示:当前日期表示的方法为:date +%Y/em/ed)
#! /bin/bash

cat << end >/etc/rc.d/rc.local
dateStr=$(date +%Y/%m/%d)
echo "当前日期:$dateStr" > /unp/$dateStr.txt
end

chmod +x /etc/rc.d/rc.local
10、用tcpdump嗅操80端口的访看看谁最高
sudo tcpdump -i eth33 port 80 -nn -c <嗅探包数量> | awk '{print $3}' | sort | uniq -c | sort -nr

你可能感兴趣的:(linux运维,服务器,linux,运维)