shell脚本

大型网站架构——百万PV

限于喜欢 提交于 2020-02-25 18:58:01
简介 PV即点击量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的重要指标。PV从某种程度上已经成为投资者衡量商业网站表现的最重要的尺度。 PV是一个访问者在24小时到底看了网站的几个页面。 案例描述 本案例设计采用四层模式实现,主要分为前端反向代理,web层,数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存采用主备模式,数据库层采用主从模式。 案例环境 主:192.168.177.145 centos7-1 从:192.168.177.135 centos7-2 节点1:192.168.177.132 centos7-3 节点2:192.168.177.133 centos7-4 主服务器 从服务器 安装带有nginx rpm软件包的源 #rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/\ nginx-release-centos-7-0.el7.ngx.noarch.rpm 使用centos 默认仓库完成下面的安装 主 #yum install -y keepalived nginx #vim /etc/keepalived/keepalived.conf //从上修改三个参数 ! Configuration File for keepalived vrrp_script

第 5 章 shell编程_课后题

Deadly 提交于 2020-02-25 18:56:57
考试题1:用source执行脚本和用bash执行Shell脚本的区别是什么? souce执行脚本相当于是在一个shell当中,而bash执行脚本相当于开启了一个子shell。就变量而言,一个shell当中执行的变量是可以用的,而子shell的变量,父shell中是不能继承的,子脚本执行完后,变量就失效了。 考试题2:如何自定义环境变量? 变量分为:环境变量和普通变量,环境变量定义:例子 echo 'Oldboy=od' >>/etc/bashrc source /etc/bashrc 优先级: /etc/bashrc ~/.bashrc ~/.bash_profile /etc/profile 考试题3:定义变量内容,不加引号、单引号、双引号、反引号结果有什么不同?应该怎么用? 不加引号:默认相当是双引号 数字 单引号:所见即所得,吃啥吐啥 不想被解析的变量、函数 双引号:会将变量、函数、特殊符号等解析出来 字符串 反引号:会先计算反引号里面的命令 想优先计算的命令 考试题4:请分别说出2个以上用于整数运算特殊符号或命令,以及适合小数运算的命令。 整数:(()) expr let $[] 适合小数:bc awk 考试题5:写出特殊变量对应的意义及应用 br/>$0、$n、$#、$*、$@、$?、$$、$!、$_ $0表示文件名 br/>$n表示第n个参数 $#表示参数的个数 $

shell中$0,$?,$!等的特殊用法

我是研究僧i 提交于 2020-02-25 13:02:27
shell中$0,$?,$!等的特殊用法 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# 添加到Shell的参数个数 $0 Shell本身的文件名 $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 我们先写一个简单的脚本,执行以后再解释各个变量的意义 # touch variable # vi variable 脚本内容如下: #!/bin/sh echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@" 保存退出 赋予脚本执行权限 # chmod +x variable 执行脚本 # ./variable aa bb number:2 scname:./variable first: aa second:bb argume:aa bb 通过显示结果可以看到: $# 是传给脚本的参数个数

Shell输入/输出重定向

放肆的年华 提交于 2020-02-25 12:37:13
输出重定向 重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示 command1 >file1 上面这个命令执行command1然后将输出的内容存入file1。 注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。 实例 执行下面的 who 命令,它将命令的完整的输出重定向在用户文件中(users) who >users 执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。 你可以使用 cat 命令查看文件内容 cat users h tty7 2017-08-10 11:48 (:0) 输入重定向 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为 command1 <file1 这样,本来需要从键盘获取输入的命令会转移到文件读取内容 注意:输出重定向是大于号(>),输入重定向是小于号(<) 实例 接着以上实例,我们需要统计 users 文件的行数,执行以下命令 $ wc -l users 1 users wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出:-l 统计行数 也可以将输入重定向到 users 文件 $ wc -l <users 1 注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会

Shell脚本传递带有空格的参数[摘录自网络]

风流意气都作罢 提交于 2020-02-25 12:17:45
参数处理 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数。 $- 显示Shell使用的当前选项,与set命令功能相同。 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 MD duanwf 23742 CDR_CALL_YYYYMMDD /home/duanwf/asiainfo/export/T141015001_20141014.avl & fetch first 100000 rows only   最后的“fetch first 100000 rows only”为第七个参数,但是识别的时候只获取到fetch, 那要怎么处理呢? 之前问了有人说可以用双引号把他引起来,最后结果还是一样,无法拿到,只能获取到 "fetch   还是会自动在空格前自动断开。    可以通过$@命令来处理,即将$7换成echo ${@:7},这样将自动识别到的第7个开始,全部获取到作为最后第7个参数,参数获取改为: 来源: https://www.cnblogs.com/wxb0328/p/4276751.html

linux中shell变量$#,$@,$0,$1,$2

╄→гoц情女王★ 提交于 2020-02-25 12:14:40
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# 添加到Shell的参数个数 $0 Shell本身的文件名 $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 我们先写一个简单的脚本,执行以后再解释各个变量的意义 # touch variable # vi variable 脚本内容如下: #!/bin/sh echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@" 保存退出 赋予脚本执行权限 # chmod +x variable 执行脚本 # ./variable aa bb number:2 scname:./variable first: aa second:bb argume:aa bb 通过显示结果可以看到:

shell中$0,$?,$!等的特殊用法

删除回忆录丶 提交于 2020-02-25 12:13:16
变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $# 添加到Shell的参数个数 $0 Shell本身的文件名 $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 我们先写一个简单的脚本,执行以后再解释各个变量的意义 # touch variable # vi variable 脚本内容如下: #!/bin/sh echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@" 保存退出 赋予脚本执行权限 # chmod +x variable 执行脚本 # ./variable aa bb number:2 scname:./variable first: aa second:bb argume:aa bb 通过显示结果可以看到: $# 是传给脚本的参数个数 $0 是脚本本身的名字

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

心不动则不痛 提交于 2020-02-25 12:04:39
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 运行结果: $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

蹲街弑〆低调 提交于 2020-02-25 12:04:11
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 运行结果: $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara

Ubuntu学习总结-08 Ubuntu运行Shell脚本报 shell /bin/bash^M: bad interpreter错误问题解决

▼魔方 西西 提交于 2020-02-25 11:45:45
  错误原因之一很有可能是运行的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A. 可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的 (1). vi filename 然后用命令 :set ff? 可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看. (2). 用joe filename 如果是DOS格式的, 那么行尾会有很多绿色的^M字样出现. 你也可以用上述办法把它转为UNIX格式的. (3). 用od -t x1 filename 如果你看到有0d 0a 这样的字符, 那么它是dos格式的, 如果只有0a而没有0d, 那么它是UNIX格式的, 同样可以用上述方法把它转为UNIX格式的. 转换不同平台的文本文件格式可以用 1. unix2dos或dos2unix这两个小程序来做. 很简单. 在djgpp中这两个程序的名字叫dtou和utod, u代表unix, d代表dos 2. 也可以用sed 这样的工具来做: sed 's/^M//' filename > tmp_filename mv -f tmp_filename filename 来做 说明:^M并不是按键shift + 6产生的