Shell学习
Shell学习

Shell学习

https://www.linuxcool.com/

https://zhuanlan.zhihu.com/p/109773710

https://zhuanlan.zhihu.com/p/339054596

https://blog.csdn.net/weixin_46022050/article/details/110949662

条件测试:
格式1: test 条件表达式
格式2: [ 条件表达式 ]
格式3: (()) 数值比较,运算 C语言
格式4: [[ 条件表达式 ]],支持正则 =~

结合$符号
$[] # 整数运算
$(()) # 整数运算
$() 或 “ # 命令替换

其他
() # 子shell中执行

https://blog.csdn.net/weixin_39584571/article/details/111507514

https://www.cnblogs.com/alexyuyu/articles/4530254.html

添加注释
加【#】:
sed -i 's/^指定行字符串/#&/g' filename
加【//】:
sed -i 's/^指定行字符串/\/\/&/g' filename (//由于有特殊含义,前面加\去掉特殊含义)

删除注释
sed -i 's/^#\(指定行字符串\)/\1/g' filename

函数返回不输出

echo $name | sed -e 's/\r//'

判断字符串

#非空
if [ -n "$1" ];then
#空
if [ -z "$1" ];then
if [ ! -n "$1" ];then

https://blog.csdn.net/qq_42217505/article/details/103598166

关于 tr

tr : translate characters
语法

tr [-Ccsu] string1 string2
tr [-Ccu] -d string1
tr [-Ccu] -s string1
tr [-Ccu] -ds string1 string2

参数说明

-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
--help:显示程序用法信息
--version:显示程序本身的版本信息

字符集合的范围

\NNN, 八进制值的字符 NNN (1 to 3 为八进制值的字符)
\, 反斜杠
\a, Ctrl-G 铃声
\b, Ctrl-H 退格符
\f, Ctrl-L 走行换页
\n, Ctrl-J 新行
\r, Ctrl-M 回车
\t, Ctrl-I tab键
\v, Ctrl-X 水平制表符

[:digit:], 所有数字
[:lower:], 所有小写字母
[:upper:], 所有大写字母
[:alpha:], 所有字母字符
[:alnum:], 所有字母字符与数字
[:blank:], 所有水平空格
[:space:], 所有水平与垂直空格符
[:cntrl:], 所有控制字符
[:print:], 所有可打印的字符(包含空格符)
[:graph:], 所有可打印的字符(不包含空格符)
[:punct:], 所有标点字符
[:xdigit:], 所有 16 进位制的数字
[=CHAR=], 所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)

CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
[CHAR*], 这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
[CHAR*REPEAT], 这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)

su

su - | -l | -login 用户 -c "xxxx"
会执行一次 .bash_profile脚本

su 用户 -c "xxxx"
不自动执行.bash_profile脚本

vi /etc/sysconfig/network-scripts/ifcfg-ens33



TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="fa266d2e-9a98-4f24-b512-2f25629e2167"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.1.171"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="114.114.114.114"
PEERDNS="no"
IPV6_PRIVACY="no"

systemctl restart network

http://t.zoukankan.com/zk47-p-3918086.html

tar -czvf xxx.tar.gz  source_file (tar -czvf 包名.tar.gz  源文件)        #以tar.gz方式打包并gz方式压缩
tar -xzvf xxx.tar.gz -C path (tar -xzvf xxx.tar.gz -C 目标路径)          #解压缩包

tar -vjcf Greenplum.tar.bz2 Greenplum

cd /opt/soft/greenplum/Greenplum
rm -f ./*.sh


cd /opt/soft
rm -rf greenplum/
mkdir greenplum
cd greenplum

tar -xjf Greenplum.tar.bz2

cd Greenplum
cd /opt/soft/greenplum/Greenplum
sh clean.sh

cd /opt/soft/greenplum/Greenplum
vim hosts
122.112.181.98 ml1 gp-master
124.223.195.184 ml2 gp-datanode01
114.116.52.178 xq1 gp-datanode02
124.70.164.97 xq2 gp-datanode03


rm -f ./*.sh



#主机
sh install.sh 1
sh install.sh 2
#从机
sh install.sh



yum -y install sysstat
#磁盘
iostat -d -m 1
#网络
sar -n DEV 1

rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。 每个请求平均大小,单位是扇区数,一般在200~400之间算是正常和理想的状态,如果这个值比较小,比方说只在100左右,
说明太多的IO请求没有被合并,或者大的IO请求被“打散”,在写操作时,过多小的请求会造成磁盘磁头的频繁移动,降低IO性能。