一、求10个随机数的最大值与最小值
#!/bin/bash
numbers=()
for ((i=0; i<10; i++))
do
numbers[$i]=$((RANDOM % 100))
done
echo "随机数列表: ${numbers[@]}"
min=${numbers[0]}
max=${numbers[0]}
for num in "${numbers[@]}"
do
if ((num < min))
then
min=$num
fi
if ((num > max))
then
max=$num
fi
done
echo "最小值: $min"
echo "最大值: $max"
二、使用递归调用,完成阶乘算法实现
#!/bin/bash
factorial() {
local num=$1
local result=1
if [ $num -eq 0 ]; then
echo $result
else
for ((i=1; i<=$num; i++))
do
result=$((result * i))
done
echo $result
fi
}
result=$(factorial 10)
echo "10的阶乘: $result"
三、解析进程和线程的区别
进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
每个进程都有独立的地址空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。
一个进程崩溃后,在保护模式下其他进程不会被影响,但是一个线程崩溃可能导致整个进程被操作系统杀掉,所以多进程要比多线程健壮。
四、总结OOM原理,及处理方法
OOM是内存不足,系统会通过杀掉一些进程来释放内存。
处理方法:查看是哪个进程占用过多内存,将该进程关闭;
或者加大内存。
五、总结内核设计流派及特点
内核设计流派:
单内核:单一的体系结构,将所有的功能都集中在一起
特点:效率更高。
微内核:将各个功能做成不同的内核子系统
特点:稳定性高,单效率低。
六、手写chkconfig服务脚本,可以实现服务的开始,停止,重启
#!/bin/bash
SERVICE_NAME="my_service"
SERVICE_START_COMMAND="/path/to/start_command"
SERVICE_STOP_COMMAND="/path/to/stop_command"
check_service_status() {
if ps aux | grep -v grep | grep -q "$SERVICE_START_COMMAND"; then
echo "Service is running."
else
echo "Service is not running."
fi
}
start_service() {
if check_service_status; then
echo "Service is already running."
else
echo "Starting service..."
$SERVICE_START_COMMAND
fi
}
stop_service() {
if check_service_status; then
echo "Stopping service..."
$SERVICE_STOP_COMMAND
else
echo "Service is not running."
fi
}
restart_service() {
stop_service
start_service
}
case "$1" in
start)
start_service
;;
stop)
stop_service
;;
restart)
restart_service
;;
status)
check_service_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0