jq的使用
jq 命令可以方便快捷的解析 json 格式的数据。下面几个例子简单的记录了 jq 命令的用法。其中 task_feature_file 中的每一行都是一个 json 格式的数据。 解析 json 格式的数据1cat task_feature_file | jq . 根据 key[cms_data] 获取 value1cat task_feature_file | jq '.cms_data' 根据 key 获取 value(嵌套提取)1cat task_feature_file | jq '.cms_data.res_id' 提取所有 key1cat task_feature_file | jq 'keys' 提取所有 key(嵌套提取)1cat task_feature_file | jq '.cms_data' | jq 'keys' 判断是否有某个 key1cat task_feature_file | jq 'has("cms_data&qu...
linux下设置当前用户的环境变量
linux下设置当前用户的环境变量 1、首先 cd ~2、执行 ls -al3、执行步骤2后会看到一个文件.bash_profile4、vim .bash_profile 这种方式使用配置如java或者maven等指定好的sh,如果需要配置多个export,看下面的仿照bashrc1在.bash_profile文件中的Path中追加你要配置的路径,如下图 12多个目录通过:(冒号)分割开修改完后通过:wq命令保存 另一种方式仿照bashrc123vim ~/.sopei_env# 然后添加export xxx=xxxexport NODE_ENV=production 使变量生效 通过命令 source ~/.bash_profile 使得刚才的修改生效
linux问题总结
切换用户触发错误-bash: /dev/null: Permission denied此时,你需要删除 /dev/null 文件,并重新创建它: 1rm -f /dev/null; mknod -m 666 /dev/null c 1 3 ./ 运行bash脚本文件出现 报错信息 /usr/bin/env: “bash\r“: 没有那个文件或目录错误原因:这主要是因为bash后面多了\r这个字符的原因。在linux终端下,输出\r会什么都不显示,只是把光标移到行首。于是终端虽然输出了/usr/bin/env bash,但是碰到\r后,光标会被移到行首,接着输出了:No such file or directory把前面的覆盖掉了。于是出现了那个莫名其妙的出错信息了 解决办法: 1234用vim打开sh脚本文件, 重新设置文件的格式:set ff 然后回车 再重新设置下文件格式:set ff=unix 回车:wq! 保存退出 同时这样设置完也能解决一些其他的问题,比如想在bash文件中添加Pytho...
sed命令用法
语法1234sed [-hnV][-e<script>][-f<script文件>][文本文件]eg,带g则全局修改,不带则只修改匹配的第一个: sed -i 's/{原字符串}/{将要修改的字符串}/g' build.xml 参数说明: -e或--expression= 以选项中指定的script来处理输入的文本文件。 -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 -h或--help 显示帮助。 -n或--quiet或--silent 仅显示script处理后的结果。 -V或--version 显示版本信息。 -i 选项 i 使 sed 修改文件 动作说明: a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何东东; i :插入, i...
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权限...
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...
