2025-05-09

  1. 通过网络配置命令,让主机可以上网。
    要配置主机能够上网,需要设置以下内容:

ip 地址
子网掩码 (netmask)
默认网关 (gateway)
DNS 服务器地址 (dns)
主机名 (hostname)

设置 IP 地址

sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up

设置默认网关

sudo route add default gw 192.168.1.1

编辑 /etc/resolv.conf 设置 DNS

sudo nano /etc/resolv.conf

添加

nameserver 8.8.8.8
nameserver 8.8.4.4

设置主机名

sudo hostnamectl set-hostname myhostname

  1. 解析 /etc/sysconfig/network-scripts/ifcfg-eth0 配置格式。
    该配置文件用于设置网络接口(如 eth0)的网络参数。
    常见字段:

DEVICE=eth0:指定设备名
BOOTPROTO=dhcp:DHCP自动获取IP(静态IP可设为static)
IPADDR=192.168.1.100:指定静态IP地址
NETMASK=255.255.255.0:子网掩码
GATEWAY=192.168.1.1:默认网关
DNS1=8.8.8.8:DNS服务器

  1. 基于配置文件或命令完成 bond0 配置。
    bond0 配置用于将多个网络接口聚合为一个虚拟接口。配置步骤:

编辑 /etc/sysconfig/network-scripts/ifcfg-bond0 文件:
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100"
配置网络接口(如 eth0 和 eth1):

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
重启网络服务:
sudo systemctl restart network

  1. 通过 ifconfig 命令结果找到 IP 地址。
    运行 ifconfig 命令后,查找对应接口(如 eth0)下的 inet 字段:

ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet 后面的地址(如 192.168.1.100)即为该接口的 IP 地址。

  1. 使用脚本判断你主机所在网络内在线的主机IP有哪些?ping通则在线。

network="192.168.1"
for ip in {1..254}; do
ping -c 1 -W 1 {network}.{ip} > /dev/null
if [ ? -eq 0 ]; then echo "{network}.${ip} is online"
fi
done

  1. 使用 while read line 和 /etc/passwd,计算用户 ID 总和。
    sum=0
    while IFS=: read username password uid gid full_name home shell
    do
    sum=((sum + uid)) done < /etc/passwd echo "Total UID sum:sum"
  2. 总结索引数组和关联数组,字符串处理,高级变量使用。
    索引数组:
    arr=("apple" "banana" "cherry")
    echo {arr[1]} # 输出 "banana" 关联数组: declare -A fruits fruits["apple"]="red" fruits["banana"]="yellow" echo{fruits["apple"]} # 输出 "red"
    字符串处理:
    string="Hello World"
    echo {string:6:5} # 输出 "World" 高级变量使用: var="Hello" echo{#var} # 输出字符串长度
  3. 求10个随机数的最大值与最小值。
    max=0
    min=100
    for i in {1..10}
    do
    num=((RANDOM % 100)) echonum
    if ((num > max)); then
    max=num fi if ((num < min)); then min=num
    fi
    done
    echo "Max: max, Min:min"
  4. 使用递归调用,完成阶乘算法实现。

factorial() {
if [ $1 -le 1 ]; then
echo 1
else
local temp=(( \1 - 1 ))
local result=(factorialtemp)
echo (( \1 * result ))
fi
}
echo $(factorial 5)

  1. 解析进程和线程的区别?解析进程的结构。
    进程:独立的程序实例,拥有自己的内存空间、资源等。
    线程:进程内的执行单元,共享进程的内存和资源。
    进程结构:
    PCB(进程控制块):保存进程的状态、寄存器、堆栈等信息。
    内存空间:代码段、数据段、堆、栈等。
  2. 结合进程管理命令,说明进程各种状态。
    运行状态:进程正在执行。
    就绪状态:进程等待CPU资源。
    阻塞状态:进程等待I/O操作或事件。
    僵尸状态:进程已经结束,但父进程尚未回收其资源。 使用 ps, top 等命令可以查看进程状态。
  3. 说明 IPC 和 RPC 通信实现的方式。
    IPC(进程间通信):
    管道(Pipe)、消息队列(Message Queue)、共享内存(Shared Memory)、信号量(Semaphore)等。
    RPC(远程过程调用):
    使用 RPC 机制,可以在一台计算机上调用另一台计算机上的程序,通常基于TCP/IP协议。
  4. 总结 Linux,前台和后台作业的区别,并说明如何在前台和后台中进行状态转换。
    前台作业:用户直接交互执行,终端控制。
    后台作业:在后台运行,终端不控制。
    状态转换:
    在前台运行命令后加 & 可转为后台作业。
    使用 bg 将已暂停的作业转为后台。
    使用 fg 将后台作业调回前台。
  5. 实现定时任务,每日凌晨1点,删除指定文件。

使用 crontab

0 1 * * * rm /path/to/file

  1. 实现定时任务每月月初对指定文件进行压缩。

使用 crontab

0 0 1 * * tar -czf /path/to/compressed_file.tar.gz /path/to/file

  1. 完成鸡兔问题的解决。

for chicken in {0..30}
do
rabbit=((30 - chicken)) if (( 2 * chicken + 4 * rabbit == 80 )); then echo "鸡:chicken, 兔: $rabbit"
fi
done

  1. 使用 for 循环批量创建100个用户。

for i in {1..100}
do
if id "useri" &>/dev/null; then echo "User useri already exists"
else
sudo useradd "useri" echo "User useri added"
fi
done

  1. 练习 top, htop, iotop, iostat 工具的使用。
    这些工具用于系统资源监控:

top:显示当前进程的实时信息。
htop:类似 top,但提供彩色界面和更多交互选项。
iotop:监控磁盘I/O。
iostat:查看CPU和磁盘的I/O统计信息。

  1. 练习 awk 的使用。
    awk '{print $1}' /etc/passwd
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容