首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell 脚本进阶,经典用法及其案例

    (2)案例 #求出(1+2+...+n)的总和 sum=0 read -p "Please input a positive integer: " num if [[ $num =~ [^0-9] ]] ;then echo "input error" elif [[ $num -eq 0 ]] ;then echo "input error" else for i in `seq 1 $num` ;do sum=$[$sum+$i] done echo $sum fi unset zhi 分析:sum初始值为0,请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有判断是否为0,不为0进入for循环,i的范围为1~输入的数,每次的循环为sum=sum+i,循环结束,最后输出sum的值。 #求出(1+2+...+100)的总和 for (( i=1,num=0;i<=100;i++ ));do [ $[i%2] -eq 1 ] && let sum+=i done echo sum=$sum 分析:i=1,num=0;当i<=100,进入循环,若i÷2取余=1,则sum=sum+i,i=i+1。 2、while (1)用法格式 while 循环控制条件 ;do 循环 done 循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环 (2)特殊用法(遍历文件的每一行): while read line; do控制变量初始化 循环体 done < /PATH/FROM/SOMEFILE 或cat /PATH/FROM/SOMEFILE | while read line; do 循环体 done 依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line (3)案例: #100以内所有正奇数之和 sum=0 i=1 while [ $i -le 100 ] ;do if [ $[$i%2] -ne 0 ];then let sum+=i let i++ else let i++ fi done echo "sum is $sum" 分析:sum初始值为0,i的初始值为1;请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有当i<100时,进入循环,判断 i÷2取余 是否不为0,不为0时为奇数,sum=sum+i,i+1,为0,i+1;循环结束,最后输出sum的值。 3、until 循环 (1)用法 unitl 循环条件 ;do 循环 done 进入条件:循环条件为true ;退出条件:循环条件为false;刚好和while相反,所以不常用,用while就行。 (2)案例 #监控xiaoming用户,登录就杀死 until pgrep -u xiaoming &> /dev/null ;do sleep 0.5 done pkill -9 -u xiaoming 分析:每隔0.5秒扫描,直到发现xiaoming用户登录,杀死这个进程,退出脚本,用于监控用户登录。 4、select 循环与菜单 (1)用法 select variable in list do 循环体命令 done

    01

    初识VMM_vmem是什么意思

    虚拟化让一台机器上可以运行多种操作系统类型和版本,文章通过讨论Disco的基本技术,了解虚拟化工作机制。要在虚拟机监视器上运行虚拟机所使用的基本技术是有限的直接执行,也就是操作系统如何虚拟化CPU的技术,因此在VMM上“启动”一个新的操作系统时,我们只需跳到第一个指令的地址,让操作系统开始运行即可。 正在运行的应用程序或操作系统试图执行某种特权操作时又会牵扯到VMM对进程尝试系统调用的行为进行干预的情况。 从以前讲的用户态、核心态来说trap命令让用户态进入核心态可以执行一些特权操作,当控制器是VMM,VMM不知道每个调用应该做什么。然而,VMM所知道的是操作系统的trap处理程序在哪里,VMM记录了必要的信息,当VMM从在给定操作系统上运行的用户进程接收到一个trap指令时,跳到操作系统的trap处理程序,并让操作系统按它应该的方式处理系统调用。虚拟化内存的时候VMM添加另一层虚拟化,以便多个操作系统能够共享机器的实际物理内存,通过页表、快表实现将得到的物理映射映射到底层机器地址。 VMM发展史上是消失过一段时间的,后又以服务器合并和实用程序计算的名义重出江湖,围绕兼容性、性能和简单性不断进步。为了解决如何在无法虚拟化的cpu上实现VMMs,半虚拟化和直接执行与快速二进制转换相结合的方法出现了, 它们将原始指令集的不可虚拟化部分替换为易于虚拟化和更有效的等价部分。但是VMM的虚拟内存子系统不断地控制有多少内存进入虚拟机,并且它必须通过将虚拟机的一部分分页到磁盘来周期性地回收一部分内存,具体操作的时候就会出现频繁访问页表的情况,导致不必要的开销,这又推动资源管理领域的进步。总的来说VMM的复兴似乎从根本上改变了软件和硬件设计师看待、管理和构建复杂软件环境的方式。VMMs还为部署创新的操作系统解决方案提供了向后能力路径,这些解决方案既能满足当前的需求,又能安全地利用现有的软件基础。

    04
    领券