linux脚本

Linux笔记 系统启动流程

拜拜、爱过 提交于 2019-11-27 02:25:41
前言:   Linux 是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux是自由软件和开放源代码软件发展中最著名的例子。   接触Linux的时间也不算短了,一直都是直接使用Linux操作系统进行一些工作,很少去了解系统从开机到能使用的整个过程,感觉有需要好好理解下整个系统的启动过程,故写这篇博客加深一下理解。 先通过一张图来简单了解下整个系统启动的流程,整个过程基本可以分为POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel。下面会详细说明每个过程的作用。 BIOS   BIOS(Basic Input/Output System),基本输入输出系统,该系统存储于主板的ROM芯片上,计算机在开机时,会最先读取该系统,然后会有一个加电自检过程,这个过程其实就是检查CPU和内存,计算机最基本的组成单元(控制器、运算器和存储器),还会检查其他硬件,若没有异常就开始加载BIOS程序到内存当中。详细的BIOS功能,这边就不说了,BIOS主要的一个功能就是存储了磁盘的启动顺序,BIOS会按照启动顺序去查找第一个磁盘头的MBR信息,并加载和执行MBR中的Bootloader程序,若第一个磁盘不存在MBR,则会继续查找第二个磁盘

2019-8-10-linux

走远了吗. 提交于 2019-11-27 02:24:30
2019-8-10-linux 程序的组成 代码重定位 基本概念 链接脚本的作用 链接脚本介绍 链接脚本代码实例分析 C函数怎么使用lds文件中的变量 如何编写位置无关码 重定位代码实例分析 方式一 重点: #F44336 方式二 C函数怎么使用lds文件中的变量 #F44336 汇编文件中可以直接使用外部连接脚本中的变量,但C函数中要加上取地址符号的原因: 程序的组成 代码段:用于存放数据 数据段:用于存放全变量(有初始值,且不为零) 只读数据段:用于存放只读数据,如:const 变量 bss段:用于存放未初始化的全局变量,或初始化为零的全局变量 comment段:用于存放代码的一些注释信息 其中bss段和comment的内容不存放在bin文件中。 代码重定位 为什么需要代码的重定位 2440的启动方式有两种,nor flash启动和nand flash启动。(1) 首先讲解norflash启动的特点,noflash启动时,norflash中的内容可以像内存一样写,但是不能像内存一样读,因此会出现程序中变量进行修改无效的情况,其内部深层次的原因是,程序中的全局变量和静态变量都存放在bin上,写在norflash中,直接修改无效,因此需要重定位。(2)若采用nand flash启动,2440默认会将nand flash的前4k内容拷贝到sram中,此时sram的地址是从0开始的

Shell脚本编程与文件系统修复

做~自己de王妃 提交于 2019-11-26 22:48:39
Linux 基金会认证程序。 Video Player 本讲集中讲解简单的 Shell 脚本编程和文件系统修复。这两块内容都是 LFCS 认证中的必备考点。 理解终端 (Terminals)和 Shell 首先要声明一些概念。 Shell 是一个程序,它将命令传递给操作系统来执行。 Terminal 也是一个程序,允许最终用户使用它与 Shell 来交互。比如,下边的图片是 GNOME Terminal。 Gnome Terminal 启动 Shell 之后,会呈现一个命令提示符 (也称为命令行) 提示我们 Shell 已经做好了准备,接受标准输入设备输入的命令,这个标准输入设备通常是键盘。你可以参考该系列文章的 “如何在Linux上使用GNU sed等命令来创建、编辑和操作文件”来温习一些常用的命令。 Linux 为提供了许多可以选用的 Shell,下面列出一些常用的: bash Shell Bash 代表 Bourne Again Shell,它是 GNU 项目默认的 Shell。它借鉴了 Korn shell(ksh) 和 C shell (csh) 中有用的特性,并同时对性能进行了提升。它同时也是 LFCS 认证中所涵盖的各发行版中默认 Shell,也是本系列教程将使用的 Shell。 sh Shell Bourne SHell 是一个比较古老的 shell

Shell编程

拜拜、爱过 提交于 2019-11-26 22:44:33
   1、shell结构     一个简单的例子: [root@localhost shell]# vi example #!/bin/sh #This is show what a example looks like. echo "my first shell example." echo # this inserts an empty line in output. echo "We are current in the following directory." /bin/pwd echo ~ ~ ~     1)#!  指定执行脚本的shell     2)#  注释行     3)命令和控制结构    2、创建shell的步骤     1)创建一个包含命令和控制结构的文件     2)修改这个文件的权限使它可以执行,使用 chmod u+x     3)执行 ./文件名 或者 sh 文件名 [root@localhost shell]# ./example my first shell example. We are current in the following directory. /shell [root@localhost shell]#       3、shell变量     1)变量:是shell传递数据的一种方法,用来代表每个取值的符号名      2

shell脚本编程基础

落爺英雄遲暮 提交于 2019-11-26 21:28:09
一编程基础 1程序编程风格 程序:指令+数据 程序编程风格: (1)过程式:以指令为中心,数据服务于指令。 程序员把主要的精力集中在程序指令上,一步步怎么做的。比如C、C++符合人类处理事情的逻辑关系的,不过这适合简单的事情。 对于大型的应用程序的开发这种方法是非常难的,会产生混乱。 (2)对象式:以数据为中心,指令服务于数据。 通过指令处理数据,得到我们关心的结果,程序最重要的功能是在处理数据上。 对于大型的事是采用这种方法。比如盖大楼要雇用一些团队,把大的工作分解成小的工作。设计图纸有专门的设计院来完成,搬砖要有专门的工人。 对于大的项目来说不太关注每个流程了。更多的考虑把任务分包给具体的人,每个团队做自己的事,做完就好,不关心做事的方式。 就像有句话叫做只要白猫黑猫能抓住老鼠的就是好猫。 大项目使用的是面向对象,而小项目是面向过程。我们现在编脚本还是面向过程式的。 2程序的执行方式 (1)计算机:运行二进制指令 计算机只能识别二进制。计算机真的要运行一个程序,要把人类能够理解的东西转化成二进制。 (2)编程语言: 1低级:汇编 汇编语言也是字符串,和机器语言是一一对应的,要把汇编语言转化成机器码进行分析。 2高级: <1>编译 <1>编译:高级语言-->编译器-->目标代码 比如java,C# 编译型的语言要转化成二进制的内容才会执行,需要有编译器生成二进制的东西。

shell脚本编程基础

[亡魂溺海] 提交于 2019-11-26 21:27:23
shell编程基础(转自UBUNTU论坛) (2008-11-05 12:49:20) 转载 标签: shell 分类: 编程(C++) http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80 为什么要进行shell编程   Linux系统中虽然有各种各样的图形界面工具,但shell仍然是一个非常灵活的工具。Shell不仅集合了大量命令,还是一门非常棒的编程语言。借助shell,大量任务能实现自动化;shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。   下面,让我们一起来看看shell是如何工作的: 建立一个脚本   Linux中有许多种不同的shell,通常我们使用bash (bourne again shell) 进行shell编程,因为bash不仅免费(自由)且易于使用。本文提供的脚本都用bash(当然大多数情况下,这些脚本同样可以在bash的前辈,bourne shell中运行)执行。   如同其他语言一样,我们可以使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): 代码: #!/bin/sh   符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh。编辑完了

最详细LInux运维面试题目

不问归期 提交于 2019-11-26 20:40:58
不 管 你 才 踏 出 社 会 ,还 是 已 久 经 沙 场 , 请 相 信 ,这 个 世 界 上 ,岁 月 对 每 个 人 都 是 公 平 的 , 1 天 都 是 24 个 小 时 ,一 分 钟 都 是 6 0 秒 。也 许 你 要 花 久 一 点 的 时 间 才 能 找 到 你 真 正 想 做 的 事 情 ,也 许 你 要 花 长 一 点 的 时 间 才 能 改 变 现 在 的 状 况 ,但 是 不 管 早 还 是 晚 ,请 你 一 定 要 出 发 ,不 管 是 早 还 是 晚 ,请 记 得 一 定 要努力去做、去改变!!! 十年杭漂,今撤霸都对了,号主还是《运维工程师进阶成神之路》系列文章的作者,文章从最基础的网络基础 开篇,涉及系统基础、新手必备命令与 Shell 脚本编写、Linux 服务部署与配置、面试题 讲解;再到提高篇:MySQL 数据库、企业生产项目实战案例、云计算、Docker 容器、虚 拟化技术、企业架构实战;最后还提高一些实际职场中的踩坑经验总。总结成一句话:干 货满满的,无论开发、运维、测试都值得学习一波 。 关注“民工哥技术之路”回复“成神之路”可获最新版本 此系列 Github 地址: https://github.com/mingongge/BestOPS 关注民工哥技术之路回复“备份”获取生产数据备份方案 看了这么多民工哥技术之路的文章之后

shall脚本day02

有些话、适合烂在心里 提交于 2019-11-26 19:56:58
一、重定向和管道符   1.重定向(-tr):在程序中,数据的输入输出方式:   数据输入:键盘--标准输入人,但又不是唯一的输入方式   --stain   echo "123456"|passwd --stdin"username"   例如:功能添加用户useradd.sh.user.txt文本文档1000个用户 ./useradd.sh.a ./useradd.sh.b ... ./useradd.sh<user.txt> while line;do 循环体 $line done</etc/passwd>    数据输出:显示器--标准输出,但不是唯一的输出方式  fa 文件标识符 0-9 //相当于给文件分类   0--标准输出   1--标准输入   2--错误输入输出(标准错误)      常见重定向符号:       1.标准输出       > 覆盖重定向,使用时应注意,极其危险         ser -c //去掉重定向的功能         >| //强制重定向       >> 追加重定向 不覆盖       2.标准输入              3.错误输出         2> 2>>         扩展:不需要输出内容,只要输出状态: ls/etc/ > /dev/null if [$? -eq 0];then ,,,,,     fi     

使用 shell 脚本监控 Linux 主机

本秂侑毒 提交于 2019-11-26 19:49:35
编写以下脚本命令: [root@localhost sh]# vim sysmon.sh #!/bin/bash #提取性能监控指标(磁盘占用、CPU使用、内存使用) DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}') CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')) MUG=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}')) #设置告警日志文件、告警邮箱 ALOG="/tmp/alert.txt" # 日志文件的变量 AMAIL="root" # 发送到邮箱的变量 #判断是否记录告警 if [ $DUG -gt 80 ] then echo "磁盘占用率:$DUG %" >> $ALOG fi if [ $CUG -gt 70 ] then echo "CPU使用率:$CUG %" >> $ALOG fi if [ $MUG -gt 80 ] then echo "内存使用率:$MUG %" >> $ALOG fi #判断是否发送告警邮件

08、启动过程+at+crond+anacron

此生再无相见时 提交于 2019-11-26 19:38:18
-- [root@li ~]# 加电--BIOS (basic input output system)--以什么设备来启动--/dev/sda -- mbr -- grub.conf --vmlinux and initramfs -- init -- /etc/inittab -- /etc/fstab -- /etc/rc.sysinit -- ls /etc/rcx.d -- /etc/rc.local --登录 系统引导程序 grub (就是一个boot loader) Grand Unified Boot Loader [root@li ~]# rpm -qa |grep grub grub-0.97-13.5 [root@li ~]# rpm -qi grub-0.97-13.5 Summary : GRUB - the Grand Unified Boot Loader. Description : GRUB (Grand Unified Boot Loader) is an experimental boot loader capable of booting into most free operating systems - Linux, FreeBSD, NetBSD, GNU Mach, and others as well as most