linux脚本

shell脚本白话知识点(原创)

空扰寡人 提交于 2019-11-29 03:16:38
文章手写拼打,内容当然不是本人所创造,目的是用白话更好的记录并理解SHELL脚本,加以运用! !(感叹号)不能用双引号打印出来,只能用单引号来打印输出。但是在bash环境下,要输出感叹号必须使用单引号。这是因为默认情况下开启了使用感叹号引用内存中的历史命令的设置,可以使用set +H关闭该设置,这时可以使用感叹号输出。(done) 如果echo不加任何引号,很显然不能输出分号“;”,因为分号会被shell解析为命令连接符号。如果;不作为换行符需要加上“” 但只加单引号又不能扩展变量,使用双引号又不好输出感叹号,所以echo命令克服各种疑难杂症的方法是对特殊符号分开引用。 echo -e识别转义和特殊意义的符号,如换行符、n、制表符\t、转义符\等。 不加-n的默认情况下echo会在每行行尾加上换行符号,使用echo -n取消分行输出。(done) echo可以控制字体颜色和背景颜色输出。 常见的字体颜色:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,紫色=35,天蓝色=36,白色=37。 常见的背景颜色:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,紫色=45,天蓝色=46,白色=47。 字体控制选项:1表示高亮,4表示下划线,5表示闪烁等。 因为需要使用特殊符号,所以需要配合-e选项来识别特殊符号。(done)

第七周学习总结

你离开我真会死。 提交于 2019-11-29 03:16:28
1.Centos 5.6的启动流程 linux:kernel +rootfs+(int) kernel : 进程管理(系统调用),内存管理,网络管理,驱动程序,文件系统。安全功能。 rootfs: glibc 标准库 库:函数集合, function:调用接口 库文件(二进制程序)没有自我独立的运行的入口,只能在被调用时使用。 过程调用:procedure 不返回值,只是做了一些事 函数调用:function必须有返回值 程序: 内核设计流派: 汇编语言实现的内核,效率高但是不易移植 单内核(宏内核)设计: 把所有功能做成一个程序每一个功能在程序中使用线程来实现 () 微内核:每一功能都是由子系统实现的然后在使用中央调配系统实现某个功能就让子程序系统之间相互通信 单内核:linux 微内核:windows, solaris linux 内核 支持模块化,.ko(内核模块,对象) 用户空间的库叫.so 支持模块的装卸载。(很多内核的都可以模块化)按需装载模块 组成部分: 1.核心文件 /boot/vmlinux-VERSION(内核的版本号)-release(rpm包的发行号) 2.模块文件:/lib/modules/内核版本号+rpm包得发行号/(内核模块相互以来的文件 )真正存放内核模块的文件在kernal目录中 /lib/modules/内核版本-rpm发行版本/kernal

grub 修复及 AWK用法

时间秒杀一切 提交于 2019-11-29 02:41:12
系统启动和内核管理,各种修复及各种编译 Linux就是个内核。 ldd命令可查到每一个程序依赖的库。 Centos6的启动流程及修复 centos6启动步骤概述 1、上电POST自检,加载BIOS的硬件信息,获取第一个启动设备 2、读取第一个启动设备MBR里的引导加载程序(grub)的启动信息 3、加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备 4、核心执行init程序,并获取默认的运行信息 5、init程序执行/etc/rc.d/rc.sysinit文件 6、启动核心的外挂模块 7、init执行运行的各个批处理文件(scripts) 8、init执行/etc/rc.d/rc.local 9、执行/bin/login程序,等待一会登录 10、登录之后开始以shell控制主机 Bootloader是用来启动操作系统的。实现操作系统的前期引导。 GRUB启动程序是多部份组合而成,其中MBR的前446个字节只是他的第一个阶段。 第二阶段放在了磁盘文件:放在了/boot下的grub文件 内核放在/boot/文件下这就是内核文件 初始化的文件系统:/boot/initramfs - VERSION -release.img 这还是一个打包文件。 :先修改后缀就能解压。 :这个文件的目录和根分区的目录一样。他就是一个缩小版的根。这个文件里面就是一个隐藏版的小内核。 :-

sysbench 数据库性能测试工具的使用

ぃ、小莉子 提交于 2019-11-29 01:56:18
sysbench 数据库性能测试 Mac上安装sysbench测试工具 brew install sysbench 测试sysbench 是否安装成功 //执行这条指令 sysbench cpu --cpu-max-prime=10000 run sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Prime numbers limit: 10000 Initializing worker threads... Threads started! CPU speed: events per second: 859.16 General statistics: total time: 10.0008s total number of events: 8594 Latency (ms): min: 1.10 avg: 1.16 max: 24.47 95th percentile: 1.32 sum: 9990.99 Threads fairness: events (avg/stddev): 8594

python 读取环境变量

吃可爱长大的小学妹 提交于 2019-11-29 01:48:24
python 读取环境变量 前言 在使用python时候千万不要把账户密令直接写入脚本,特别是当你计划开源自己的作品时。 为了保护账户信息,你需要让脚本从环境中导入敏感信息。 读取方法 import os os.environ["EMAIL_PASSWORD"] window环境 Linux环境 来源: https://www.cnblogs.com/yywBlogW/p/11438410.html

shell脚本中的数学运算

半城伤御伤魂 提交于 2019-11-29 00:58:57
shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法。以后用到的时候能够来看,呵呵 1、错误方法举例 a) var=1+1 echo $var 输出的结果是1+1,悲剧,呵呵 b) var=1 var=$var+1 echo $var 输出结果是1+1。依旧悲剧,呵呵 2、正确方法 1)使用let var=1 let "var+=1" echo $var 输出结果为2。这次没有悲剧 注意: a)经我測试let差点儿支持全部的运算符,在网上看到一篇文章说“let不支持++、--和逗号、(、)”,但经我測试自加、自减、以及括号的优先级都得到了非常好的支持 b)方幂运算应使用“**” c)參数在表达式中直接訪问,不必加$ d)普通情况下算数表达式能够不加双引號,可是若表达式中有bash中的keyword则需加上 e)let后的表达式仅仅能进行整数运算 2)使用(()) var=1 ((var+=1)) echo $var 输出结果为2 注意: (())的用法与let全然同样 3)使用$[] var=1 var=$[$var+1] echo $var 输出结果位2 注意: a)$[]将中括号内的表达式作为数学运算先计算结果再输出 b)对$[]中的变量进行訪问时前面须要加$ c)$[]支持的运算符与let同样,但也仅仅支持整数运算 4)使用expr

SHELL脚本--数学运算和bc命令

核能气质少年 提交于 2019-11-29 00:57:51
使用let、(())、$(())或$[]进行基本的整数运算,使用bc进行高级的运算,包括小数运算。其中expr命令也能进行整数运算,还能判断参数是否为整数,具体用法见 expr命令全解 。 其中let和(())几乎完全等价,除了做数学运算,还支持数学表达式判断,例如数值变量a是否等于3:let a==3或((a==3)),但一般不会使用它们来判断,而是使用test命令结合条件表达式:test "$a" -eq 3。因此,本文只介绍let的赋值运算功能。 1.6.1 基本整数运算 [root@xuexi tmp]# str=10 [root@xuexi tmp]# let str=str+6 # 等价于let str+=6 [root@xuexi tmp]# let str-=5 # 等价于let str=str-5 [root@xuexi tmp]# echo $str 11 let也可以使用(( ))进行替换,它们几乎完全等价。且额外的功能是:如果最后一个算术表达式结果为0,则返回状态码1,其余时候返回状态码0。 如果想在命令行中做计算,则可以使用$(())或$[]。 [root@xuexi ~]# str=10 [root@xuexi ~]# echo $((str+=6)) 16 [root@xuexi ~]# echo $[str=str-6] 10 当然

MYSQL自动安装脚本

时光怂恿深爱的人放手 提交于 2019-11-29 00:33:24
cat mysql_auto_install.sh #!/bin/bash #Part1:整个流程分3步 #1.mysql官网下载二进制版本的mysql5.7.21安装包(mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz)和mysql_auto_install.sh脚本放至/root目录 #2.执行下文所述的mysql_auto_install.sh脚本 #3.输入您设置的密码登录数据库 ###### 二进制自动安装数据库脚本root默认密码:MANAGER, 将脚本和安装包放在/root目录即可.############### ######数据库目录/usr/local/mysql############ ######数据目录/data/mysql############ ######慢日志目录/data/slowlog############ ######端口号默认3306其余参数按需自行修改############ ######author:anzhen at 2018/02/27 function check_install_mysql_environment() { echo "################检查本机安装mysql的基本条件########################" echo "Checking user :"

从内部重启python脚本

北城余情 提交于 2019-11-29 00:33:15
我有一个基于python的GTK应用程序,可以加载几个模块。 它是从(linux)终端运行的,如下所示: ./myscript.py --some-flag setting 用户可以从程序中下载(使用Git)较新的版本。 如果存在/下载,则会出现一个按钮,我希望用新编译的内容(包括依赖项/导入)重新启动程序。 优选地,它还将使用内容 sys.argv 来 重新启动它 以保持所有标志不变。 所以我找不到/需要的是一个很好的重启过程,它杀死程序的当前实例并使用相同的参数启动一个新的。 优选地,该解决方案也适用于Windows和Mac,但它不是必需的。 解决方案 你在找 os.exec*() 。 本文首发于 Python黑洞网 ,博客园同步更新 来源: https://www.cnblogs.com/pythonzhichan/p/11436032.html

shell 删除重复文件脚本

孤街醉人 提交于 2019-11-29 00:23:39
摘自 《Linux Shell脚本攻略》一书,例子在109页,原理在110页,原理讲解的很好哦! 需要了解awk命令、xargs,脚本中所用的命令在Linux Shell脚本攻略一书中都有讲解。 #!/bin/bash ls -lS --time-style=long-iso | awk ' BEGIN {getline; getline; name1=$8; size=$5   } { name2=$8; if (size==$5) { "md5sum "name1 | getline; csum1=$1; "md5sum "name2 | getline; csum2=$1; if (csum1 == csum2 ) { print name1 ; print name2 } }; size=$5 ;name1=name2; }' | sort -u > duplicate_files cat duplicate_files | xargs -I {} md5sum {} | sort | uniq -w 32 | awk '{ print "^"$2"$" }' | sort -u > duplicate_sample echo Removing.. comm duplicate_files duplicate_sample -2 -3 | tee /dev/stderr |