Shell脚本中$0、$?、$!、$、$*、$#、$@
Shell脚本中$0、$?、$!、$$、$*、$#、$@1. $$Shell本身的PID(ProcessID) 2. $!Shell最后运行的后台Process的PID 3. $?最后运行的命令的结束代码(返回值) 4. $-使用Set命令设定的Flag一览 5. $*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 6. $@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 7. $#添加到Shell的参数个数 8. $0Shell本身的文件名 9.$1~$n添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
sort命令用法
语法1sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]] 参数说明: -b 忽略每行前面开始出的空格字符。 -c 检查文件是否已经按照顺序排序。 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 -f 排序时,将小写字母视为大写字母。 -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 -m 将几个排序好的文件进行合并。 -M 将前面3个字母依照月份的缩写进行排序。 -n 依照数值的大小排序。 -u 意味着是唯一的(unique),输出的结果是去完重了的。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 --help 显示帮助。 --vers...
ssh远程主机执行命令或脚本
免密操控(或者使用sshpass工具,看下面)ps: 免密操控不可以逆向, 就是说可以一个主控方, 多个被控方, 但不可以一个被控方,多个主控方 以下以gitlab-runner账户远程免密登陆root@192.168.56.100为例 先执行su gitlab-runner切换到gitlab-runner账户 在你的主控端机器上使用 ssh-keygen命令创建公钥,使用ssh-keygen -t rsa来创建,程序会问你存放目录,如果不需要修改,直接回车几次即可 将/.ssh目录下id_rsa.pub文件拷贝到受控机器的`/.ssh目录中,然后将文件内容导入到~/.ssh/authorized_keys`文件 1234主控方机器执行:scp ~/.ssh/id_rsa.pub root@192.168.56.100:~/.ssh/id_rsa.pub受控方机器执行:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 在受控方机器设置权限:~/.ssh权限...
利用软连接或挂载处理文件异处存储
背景 /var/opt/gitlab所在磁盘资源不足,现在希望将其无感迁移到**/data/opt/gitlab** 软链接方案停止 GitLab 服务1sudo gitlab-ctl stop 迁移数据到新盘目录12sudo mkdir -p /data/opt/gitlabsudo rsync -av --progress /var/opt/gitlab/ /data/opt/gitlab/ rsync 会保留文件权限和软链接,比 cp 安全。 rasync执行完后,使用diff指令确认下是否一致,如果不一致,则使用rsync继续进行迁移,直至无差异 备份原目录(以防回滚)1sudo mv /var/opt/gitlab /var/opt/gitlab.bak 建立软链接1sudo ln -s /data/opt/gitlab /var/opt/gitlab 权限检查1sudo chown -R git:git /data/opt/gitlab GitLab 默认用户是 git,如果你有改过...
netty与reactor
转自思否用户@郭艺宾 Reactor模式 Reactor是1995年由道格拉斯提出的一种高性能网络编程模式。由于好多年了,当时的一些概念与现在略有不同,reactor模式在网络编程中是非常重要的,可以说是NIO框架的典型模式,一些经典的框架,比如Mina、Netty、Cindy都是此模式的实现。 我们来看看当年提出的通用模型: 上面的图形中: 1、Handle 可以理解为资源或者文件句柄,放在netty里面就是channel,就是我们实际要处理的东西 2、Event Handler和Concrete Event Handler 就是具体的事件处理器,对应netty中的handler接口和具体的handler 3、Synchronous Event Demultiplexer同步事件多路复用分发器,可以理解为nio中的select 4、Initiation Dispatcher,分发器,可以理解为nio中的循环,也就是netty中的EventLoop,处理各种事件 5、select(handlers)就是真正处理业务的地方 大家注意上面图形中的几个箭头,可以看出各个组件之...
netty介绍及入门案例
netty Netty是一个高性能的网络编程框架。Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务器等网络编程。 优点 在设计方面来说: 1)统一的API,适用于不同的协议(阻塞和非阻塞) 2)基于灵活、可扩展的事件驱动模型(SEDA) 3)高度可定制的线程模型 4)可靠的无连接数据Socket支持(UDP) 在性能方面: 1)更好的吞吐量,低延迟 2)更省资源 3)尽量减少不必要的内存拷贝(这也是快的原因之一) 安全方面: 完整的SSL/TLS和STARTTLS的支持 在易用性方面: 1)完善的Java doc,用户指南和样例(个人觉得并不是很完善,国内的书籍也只有一两本还可以) 2)仅依赖于JDK1.6(netty 4.x) netty的主要组件包括: TransportChannel —-对应NIO中的channel EventLoop—- 对应于NIO中的while循环 EventLoopGroup: 多个EventLoop,就是事件循环 ChannelHandl...
netty组件介绍(1)
ChannelHandler和ChannelPipeline---对应于NIO中的客户逻辑实现handleRead/handleWrite(interceptor pattern)ByteBuf---- 对应于NIO 中的ByteBuffer业务逻辑要放在handler里面,读写数据用的是ByteBuf。其余的Transport、ServerBootstrap、Channel和EventLoop等等都是套路代码,对于应用程序来说,了解即可,基本上不用管。真正开发过netty项目也知道,项目中大部分都是handler类,其它组件只是占很少一部分。 Transport组件 netty做的比较有适应性的就是,不仅支持NIO,还支持很多传输协议: OIO -阻塞IO(真正开发阻塞IO项目,其实也没必要用netty了。。。) NIO -Java NIO Epoll - Linux Epoll(JNI) Local Transport - IntraVM调用(通讯的双方在同一个虚拟机之内不再走socket) Embedded Transport - 供测试使用的嵌入传输 UDS...
netty组件介绍(2)-channel组件
ChannelHandler组件介绍ChannelHandler组件包含了业务处理核心逻辑,是由用户自定义的内容,开发人员百分之九十的代码都是ChannelHandler。Netty提供2个重要的 ChannelHandler 子接口,用来自定义ChannelHandler: ChannelInboundHandler - 处理进站数据和所有状态更改事件(进站指的是读操作等由通道引发的事件) ChannelOutboundHandler - 处理出站数据,允许拦截各种操作(出站指的是写操作等由用户触发的事件,发送到远方服务器的事件) 来看一下ChannelHandler的类层次结构: 上面的类中的Adapter类,提供很多默认操作,比如ChannelHandler中有很多很多方法,我们用户自定义的方法有时候不需要重载全部,只需要重载一两个方法,那么可以使用Adapter类,它里面有很多默认的方法。其它框架中结尾是Adapter的类的作用也大都是如此。所以我们在使用netty的时候,往往很少直接实现ChannelHandler的接口,经常是继承Adapter类。 Cha...
nginx_location优先级
nginx location语法第一优先级 = : 完全匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 第二优先级 ^~ : 普通字符匹配。优先使用前缀匹配。如果匹配成功,则不再匹配其他location。 第三优先级 ~ : 区分大小写匹配 第三优先级 !~ : 区分大小写不匹配 第三优先级 ~* : 不区分大小写匹配 第三优先级 !~* : 不区分大小写不匹配 第四优先级 /{uri} : 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。 第四优先级 / : 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。 123456789101112131415161718192021222324location = / {# 只匹配 / 查询。}location / {# 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。}location ^~ /p_w_picpaths/ {# 匹配任何已 /p_w_picp...
nginx大全学习网站
nginx大全学习网站
