菜单

澳门金沙国际Linux Shel高级技术(目录)

2019年3月25日 - www6165com

 

贰 、变量: 命名的仓储空间

数码的蕴藏格局有:

字符:   
数值:整型,浮点型 

变量类型:
作用:

1、定义数据存储格式
2、定义参与的运算    
3、表示的数据范围

类型:

字符    
数值:整型,浮点数

编制程序语言的变量又有强类型和弱类型的差异

强类型:jave,C++
    变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换,故需要定义数据类型
弱类型:bash
   变量会有隐式转换,故不需要指定数据类型,所有要存储的数据都当做字符进行,不支持浮点数

 

     
为了便利大家每种人的求学,这里将交给Linux
Shell高级技术五篇系列博客的目录以供大家在急需时参考和查找。

 

逻辑运算

与: 
    1 && 1 = 1    
    1 && 0 = 0   
    0 && 1 = 0
    0 && 0 = 0
或: 
    1 || 1 = 1
    1 || 0 = 1
    0 || 1 = 1
    0 || 0 = 0
非:
    !1 = 0
    !0 = 1
异或:相同为假,不同为真 
短路运算:
    短路与:
        第一个为0,结果必为0   
        第一个为1,第二个必须要参与运算
    短路或:
        第一个为1,结果必为1
        第一个为0,第二个必须参与运算

澳门金沙国际 1

2. Admin Ping Command的性质优势测试

看了上边的介绍,大家一定有不少可疑。例如,用ping比用select
1到底快多少?如何在Server端监察和控制?下文将经超过实际际测试一一分析。

如何在MySQL Server端阅览到Admin Ping Command?

事实上MySQL有1个特别的计数器来总括ping命令。通过show global status like
‘Com_admin_commands’ 即可看出从Server运转后累计接到到的ping命令次数

Admin Ping Command的属性优势有多大?

上边通过3个大约的perl测试脚本,来观看常用的 select 1 和
ping命令之间的品质差别。脚本分别重复执行80000次ping和select
1,通过time相比较两者之间的总执行时间的差距。脚本如下:

use strict;
use warnings;
use utf8;
use DBI;
use IO::Socket;
use FileHandle;


my $CONFIG_SERVER_IP  ='192.168.26.167';
my $CONFIG_SERVER_DB='test';
my $CONFIG_SERVER_PORT='3310';
my $CONFIG_SERVER_USER='root';
my $CONFIG_SERVER_PASS='password';
my $dbh = DBI->connect("DBI:mysql:$CONFIG_SERVER_DB;host=$CONFIG_SERVER_IP;port=$CONFIG_SERVER_PORT", $CONFIG_SERVER_USER, $CONFIG_SERVER_PASS,{RaiseError => 1}) || die "Could not connect to database: $DBI::errstr";


for(my $i=0;$i<100000;$i++){
    #my $result=$dbh->do('/* ping */select 1');
    my $result=$dbh->ping;
}

实践结果:

select 1:

real    0m5.968s
user    0m1.235s
sys    0m1.175s

real    0m6.003s
user    0m1.195s
sys    0m1.236s

real    0m6.155s
user    0m1.225s
sys    0m1.237s

Admin Ping:

real    0m3.426s
user    0m0.604s
sys    0m1.115s

real    0m3.483s
user    0m0.681s
sys    0m1.081s

real    0m3.467s
user    0m0.614s
sys    0m1.136s

取平均值后,

SELECT 1八万次施行时间: 6.03 秒

Admin PING80000次实践时间:3.45秒

看得出后者质量整整高出 74%
,对于链接池那种对响应时间必要极高的兑现的话,财富的节约相当可观。

 

参考资料:

 

 

 

 

 

 

 

Linux
Shell高级技术(四)

十玖 、将文件的输出格式化为钦赐的宽窄
二10、监控钦命目录下磁盘使用空间过大的用户
二十① 、编写1个更具可读性的df命令输出脚本
二十贰 、编写3个用来添加新用户的台本
二十③ 、kill钦赐用户或钦命终端的用户进度
二十④ 、判断用户输入(是/否)的省心格局

 

肆 、bash的配置文件

按生效范围划分:存在两类
    全局配置:
        /etc/profile
            /etc/profile.d/*.sh
        /etc/bashrc    
    个人配置:
        ~/.bash_profile
        ~/.bashrc
按功能划分:存在两类
    profile类:为交互式登录的shell提供配置
        全局:/etc/profile,/etc/profile.d/*.sh
        个人:~/.bash_profile
        功用:
            (1)用于定义环境变量
            (2)运行命令和脚本

    bashrc类:为非交互式登录的shell提供配置
        全局:/etc/bashrc
        个人:~/.bashrc
        功用:
            (1)定义命令别名
            (2)定义本地变量
    修改文件后生效:
       1、重启shell进程
       2、source ~/.bashrc
          . ~/.bashrc  
bash退出任务
    保存在~/.bash_logout 文件中(用户)
    在退出登录shell 时运行
    用于
        创建自动备份
        清除临时文件

shell登录:
    交互式登录:
        直接通过终端输入账号密码;
        使用“su -UserName”或“su -l UserName”切换的用户
        读取文件的顺序:
            /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
    非交互式登录:
        su UserName
        图形界面下打开终端
        执行脚本
        文件读取顺序:
            ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh 
编辑配置文件定义的新配置的生效方式:
    (1)重新启动shell进程
    (2)使用source或.命令进程   

1. 关于Admin Ping Command?

由于查阅官方文书档案中从未有关Admin Ping
Command的叙说和介绍。因而,谷歌了很多页面,把我们的阐发做一个民用精晓总计如下:

怎么着是Admin Ping Command(后文简称ping命令)? 

ping命令实际上是提供了一种中度消耗命令接口,那种接口用于去判断1个锲而不舍连接是还是不是存活,或许远端MySQL是还是不是存活。

当远端MySQL
Server接收到那种奇异情势的指令后,不做越来越多的语法解析和执行安插优化,直接回到结果。

Admin Ping Command有何样用?

在运用链接池方法连接MySQL的时候,那么些命令就显得十一分实用。因为链接池再把一个空闲链接句柄给到客户端的时候并不知道那么些链接是或不是照旧存活(即没有过期也许被Server
主动kill)。链接池要求用三个限令去看清并触及重连。而那时候Ping
Command无疑是代价最小的。假若有同学团结用java代码去贯彻MySQL链接池的话,链接存活判断使用Admin
Ping Command是一级采取。

怎么调用Admin Ping Command?

每一种MySQL client/connector 达成Ping
Command的点子都不一致。Java的利用形式见:

Perl的运用格局简便的说正是 $dbh->ping();
详见:

 

Linux
Shell经典实例分析–Oracle运营脚本(上)

澳门金沙国际,

本人要好收拾的For
f中的tokens和delims怎么用?直接拉上百度知道,整理得到的。就不管链接了,贴上本人的有道云笔记链接就行了:

叁 、bash中的变量的品类

听闻变量的见效范围为正式:

本地变量:生效范围为当前shell进程,对当前shell之外的其他的shell进程无效,包括当前shell的子shell进程均无效;    
环境变量:生效范围为当前shell进程及其子进程;    
局部变量:生效范围为当前shell进程中某代码片段(通常指函数);  
位置变量:$1,$2,...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数;    
特殊变量:$?,$0,$*,$@,$#,$$    

当地变量:

变量赋值:name=“value”
    可以使用单引号:
        value:
            (1)可以是直接赋值:name=“filename”
            (2)变量引用:name=“$username”
            (3)命令引用:name=`COMMAND`,name=$(COMMAND)
变量引用:$(name),$name
    "":弱引用,其中的变量引用会被替换为变量值;
    '':强引用,其中的变量引用不会被替换为变量值,而保持原字符串;
显示已定义的所有变量:
    set
撤销变量:
    unset name

环境变量:

变量声明、赋值
    export name=VALUE
    declare -x name=VALUE
变量引用:$name,$(name)
显示所有环境变量:
    export
    env
    printenv
    declear -x
撤销变量:
    unset name
bash中有很多内置的环境变量,PATH,SHELL,UID,HISTSIZE,PWD,OLD,HISTFILE,PS1,_
_:上一个命令的最后一个字符串

澳门金沙国际 2

只读变量:

设置只读变量:
    readonly name
    declare -r name 
查看只读变量:
    readonly -p 

岗位变量:

在脚本代码中调用通过命令行传递给脚本的参数:
    $1,$2,....:对应调用第1,第2....个参数,$10以上的应使用括号${10} ,${12}  
        shift [n] 调换位置,n不能大于参数的个数
    $0:调用命名本身
    $*:传递给脚本的所有参数,将所有参数作为一个整体字符传递
    $@:传递给脚本的所有参数,每一个参数独立传递,与$*只有在使用“”引起来时才有区别
    $#:传递给脚本的参数个数   
    set --:清空所有位置变量参数

特殊变量:$?,$0,$*,$@,$#,$$
    $?:返回状态码
    $$:返回当前进程的进程编号

澳门金沙国际 3

澳门金沙国际 4

image

澳门金沙国际 5

澳门金沙国际 6

澳门金沙国际 7

前言:

近期在线上诊断QPS飙升的长河中深深展开了下Admin Ping
Command的测试。别的,再有的外国文章中目前也读到了有个别相关知识,所以写成一篇博文做一下计算。

Linux
Shell经典实例分析–Oracle运营脚本(下)

 

7、bash自定义退出状态码

exit [n]:自定义退出状态码为n
    Note:脚本中一旦遇到exit命令,脚本会立即终止,终止退出状态取决于exit命令后面的数字n。
Note:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行最后一条命令的状态码。
进程使用退出状态来报告成功或失败
     0 代表成功,1 -255 代表失败
    $?  变量保存最近的命令退出状态

练习:编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;
    如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;
    如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
        #!/bin/bash
        [ $# -lt 1 ] && (echo "please input a arge" && exit ) || echo "`grep "^$" $1  | wc -l`"

澳门金沙国际 8

Linux
Shell高级技术(五)

二十五 、通过FTP下载钦赐的文本
二十陆 、文件锁定
二十⑦ 、用小文件覆盖全体磁盘
二十⑧ 、总计当前系统中不一样运市价况的历程数量
二十玖 、浮点数验证
三10、总结英文小说中各种单词出现的频率

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图