首页 文章 精选 留言 我的

精选列表

搜索[常用命令],共667篇文章
优秀的个人博客,低调大师

Shell 脚本常用命令

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。 1 、Shell中的特殊符号 1.1 $ 美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。 1.2 # 井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了。 1.3 “” 双引号。shell不会将一对双引号之间的文本中的大多数特殊字符进行解释,如#不再是注释的开头,它只表示一个井号“#”。但$仍然保持特殊含义。(在双引号中的$加变量名,即:$PARAM_NAME,依然会转换成变量的值。) 1.3.1 双引号对于某些特殊符号是不起作用的, 例如:”,$,\,`(反引号) 1.3.2 双引号和单引号不能嵌套。即:echo ‘””’ 输出””, echo “’’” 输出’’ 1.4 ‘’ 单引号。shell不会将一对单引号之间的任何字符做特殊解释。(在单引号中的$加变量名,即:$PARAM_NAME,不会转换成变量的值。) 1.4.1 echo “$HOME” (结果:/home/xiongguoan) 1.5 `` 倒引号。命令替换。在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本,不过特殊字符会被shell解释。 1.5.1 echo ‘$HOME’ (结果:$HOME) 1.6 \ 斜杠。用来去掉在shell解释中字符的特殊含义。在文本中,跟在\后面的一个字符不会被shell特殊解释,但其余的不受影响。 1.7 []中括号, 主要是用来测试条件的,通常放在if语句的后面。 (不过还是不太明白),但是中括号本身不会在测试语句执行后消失。 1.7.1 echo [$HOME] (结果:出现错误) 1.7.2 echo [$HOME ] (结果:[/home/xiongguoan ]) (注意:HOME后面有空格哦。) 1.7.3 echo [$HOME –eq ‘/xiong’] (结果:[/home/xiongguoan –eq /xiong]) 1.8 {}大括号,主要是和$符号配合,作为字符串连接来使用 1.8.1 echo ${HOME}ismydir (结果:/home/xiongguoanismydir) 2、 预定义的变量 2.1 特殊变量 $ shell变量名的开始,如$var | 管道,将标准输出转到下一个命令的标准输入 $# 记录传递给Shell的自变量个数 # 注释开始 & 在后台执行一个进程 ? 匹配一个字符 * 匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.) $- 使用set及执行时传递给shell的标志位 $! 最后一个子进程的进程号 $? 取最近一次命令执行后的退出状态(返回码) $* 传递给shell script的参数 $@ 所有参数,个别的用双引号括起来 $0 当前shell的名字 $n (n:1-) 位置参数 $$ 进程标识号(Process Identifier Number, PID) > 输出重定向 < 输入重定向 >> 输出重定向(追加方式) [] 列出字符变化范围,如[a-z] 2.2 代值变量 * 任意字符串 ? 一个任意字符 [abc] a, b, c三者中之一 [a-n] 从a到n的任一字符 2.3 特殊字符的表达 \b 退回 \c 打印一行时没有换行符 这个我们经常会用到 \f 换页 \r 回车 \t 制表 \v 垂直制表 \\ 反斜线本身 2.4 其他字符 2.4.1 分号; 表示一行结束 2.4.2 圆括号() 表示在新的子shell中执行括号内的命令(这样可以不改变当前shell的状态。)但是圆括号在单/双引号内失去作用,只作为普通字符。 2.4.3 花括号 2.4.3.1 分割命令的用法 与圆括号相似,但是:1. 花括号内的命令在当前shell中执行;2.花括号必须作为命令的第一个字符出现。 2.4.3.2 引用变量的用法 在$后面,表示变量名的开始和结束 2.4.4 方括号 相当与test命令,用来执行测试条件,通常用在需要判断条件的语句后面,例如:if,while等等。 3、设置变量 3.1 格式:VARNAME=value (i.e. PARAM=’hello’) 3.2 注意:等号的前后不能有空格。如果变量的值是一个命令的执行结果,请加上反引号(`)。 4、引用变量 4.1 $VARNAME 4.1.1 e.i. echo $HOME (结果:/home/xiongguoan) 4.2 变量默认值 4.2.1 在引用一个变量的时候可以设定默认值。如果在此之前,该变量已经设定了值,则此默认值无效。如果此时变量没有被设定值,则使用此默认值(但是没有改变此变量的值)。 4.2.2 echo Hello ${UNAME:-there} #其中there是UNAME的默认值 4.2.3 其他关于默认值与判读变量的方法: 利用大括号表示变量替换 表示形式 说明 ${VARIABLE} 基本变量替换。大括号限定变量名的开始和结束 ${VARIABLE:-DEFAULT} 如果VARIABLE没有值,则这种表示形式返回DEFAULT的值 ${VARIABLE:=DEFAULT} 如果VARIABLE没有值,则这种表达形式返回DEFAULT的值。另外,如果VARIABLE没有设置,则把DEFAULT的值赋予它 ${VARIABLE:+VALUE} 如果VARIABLE被设置,则这种表示形式返回VALUE;否则,返回一个空串 ${# VARIABLE} 这种表示形式返回VARIABLE值的长度,除非VARIABLE是* 或者@在为*或者@的特殊情况下,则返回$@所表示的元素的个数。要记住,$ @保存传给该脚本的参数清单 ${VARIABLE:?MESSAGE} 如果VARIABLE没有值,则这种表示形式返回MESSAGE的值。Shell也显示出VARIABLE的名字,所以这种形式对捕获得错误很有用 注意: 使用${VALIABLE:?MESSAGE},如果发现此变量此时没有值,则脚本停止运行并显示行号和变量名称。 主要用于调试。 5、位置变量 5.1 使用$1,$2,$3…$9,${10},${11}…来代表输入的参数。其中$0代表被执行的命令或者脚本的名字。$1,$2…代表输入的第1,2…个参数 5.2 例子: # cat count.sh#!/bin/sh A=$1 # 将位置$1的数值读入,并赋给变量A B=$2 # 将位置$2的数值读入,并赋给变量B C=$[$A+$B] # 将变量A与B的值相加,将结果赋给C echo $C # 显示C的数值 结果: # ./count.sh 3 6 9 # ./count.sh 34 28 62 5.3 $@和$*代表参数的列表,$#代表参数的数量 (不知道$@和$*之间的差别) 6、运算符和优先级 Shell运算符和它们的优先级顺序 级别 运算符 说明 13 -, + 单目负、单目正 12 !, ~ 逻辑非、按位取反或补码 11 * , / , % 乘、除、取模 10 +, - 加、减 9 << , >> 按位左移、按位右移 8 < =, > =, < , > 小于或等于、大于或等于、小于、大于 7 = = , ! = 等于、不等于 6 & 按位与 5 ^ 按位异或 4 | 按位或 3 && 逻辑与 2 | | 逻辑或 1 =, + =, - =, * =, /=, % =, & =, ^ =, | =, << =, >> = 赋值、运算且赋值 7、source / export / let / unset 7.1 source 7.1.1 正常情况下,脚本中执行的参数设置只能影响到shell脚本本身的执行环境,不能影响到调用此shell的脚本。 7.1.2 使用source命令执行脚本,可以让脚本影响到父shell的环境(即调用此shell的当前shell)。 7.1.3 例如:source env.sh 7.2 export 7.2.1 在bash下,使用export建立环境变量后,会影响到子shell脚本和当前shell的环境变量 7.3 unset 7.3.1 删除环境变量 7.3.2 i.e. #export newval=1 #echo $newval 1 #unset newval #echo $newval (ß此处为空行,newval已经被删除) 7.4 let 7.4.1 在bash中只用此命令可以建立一个临时的变量,此变量不会影响到子shell 8、逻辑判断 8.1 if 8.1.1 单格式与嵌套 if 条件表达式 ;then #当条件为真时执行以下语句 命令列表 else #为假时执行以下语句 命令列表 fi if 语句也可以嵌套使用 if 条件表达式1;then if 条件表达式2;then 命令列表 else if 条件表达式3;then 命令列表 else 命令列表 fi fi else 命令列表 fi 8.1.2 多分支格式 if test -f "$1" ;then lpr $1 elif test -d "$1" ;then (cd $1;lpr $1) else echo "$1不是文件或目录" fi 8.2 case 8.2.1 格式 case $newval in 1) #这里是可能值1 echo 1 ;; #表示第一个分支结束 2) #这里是可能值 2 echo 2 ;; #第二个分支结束 *) #表示其他可能值,必须在最后,否则他后面的语句无法执行 echo unkown esac #case 语句结束 8.3 while /until 格式: while 表达式 do 命令列表 done 例如: Sum=0 i=0 while true #true是系统的关键词 表示真 do i=`expr $i + 1` Sum=`expr $Sum + $i` if [ $i = "100" ] then break; fi done echo $i $Sum 最后这个程序显示的是1005050 下面将这个程序再改动一下 Sum=0 i=0 while [ $i != "100" ] do i=`expr $i + 1` Sum=`expr $Sum + $i` done echo $i $Sum 改动后的程序运算结果和上面是一样但程序比上面的要简练 在这个循环中还可以以until做为测试条件它正好与while测试的条件相反,也就是当条件为假时将继续执行循环体内的语句,否则就退出循环体,下面还用这个例子. Sum=0 i=0 until [ $i = "100" ] do i=`expr $i + 1` Sum=`expr $Sum + $i` done echo $i $Sum 当i不等于100时循环就是当条件为假时循环,否则就退出,而第一个例子是当i不等于100时循环,也就是测试条件为真时循环. 8.4 for 8.4.1 枚举用法 8.4.1.1 格式 for 变量 in 名字列表 do 命令列表 done 8.4.1.2 格式 for n in {1..10} do echo $n done for letter in a b c d e; do echo $letter done 8.4.2 文件用法 8.4.2.1 格式 for file in * do echo $file done 例子 for File in a1 a2 a3 a4 a5 do diff aa/$File bb/$File done 8.4.3 累加格式 for (( i=1;$i<10;i++)) do echo $i done for(( i=1;$i<10;i=$[$i+1’ ]) do echo $i done 8.5 其他循环控制语句 break命令不执行当前循环体内break下面的语句从当前循环退出. continue命令是程序在本循体内忽略下面的语句,从循环头开始执行. 8.6 逻辑判断的表达 一、判断文件的属性 格式:-操作符filename -e 文件存在返回1, 否则返回0 -r 文件可读返回1,否则返回0 -w 文件可写返回1,否则返回0 -x 文件可执行返回1,否则返回0 -o 文件属于用户本人返回1, 否则返回0 -z 文件长度为0返回1, 否则返回0. -f 文件为普通文件返回1, 否则返回0 -d 文件为目录文件时返回1, 否则返回0 二、测试字符串 字符串1 = 字符串2 当两个字串相等时为真 字符串1 != 字符串2 当两个字串不等时为真 -n 字符串 当字符串的长度大于0时为真 -z 字符串 当字符串的长度为0时为真 字符串 当串字符串为非空时为真 三、测试两个整数关系 数字1 -eq 数字2 两数相等为真 数字1 -ne 数字2 两数不等为真 数字1 -gt 数字2 数字1大于数字2为真 数字1 -ge 数字2 数字1大于等于数字2为真 数字1 -lt 数字2 数字1小于数字2为真 数字1 -le 数字2 数字1小于等于数字2为真 四、逻辑测试 -a 与 -o 或 ! 非 9、shell中的表达式 9.1 shell 输出重定向 9.1.1 管道 | 就管道符前的命令的输出作为管道符后的命令的输入。 ls | grep ‘.txt’ 将ls的输出作为grep 的输入。 grep从输入中找出所有包含.txt的行。 9.1.2 输出 > 将右尖括号前的命令的输入重定向到尖括号后的文件中。 例如: ls *.sh > list.txt 将当前目录下所有末尾名为sh的文件的列表写入到list.txt 9.1.3 输入 < 将左箭头后面的文件作为左箭头前的命令的输入。 例如: grep “a” < test.sh 将test.sh中找到所有包含a的行 9.1.4 错误输出重定向 默认bash有3个标准输入输出设备。 0 标准输入 1 标准输出 2错误输出 如果执行脚本的时候发生错误,会输出到2上。 要想就将错误的输出也输出在标准输出上,需要重定向。 例如: ./test.sh > a.log 2>&1 后面2>&1就是将标准错误的输出重定向到标准输出上。 9.2 tee 9.2.1 将此命令的输入分叉,一支输出到屏幕一支可以重定向到其他位置。 例如: ./test.sh | tee >a.txt 2>&1 运行test.sh,通过tee输出到a.txt,同时屏幕上可以看到输出。并且将错误输出重定向到标准输出( 2>&1 ) 9.3 cpio 9.3.1 文件或目录打包 9.3.1.1 含子目录打包 find . -name '*.sh' | cpio -o > shell.cpio 将当前目录及其子目录下的sh文件打包成一个文件库为shell.cpio。 9.3.1.2 不含子目录的打包 ls *.sh | cpio -o > shell.cpio 将当前目录下的sh文件(不含子目录)打包成一个文件库为shell.cpio。 9.3.2 压缩 文件打包完成后,即可用Unix中的compress命令(/usr/bin下)压缩打包文件。对一般的文本文件,压缩率较高,可达81%。 例如:compress shell.cpio则将文件库压缩为shell.cpio.Z(自动添加.Z并删除shell.cpio )。 9.3.3 解压 uncompress shell.cpio.Z则自动还原为shell.cpio。 9.3.4 解包展开 将按原目录结构解包展开到当前所在目录下。若以相对路径打包的,当解包展开时,也是以相对路径存放展开的文件数据;若以绝对路径打包的,当解包展开时,也是以绝对路径存放展开的文件数据。因此注意若为相对路径,应先进入相应的目录下再展开。 cd /u1 cpio –id < shell.cpio 解压到当期目录。 cpio –iud < shell.cpio则文件若存在将被覆盖,即强制覆盖。 cpio –id < shell.cpio env.sh 解压缩env.sh 9.3.5 显示包内的文件 cpio –it < shell.cpio 9.4 exec 9.4.1 将此命令后的参数作为命令在当前的shell中执行,当前的shell或者脚本不在执行。 例如: exec ls 当前进程替换为ls,执行结束后就退出了。 例如:在a.sh 中包含 exec b.sh 则当a.sh 执行到此句后,被b.sh替换,a.sh中此句后的语句不会再被执行。 9.5 fork 9.5.1 将此命令的参数,新建一个进程来执行 例如:在a.sh 中包含 fork b.sh 则当a.sh 执行到此句后,被b.sh替换,a.sh中此句后的语句继续执行。b.sh在新的进程中同时执行。 9.6 expr 9.6.1 expr argument operator argument 9.6.2 一般用于整数的运算。 例如: #set newval=1 #echo $newval 1 #set newval=`expr $newval + 1` #echo $newval 2 #set newval=$newval+1 #echo $newval 2+1 9.7 test 9.7.1 测试,通常用在需要判断的语句后面,例如:if,while,等等。 9.7.2 很多时候可以和中括号[]互换,我不知道区别是什么。 9.7.3 例子: i=1 if test”$ i” == “1” then echo true else echo false fi 9.8 exit 退出当前的shell,执行结果可以在shell中用$?查看 例如:exit 2 9.9 read 从标准输入读取数据。 例: $ read var1 var2 var3 Hello my friends $ echo $var1 $var2 $var3 Hello my friends $ echo $var1 Hello 9.10 shift 9.10.1 每次调用的时候,将参数列表中的第一个参数去掉。这样可以循环得到第一个参数。 9.10.2 例子: cat t.sh sum=0 until [ $# -eq 0 ] do echo $* sum=`expr $sum + $1` shift done echo result is: $sum #./t.sh 1 2 3 1 2 3 2 3 3 11、附件:Linux 易被遗漏的命令解析 11.1 grep 11.1.1 grep ‘string’ filename 11.1.1.1e.i.: grep ‘list’ mytxt.txt 在mytxt.txt中寻找包含list字符串的所有行 11.1.2 “-v” : 相反的。 即不包含字符串。 11.1.2.1e.i.: grep –v ‘list’ mytxt.txt 11.1.3 cat mytxt | grep ‘list’ 将cat mytxt作为源, 从中查找包含list字符串的行 11.2 find 11.2.1 -atime n : 指查找系统中最后n*24小时访问的文件; 11.2.2 -ctime n : 指查找系统中最后n*24小时被改变状态的文件; 11.2.3 -mtime n : 指查找系统中最后n*24小时被修改的文件。 11.2.4 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 find ./ -name "*.txt" -exec grep "bin" {} \; 11.2.5 在当前目录下(包含子目录),删除所有txt文件 find ./ -name "*.txt" -exec rm {} \; 11.3 du 11.3.1 显示文件的大小 11.3.2 i.e. #du *.txt 1230 myfile1.txt 456 myfile2.txt 11.4 awk 11.4.1 提取输入中的某个参数 11.4.2 提取输入中每一行的第一个参数 #echo `du *.txt | awk ‘{print $1}’` 1230 456 提取子字符串 #echo `du *.bin | awk '{print substr($1,2,3)}'` 11.5 前后台运行 11.5.1 将某个程序在后台启动起来,只需要在命令的最后加上 & 符号。 例如: ./test.sh & 11.5.2 将当前正在运行的程序切换到后台 11.5.2.1 当按下^z的时候,当前的应用程序就会切换到后台,但是此时的状态是停止的状态。 11.5.2.2 使用jobs命令可以看到当前在后台运行的程序的列表。 例如:jobs [1]+ stopped top [2]+stopped find | grep *.txt > a.log 11.5.2.3 使用bg命令可以将某个后台程序继续运行。 #bg %2 #jobs [1]+ stopped top [2]+ Running find | grep *.txt > a.log 11.5.3 将后台运行的程序切回到前台 #fg %2 将find 命令切回到前台 11.6 shell的执行选项 -n 测试shell script语法结构,只读取shell script但不执行 -x 进入跟踪方式,显示所执行的每一条命令,用于调度 -a Tag all variables for export -c "string" 从strings中读取命令 -e 非交互方式 -f 关闭shell文件名产生功能 -h locate and remember functions as defind -i 交互方式 -k 从环境变量中读取命令的参数 -r 限制方式 -s 从标准输入读取命令 -t 执行命令后退出(shell exits) -u 在替换中如使用未定义变量为错误 -v verbose,显示shell输入行 11.7 alias 建立别名 alias dir ls 11.8 xargs 执行本命令的第一个参数,并将xargs的输入作为被执行命令的参数 例如: find . -name '*.c' | xargs cat 将本目录及其子目录下所有的C文件使用cat命令显示其内容。 12、附件:Bash中影响环境变量的命令 Shell有若干以变量为工作对象的命令,其中有些命令似乎重复了。例如,可以用declare、export和typeset命令来创建全局(或转出)的变量。typeset命令是declare的同义词。 Declare 命令 语法:declare [options] [name [= value]] 摘要:用于显示或设置变量。 declare命令使用四个选项: -f 只显示函数名 -r 创建只读变量。只读变量不能被赋予新值或取消设置,除非使用declare或者typeset命令 -x 创建转出(exported)变量 -i 创建整数变量。如果我们想给一个整数变量赋予文本值,实际上是赋予0使用+ 代替-,可以颠倒选项的含义。 如果没有使用参数,则declare显示当前已定义变量和函数的列表。让我们关注一下-r选项: $ declare –r title=" paradise Lost" $ title = " Xenogenesis" bash: title: read-only variable $ declare title= " Xenogenesis" $ echo $title Xecogenesis $ typeset title = " The Longing Ring” $ echo $title The Longing Ring 这个示例表明,只有declare或typeset命令可以修改只读变量的值。 export命令 语法:export [options] [name [= value]] 摘要:用于创建传给子Shell的变量。 export命令使用四个选项: -- 表明选项结束。所有后续参数都是实参 -f 表明在“名-值”对中的名字是函数名 -n 把全局变量转换成局部变量。换句话说,命名的变量不再传给子Shell -p 显示全局变量列表 如果没有用参数,则假定是一个-p参数,并且显示出全局变量的列表: $ export declare –x ENV = "/home/medined/ . bashrc" declare –x HISTFILESIZE = "1000" … declare –xi numPages = "314" declare –xr title = "The Longing Ring" declare –xri numChapters = "32" 这种显示的一个有趣的特性是,它告诉我们哪些变量只能是整数、是只读的,或者二者皆可。 let命令 语法:let expression 摘要:用于求整数表达式的值。 let命令计算整数表达式的值。它通常用来增加计数器变量的值,如例5-9所示。 例5-9 let——使用let命令 # ! /bin/bash count=1 for element in $@ do echo " $element is element $count" let count+=1 done 下面是这个脚本运行结果示例: $ chmod + x let $ . /let one two three one is element 1 two is element 2 three is element 3 注意:如果我们习惯在表达式中使用空格,那么要用双引号把表达式括起来,如: let "count + =1" 否则会导致语句错误。 local 命令 语法:local [name [= value]] 摘要:用于创建不能传给子Shell的变量。这个命令仅在过程内部有效。 简单说来,local命令创建的变量不能被子Shell存取。因此,只能在函数内部使用local命令。我们可以在命令行或脚本中使用“变量=值”这种形式的赋值命令。如果使用local时不带实参,那么当前已定义的局部变量列表就送往标准输出显示。 readonly命令 语法:readonly [options] [name[ = value]] 摘要:用于显示或者设置只读变量。 Readonly命令使用两个选项: -- 表明选项结束。所有后续参数都是实参 -f 创建只读函数 如果没有用参数,则readonly显示当前已定义的只读变量和函数的列表。 set命令 语法:set [--abefhkmnptuvxidCHP] [-o option] [name [= value]] 摘要:用于设置或者重置各种Shell选项。 set 命令可实现很多不同的功能——并非其中所有的功能都与变量有关。由于本节的其他命令重复了通过set命令可用的那些变量选项,所以这里对set命令不做详细说明。 shift命令 语法:shift [n] 摘要:用于移动位置变量。 shift命令调整位置变量,使$3的值赋予$2,而$2的值赋予$1。当执行shift命令时,这种波动作用影响到所定义的各个位置变量。往往使用shift命令来检查过程参数的特定值——如为选项设置标志变量时。 typeset命令 语法:typeset [options] [name [= value]] 摘要:用于显示或者设置变量。 typeset 命令是declare命令的同义词。 unset命令 语法:unset [options] name [name …] 摘要:用于取消变量定义。 unset命令使用两个选项: -- 表明选项结束,所有后续参数都是实参 -f 创建只读函数 unset命令从Shell环境中删除指定的变量和函数。注意,不能取消对PATH、IFS、PPID、PS1、PS2、UID和EUID的设置。如果我们取消RANDOM、SECONDS、LINENO或HISTCMD等变量的设置,它们就失去特有属性。

优秀的个人博客,低调大师

Hbase shell 常用命令

下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count '表名称' 删除记录 delete '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' 查看所有记录 scan "表名称" 查看某个表某个列中所有数据 scan "表名称" , ['列名称:'] 更新记录 就是重写一遍进行覆盖 一、一般操作 1.查询服务器状态 hbase(main):024:0>status 3 servers, 0 dead,1.0000 average load 2.查询hive版本 hbase(main):025:0>version 0.90.4, r1150278,Sun Jul 24 15:53:29 PDT 2011 二、DDL操作 1.创建一个表 hbase(main):011:0>create 'member','member_id','address','info' 0 row(s) in 1.2210seconds 2.获得表的描述 hbase(main):012:0>list TABLE member 1 row(s) in 0.0160seconds hbase(main):006:0>describe 'member' DESCRIPTION ENABLED {NAME => 'member', FAMILIES => [{NAME=> 'address', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', true VERSIONS => '3', COMPRESSION => 'NONE',TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'fa lse', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSI ONS => '3', COMPRESSION => 'NONE', TTL=> '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]} 1 row(s) in 0.0230seconds 3.删除一个列族,alter,disable,enable 我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。 hbase(main):003:0>alter 'member',{NAME=>'member_id',METHOD=>'delete'} ERROR: Table memberis enabled. Disable it first before altering. 报错,删除列族的时候必须先将表给disable掉。 hbase(main):004:0>disable 'member' 0 row(s) in 2.0390seconds hbase(main):005:0>alter'member',NAME=>'member_id',METHOD=>'delete' 0 row(s) in 0.0560seconds hbase(main):006:0>describe 'member' DESCRIPTION ENABLED {NAME => 'member', FAMILIES => [{NAME=> 'address', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0',false VERSIONS => '3', COMPRESSION => 'NONE',TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'fa lse', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSI ONS => '3', COMPRESSION => 'NONE', TTL=> '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]} 1 row(s) in 0.0230seconds 该列族已经删除,我们继续将表enable hbase(main):008:0> enable 'member' 0 row(s) in 2.0420seconds 4.列出所有的表 hbase(main):028:0>list TABLE member temp_table 2 row(s) in 0.0150seconds 5.drop一个表 hbase(main):029:0>disable 'temp_table' 0 row(s) in 2.0590seconds hbase(main):030:0>drop 'temp_table' 0 row(s) in 1.1070seconds 6.查询表是否存在 hbase(main):021:0>exists 'member' Table member doesexist 0 row(s) in 0.1610seconds 7.判断表是否enable hbase(main):034:0>is_enabled 'member' true 0 row(s) in 0.0110seconds 8.判断表是否disable hbase(main):032:0>is_disabled 'member' false 0 row(s) in 0.0110seconds 三、DML操作 1.插入几条记录 put'member','scutshuxue','info:age','24' put'member','scutshuxue','info:birthday','1987-06-17' put'member','scutshuxue','info:company','alibaba' put'member','scutshuxue','address:contry','china' put'member','scutshuxue','address:province','zhejiang' put'member','scutshuxue','address:city','hangzhou' put'member','xiaofeng','info:birthday','1987-4-17' put'member','xiaofeng','info:favorite','movie' put'member','xiaofeng','info:company','alibaba' put'member','xiaofeng','address:contry','china' put'member','xiaofeng','address:province','guangdong' put'member','xiaofeng','address:city','jieyang' put'member','xiaofeng','address:town','xianqiao' 2.获取一条数据 获取一个id的所有数据 hbase(main):001:0>get 'member','scutshuxue' COLUMN CELL address:city timestamp=1321586240244, value=hangzhou address:contry timestamp=1321586239126, value=china address:province timestamp=1321586239197, value=zhejiang info:age timestamp=1321586238965, value=24 info:birthday timestamp=1321586239015, value=1987-06-17 info:company timestamp=1321586239071, value=alibaba 6 row(s) in 0.4720seconds 获取一个id,一个列族的所有数据 hbase(main):002:0>get 'member','scutshuxue','info' COLUMN CELL info:age timestamp=1321586238965, value=24 info:birthday timestamp=1321586239015, value=1987-06-17 info:company timestamp=1321586239071, value=alibaba 3 row(s) in 0.0210seconds 获取一个id,一个列族中一个列的所有数据 hbase(main):002:0>get 'member','scutshuxue','info:age' COLUMN CELL info:age timestamp=1321586238965, value=24 1 row(s) in 0.0320seconds 6.更新一条记录 将scutshuxue的年龄改成99 hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99' 0 row(s) in 0.0210seconds hbase(main):005:0>get 'member','scutshuxue','info:age' COLUMN CELL info:age timestamp=1321586571843, value=99 1 row(s) in 0.0180seconds 3.通过timestamp来获取两个版本的数据 hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965} COLUMN CELL info:age timestamp=1321586238965, value=24 1 row(s) in 0.0140seconds hbase(main):011:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843} COLUMN CELL info:age timestamp=1321586571843, value=99 1 row(s) in 0.0180seconds 4.全表扫描: hbase(main):013:0>scan 'member' ROW COLUMN+CELL scutshuxue column=address:city, timestamp=1321586240244, value=hangzhou scutshuxue column=address:contry, timestamp=1321586239126, value=china scutshuxue column=address:province, timestamp=1321586239197, value=zhejiang scutshuxue column=info:age,timestamp=1321586571843, value=99 scutshuxue column=info:birthday, timestamp=1321586239015, value=1987-06-17 scutshuxue column=info:company, timestamp=1321586239071, value=alibaba temp column=info:age, timestamp=1321589609775, value=59 xiaofeng column=address:city, timestamp=1321586248400, value=jieyang xiaofeng column=address:contry, timestamp=1321586248316, value=china xiaofeng column=address:province, timestamp=1321586248355, value=guangdong xiaofeng column=address:town, timestamp=1321586249564, value=xianqiao xiaofeng column=info:birthday, timestamp=1321586248202, value=1987-4-17 xiaofeng column=info:company, timestamp=1321586248277, value=alibaba xiaofeng column=info:favorite, timestamp=1321586248241, value=movie 3 row(s) in 0.0570seconds 5.删除id为temp的值的‘info:age’字段 hbase(main):016:0>delete 'member','temp','info:age' 0 row(s) in 0.0150seconds hbase(main):018:0>get 'member','temp' COLUMN CELL 0 row(s) in 0.0150seconds 6.删除整行 hbase(main):001:0>deleteall 'member','xiaofeng' 0 row(s) in 0.3990seconds 7.查询表中有多少行: hbase(main):019:0>count 'member' 2 row(s) in 0.0160seconds 8.给‘xiaofeng’这个id增加'info:age'字段,并使用counter实现递增 hbase(main):057:0*incr 'member','xiaofeng','info:age' COUNTER VALUE = 1 hbase(main):058:0>get 'member','xiaofeng','info:age' COLUMN CELL info:age timestamp=1321590997648, value=\x00\x00\x00\x00\x00\x00\x00\x01 1 row(s) in 0.0140seconds hbase(main):059:0>incr 'member','xiaofeng','info:age' COUNTER VALUE = 2 hbase(main):060:0>get 'member','xiaofeng','info:age' COLUMN CELL info:age timestamp=1321591025110, value=\x00\x00\x00\x00\x00\x00\x00\x02 1 row(s) in 0.0160seconds 获取当前count的值 hbase(main):069:0>get_counter 'member','xiaofeng','info:age' COUNTER VALUE = 2 9.将整张表清空: hbase(main):035:0>truncate 'member' Truncating 'member'table (it may take a while): - Disabling table... - Dropping table... - Creating table... 0 row(s) in 4.3430seconds 可以看出,hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能的。 文章可以转载,必须以链接形式标明出处。 本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/7661111.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

docker常用命令手册

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 dockerpullubuntu:12.04从DockerHub仓库下载镜像 dockerpulldaocloud.io /ubuntu :12.04从其他仓库下载镜像 dockerimages列出本地所有镜像 dockerrun-t-iubuntu:14.04 /bin/bash 指定ubuntu:14.04镜像启动容器(如果存在直接启动,如果不存在,会先下载后自动启动。) dockerrun-idtdaocloud.io /centos 启动容器并后台运行 dockertag5db5f8471261ouruser /sinatra :devel修改镜像的标签 dockersave-oaaa. tar 85df800c49dd把本地镜像保存成 tar 文件 dockerload--inputaaa. tar 加载本地镜像文件 docker ps 列出运行的容器 dockerstopc126755cddc9停掉容器(此处的ID是通过docker ps 看到的) dockerrmi-fb028cf78af5f删除镜像(-f:表示强制) docker rm $(docker ps -a-q)删除所有已经停止的容器 dockerlogs42ee45c1e32d获取容器输出 docker export 7691a814370e>ubuntu. tar 到处容器到本地 docker exec -tiff753eebaab5 /bin/bash 进入容器( exit 不关闭容器) dockerbuild-tmononet /usr/local/src/docker1 通过dockerfile创建镜像 dockerrun-t-i- v /src/webapp : /opt/webapp :rocentos /bin/bash 创建容器并挂在本地路径到容器 dockerrun-t-i-p80:80centos /bin/bash 启动容器并把容器里的80端口映射到宿主机80端口 dockerrun-idt-p17202:8080--nameyiliao- v /usr/local/src/docker2/web : /usr/www :rw- v /ftp/docker2/ : /upload :rw- v /etc/localtime : /etc/localtime :ro57b53a820756启动容器并开启端口映射并挂载本地路径到容器 dockertagmicrosoft /aspnet mononet重命名镜像 dockerinspectb028cf78af5f 本文转自 转身撞墙角 51CTO博客,原文链接:http://blog.51cto.com/chentianwang/1716749

优秀的个人博客,低调大师

scp传输常用命令

scp -r filename root@42.51.x.x:/home 2.linux传输到Windows scp -r filename administrator@42.51.x.:/d 例子:将当前Linux中的hadoop文件夹拷贝到Hadoop-NN-02下: scp -P 6000 -r /home/hadoopuser/hadoop hadoopuser@Hadoop-NN-02:/home/hadoopuser -P 6000 表示SSH登录端口为6000,默认22端口可省略。 -r 表示递归复制 注:从远程复制到本地,只需调换scp后面两个参数即可。 scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2 [ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 . 可能有用的几个参数 : -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 . -C 使能压缩选项 . -P 选择端口 . 注意 -p 已经被 rcp 使用 . -4 强行使用 IPV4 地址 . -6 强行使用 IPV6 地址 . 注意两点: 1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下: #scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator 2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。 1、命令:scp 不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。 第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便。 第三种就是利用scp命令来进行文件复制。 2、命令格式:scp [参数] [原路径] [目标路径] 3、命令参数: 复制代码 -1 强制scp命令使用协议ssh1 -2 强制scp命令使用协议ssh2 -4 强制scp命令只使用IPv4寻址 -6 强制scp命令只使用IPv6寻址 -B 使用批处理模式(传输过程中不询问传输口令或短语) -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) -p 保留原文件的修改时间,访问时间和访问权限。 -q 不显示传输进度条。 -r 递归复制整个目录。 -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。 -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。 -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 -l limit 限定用户所能使用的带宽,以Kbit/s为单位。 -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式, -P port 注意是大写的P, port是指定数据传输用到的端口号 -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。 本文转自 技术花妞妞 51CTO博客,原文链接:http://blog.51cto.com/xiaogongju/2066311

优秀的个人博客,低调大师

adb常用命令,技巧

安装、卸载apk adb connect ip:31015 指定端口连接,如果不指定端口,默认端口一般为5555 adb disconnect 断开连接 adb uninstall com.app.lication 卸载软件 强制卸载 adb shell cd /data/app 或者 cd /system/app (查找应用包名) ls 查看有没我们的APK安装包 rm apk文件名 exit mount -o rw,remount /system 改变文件的只读属性 adb install /path/to/file.apk 安装包的绝对路径 adb install -r /path/to/file.apk 强制安装apk 安装到sysystem路径下,可能需要root权限 adb shell 进入系统命令行 mount -o remount rw /system 用读写重新加载/system exit 退到adb模式 adb push /path/to/file.apk 安装包的绝对路径 查找apk安装路径 cat /data/system/packages.xml 或cat /data/system/packages.xml|grep XXX 打印日志 adb logcat -v time 打印日志 adb logcat -v time >> d:/a.txt 将打印日志保存在D盘,命名为a.txt ctrl +c 停止 adb shell bugreport > d:/1.txt 包括内存分配,cpu使用情况,按键分发,组件状态,虚拟内存状态 adb pull /data/anr/traces.txt d:/traces.txt 程序无响应日志导出 adb logcat -c 清除信息 截图 机顶盒截图: adb shell /system/bin/screencap -p /data/XX.png 将截图推到本地 adb pull /data/XX.png > D:/png/XX.png apk操作 adb shell am start com.app.lication 启动apk am force-stop com.app.lication 强制停止 pm clear com.app.lication 清除缓存 设置DNS和hosts DNS adb shell setprop net.dns1 8.8.8.8 setprop net.dns2 8.8.4.4 hosts echo "10.0.0.1 baidu.com" >>/etc/hosts other getprop | grep dns 查看stb的dns信息 netcfg 查看网卡信息

优秀的个人博客,低调大师

Centos常用命令,查看进程、杀死进程、启动进程等常用命令

1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定”A”参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H 显示树状结构,表示程序间的相互关系。 ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s 采用程序信号的格式显示程序状况。 ps S 列出程序时,包括已中断的子程序资料。 ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 ps u 以用户为主的格式来显示程序状况。 ps x 显示所有程序,不以终端机来区分。 最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。 ps aux | grep program_filter_word,ps -ef |grep tomcat 1 2 3 ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。 2.杀进程 使用kill命令结束进程:kill xxx 常用:kill -9 324 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME 3.进入到进程的执行文件所在的路径下,执行文件 ./文件名 附: 这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载 更改档案拥有者 命令 : chown [-cfhvR] [–help] [–version] user[:group] file… 功能 : 更改文件或者文件夹的拥有者 参数格式 : user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group) -c : 若该档案拥有者确实已经更改,才显示其更改动作 -f : 若该档案拥有者无法被更改也不要显示错误讯息 -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案 -v : 显示拥有者变更的详细资料 -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 例如:chown -R oracle:oinstall /oracle/u01/app/oracle 更改目录拥有者为oracle 修改权限 命令:chmod (change mode) 功能:改变文件的读写和执行权限。有符号法和八进制数字法。 选项:(1)符号法: 命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename u (user) 表示用户本人。 g (group) 表示同组用户。 o (oher) 表示其他用户。 a (all) 表示所有用户。 + 用于给予指定用户的许可权限。 - 用于取消指定用户的许可权限。 = 将所许可的权限赋给文件。 r (read) 读许可,表示可以拷贝该文件或目录的内容。 w (write) 写许可,表示可以修改该文件或目录的内容。 x (execute)执行许可,表示可以执行该文件或进入目录。 (2)八进制数字法: 1 2 命令格式:chmod abc file 其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。 4 (100) 表示可读。 2 (010) 表示可写。 1 (001) 表示可执行。 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=5。 例如:# chmod a+rx filename 让所有用户可以读和执行文件filename。 # chmod go-rx filename 取消同组和其他用户的读和执行文件filename的权限。 # chmod 741 filename 让本人可读写执行、同组用户可读、其他用户可执行文件filename。 chmod -R 755 /home/oracle 递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行 修改文件日期 命令:touch 格式:touch filenae 功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。 例如:% touch file 链接文件 命令:ln (link) 格式:ln [option] filename linkname ln [option] directory pathname 功能:为文件或目录建立一个链。其中,filename和directory是源文件名和 源目录名;linkname和pathname分别表示与源文件或源目录名相链接的 文件或目录。 选项:-s 为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接 注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出 现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。 例如:% ln -s filename linkname 显示日期 命令:date 例如:% date 显示日历 命令:cal (calendar) 格式:cal [month] year 功能:显示某年内指定的日历 例如:% cal 1998 显示文件头部 命令:head 格式:head [option] filename 功能:显示文件的头部 选项:缺省 显示文件的头10行。 -i 显示文件的开始 i行。 例如:% head filename 显示文件尾部 命令:tail 格式:tail [option] filename 功能:显示文件的尾部 选项:缺省 显示文件的末10行。 -i 显示文件最后 i行。 +i 从文件的第i行开始显示。 例如:% tail filename 显示用户标识 命令:id 格式:id [option] [user] 功能:显示用户标识及用户所属的所有组。 选项:-a 显示用户名、用户标识及用户所属的所有组 注释: 例如:% id username 查看当前登录的用户 命令:users 显示都谁登录到机器上 命令:who 格式:who 功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。 例如:% who 显示当前终端上的用户名 命令:whoami 格式:whoami 功能:显示出当前终端上使用的用户。 例如:% whoami 寻找文件 命令:find 格式:find pathname [option] expression 功能:在所给的路经名下寻找符合表达式相匹配的文件。 选项:-name 表示文件名 -user 用户名,选取该用户所属的文件 -size 按大小查找,以block为单位,一个block是512B -mtime n 按最后一次修改时间查找,选取n天内被修改的文件 -perm 按权限查找 -type 按文件类型查找 -atime 按最后一次访问时间查找 例如:% find ./ -name ‘abc’ -print 搜索文件中匹配符 命令:grep 格式:grep [option] pattern filenames 功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。 选项:-i 匹配时忽略大小写 -v 找出模式失配的行 例如:% grep -i ‘java*’ ./test/run.sh 统计文件字数 命令:wc [option] filename 功能:统计文件中的文件行数、字数和字符数。 选项:-l 统计文件的行数 -w 统计文件的单词数 -c 统计文件的字符数 注释:若缺省文件名则指标准输入 例如:% wc -c ./test/run.sh 显示磁盘空间 命令:df (disk free) 格式:df [option] 功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总 字节数、已用字节数、剩余字节数占用百分比。 选项: -a:显示全部的档案系统和各分割区的磁盘使用情形 -i:显示i -nodes的使用量 -k:大小用k来表示 (默认值) -t:显示某一个档案系统的所有分割区磁盘使用量 -x:显示不是某一个档案系统的所有分割区磁盘使用量 -T:显示每个分割区所属的档案系统名称 -h: 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。 注释: 例如:% df -hi 查询档案或目录的磁盘使用空间 命令:du (disk usage) 格式:du [option] [filename] 功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小 选项: -a:显示全部目录和其次目录下的每个档案所占的磁盘空间 -b:大小用bytes来表示 (默认值为k bytes) -c:最后再加上总计 (默认值) -s:只显示各档案大小的总合 -x:只计算同属同一个档案系统的档案 -L:计算所有的档案大小 -h: 表示档案系统大小使用 GB、MB 等易读的格式。 例如:% du -a % du -sh /etc 只显示该目录的总合 % du /etc | sort -nr | more 统计结果用sort 指令进行排序, sort 的参数 -nr 表示要以数字排序法进行反向排序。 显示进程 命令:ps 格式:ps [option] 功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。 选项: -a 显示所有进程信息 -U uidlist 列出这个用户的所有进程 -e 显示当前运行的每一个进程信息 -f 显示一个完整的列表 -x 显示包括没有终端控制的进程状况 。 注释: 例如:% ps -ef % ps -aux 然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 终止进程 命令:kill 格式:kill [option] pid 功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process, 因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 选项:-9 强行终止进程 注释:pid标示进程号,可由ps命令得到。 例如:% kill -9 pid 你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形请参阅 man kill。 查看自己的IP地址 命令:ifconfig 格式:ifconfig -a 查看路由表 命令:netstat 格式:netstat -rn 远程登录 命令:telnet 格式:telnet hostname 文件传输 命令:ftp (file transfer program) 格式:ftp hostname 功能:网络文件传输及远程操作。 选项:ftp命令: cd [dirname] 进入远程机的目录 lcd [dirname] 设置本地机的目录 dir/ls 显示远程的目录文件 bin 以二进制方式进行传输 asc 以文本文件方式进行传输 get/mget 从远程机取一个或多个文件 put/mput 向远程机送一个或多个文件 prompt 打开或关闭多个文件传送时的交互提示 close 关闭与远程机的连接 quit 退出ftp !/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态 注释: 例如:% ftp hostname 查看自己的电子邮件 命令:mailx 格式:mailx 选项: delete 删除 next 下一个 quit 退出 reply 回复 回忆命令 命令:history 格式:history 功能:帮助用户回忆执行过的命令。 选项: 注释: 例如:% history 网上对话 命令:talk 格式:talk username 功能:在网上与另一用户进行对话。 选项: 注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部 显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。 例如:% talk username 允许或拒绝接受信息 命令:mesg (message) 格式:mesg [n/y] 功能:允许或拒绝其它用户向自己所用的终端发送信息。 选项:n 拒绝其它用户向自己所用的终端写信息 y 允许其它用户向自己所用的终端写信息(缺省值) 注释: 例如:% mesg n 给其他用户写信息 命令:write 格式:write username [ttyname] 功能:给其他用户的终端写信息。 选项: 注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。 例如:write username 创建、修改、删除用户和群组 a. 创建群组: 例如: groupadd oinstall 创建群组名为oinstall的组 groupadd -g 344 dba 创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 b. 修改群组: groupmod:该命令用于改变用户组帐号的属性 groupmod –g 新的GID 用户组帐号名 groupmod –n 新组名 原组名:此命令由于改变用户组的名称 c. 删除群组: groupdel 组名:该命令用于删除指定的组帐号 d. 新建用户: 命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 主要参数 -c:加上备注文字,备注文字保存在passwd的备注栏中。 -d:指定用户登入时的启始目录。 -D:变更预设值。 -e:指定账号的有效期限,缺省表示永久有效。 -f:指定在密码过期后多少天即关闭该账号。 -g:指定用户所属的群组。 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录。 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组。 -r:建立系统账号。 -s:指定用户登入后所使用的shell。 -u:指定用户ID号。 举例: # useradd -g oinstall -G dba oracle 创建Oracle用户 e. 删除用户 1 2 命令: userdel 用户名 删除指定的用户帐号 userdel –r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录 例:#useradd -g root kkk //把kkk用户加入root组里 f. 修改用户 1 2 命令: usermod 修改已有用户的信息 usermod –l 旧用户名 新用户名: 修改用户名 usermod –L 用户名: 用于锁定指定用户账号,使其不能登陆系统 usermod –U 用户名: 对锁定的用户帐号进行解锁 passwd –d 用户名: 使帐号无口令,即用户不需要口令就能登录系统 例:#usermod -l user2 user1 //把用户user2改名为user1 启动、关闭防火墙 永久打开或则关闭 chkconfig iptables on chkconfig iptables off 即时生效:重启后还原 service iptables start service iptables stop 或者: /etc/init.d/iptables start /etc/init.d/iptables stop 启动VSFTP服务 即时启动: /etc/init.d/vsftpd start 即时停止: /etc/init.d/vsftpd stop 开机默认VSFTP服务自动启动: 方法一:(常用\方便) [root@localhost etc]# chkconfig –list|grep vsftpd ( 查看情况) vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost etc]# chkconfig vsftpd on (执行ON设置) 或者:方法二: 修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以实现开机自动启动。 vi技巧 a. 进入输入模式 新增 (append) a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 A:从光标所在列最後面的地方开始新增资料。 插入 (insert) i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 I :从光标所在列的第一个非空白字元前面开始插入资料。 开始 (open) o :在光标所在列下新增一列并进入输入模式。 O: 在光标所在列上方新增一列并进入输入模式。 b. 退出vi 在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。 c. 删除与修改文件的命令: x:删除光标所在字符。 dd :删除光标所在的列。 r :修改光标所在字元,r 後接著要修正的字符。 R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。 s:删除光标所在字元,并进入输入模式。 S:删除光标所在的列,并进入输入模式。 d. 屏幕翻滚类命令 Ctrl+u: 向文件首翻半屏 Ctrl+d: 向文件尾翻半屏 Ctrl+f: 向文件尾翻一屏 Ctrl+b: 向文件首翻一屏 nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 e. 删除命令 ndw或ndW: 删除光标处开始及其后的n-1个字 do: 删至行首 d$: 删至行尾 ndd: 删除当前行及其后n-1行 x或X: 删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u: 删除输入方式下所输入的文本 f. 搜索及替换命令 /pattern: 从光标开始处向文件尾搜索pattern ?pattern: 从光标开始处向文件首搜索pattern n: 在同一方向重复上一次搜索命令 N: 在反方向上重复上一次搜索命令 :s/p1/p2/g: 将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g: 将文件中所有p1均用p2替换 g. 复制,黏贴 (1) 选定文本块,使用v进入可视模式;移动光标键选定内容 (2) 复制选定块到缓冲区,用y;复制整行,用yy (3) 剪切选定块到缓冲区,用d;剪切整行用dd (4) 粘贴缓冲区中的内容,用p h. 其他 在同一编辑窗打开第二个文件,用:sp [filename] 在多个编辑文件之间切换,用Ctrl+w

优秀的个人博客,低调大师

Git常用命令使用教程

git是一个开源的分布式版本控制系统,对于分布式、微服务的项目开发和管理非常的方便。它有分支的概念,可以详细的,清晰的看到每个分支、每个人的历史提交记录,相比较其他版本控制系统来说,比如SVN,就显得高大上。 我每天都使用git,但是很多命令记不住,所以这里整理一下常用的git命令清单。 一、Git配置SSH 配置名字和邮箱 # 全局配置 git config --global user.name 'XXX' git config --global user.email 'XXX@email.com' 生成SSH key cd ~/.ssh ssh-keygen -t rsa -C "XXX@email.com" 将 SSH key保存到git服务器上 # 复制key,如果这个命令不能用,可以cat然后再复制 clip < ~/.ssh/id_rsa.pub 测试 ssh -T git_host 有如下响应,就证明配置成功。 Welcome to GitLab, XXXXXX! 二、创建git仓库 git初始化 git init 然后与远程仓库关联 git remote add [origin git_project_host] 如果远程仓库已经有一个项目了,此时,你可以克隆代码 git clone [git_project_host] 三、添加/删除文件 添加文件 git add [file] 删除文件 git rm [file] 可用 . 表示当前目录及以下的所有文件 四、提交代码 git commit -m 'comment message' 五、推送代码 git push -u origin branch_name 六、查看信息 查看状态 git status 查看历史 git log 七、拉取代码 git pull origin branch_name 八、分支操作 新建分支 git branch branch_name 切换分支 git checkout branch_name 新建分支并切换到新分支 git checkout -b branch_name 查询所有分支 git branch -a 按 q 退出 九、合并代码 git merge branch_name git rebase branch_name 合并代码示例 示例一、开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支 # dev分支 git checkout dev # 拉取代码 git pull # 切换到master分支 git checkout master # 合并dev分支 git merge dev # 推送master分支 git push -u origin master 示例二、当master代码改动了,需要更新开发分支(dev)上的代码 # master分支 git checkout master # 拉取代码 git pull # 切换到dev分支 git checkout dev # 合并master分支 git merge master # 推送到dev分支 git push -u origin dev 十、IDEA版本控制常用操作 点击 Get from Version Control ,克隆工程 创建git本地仓库 拉取 / 推送 在github上创建工程 合并分支代码 更多文档 Git 官方文档 Pro Git book 如何使用Git Rebase

优秀的个人博客,低调大师

Java常用命令之jstat

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。 jstat -options查看可用参数如下 [root@localhost servers]# jstat -options option -class -compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcutil -printcompilation jstat -class 用于查看类加载信息 Loaded Bytes Unloaded Bytes Time 12408 22663.9 0 0.0 11.13 12408 22663.9 0 0.0 11.13 12408 22663.9 0 0.0 11.13 12408 22663.9 0 0.0 11.13 Loaded 加载类的数量 Bytes 加载类合计大小 Unloaded 卸载类的数量 Bytes 卸载类合计大小 Time 表示加载和卸载类总共的耗时 jstat -compiler 用于编绎统计 Compiled Failed Invalid Time FailedType FailedMethod 14276 2 0 54.43 1 com/mysql/jdbc/AbandonedConnectionCleanupThread run Compiled:编译数量。 Failed:失败数量 Invalid:不可用数量 Time:时间 FailedType:失败类型 FailedMethod:失败的方法 jstat -gc 查看gc信息 jstat -gc 16002 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 512.0 512.0 0.0 320.0 173568.0 82801.1 349696.0 92495.3 72192.0 69136.8 8704.0 8192.9 687 8.424 3 0.408 8.832 S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小 EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小 MC:方法区大小 MU:方法区使用大小 CCSC:压缩类空间大小 CCSU:压缩类空间使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

优秀的个人博客,低调大师

Docker的常用命令(1)

[root@jiaxin-ceshi logs]# docker help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: config Manage Docker configs container Manage containers image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes Commands: attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes Run 'docker COMMAND --help' for more information on a command. -V 版本打印版本信息和退出 查看当前运行的容器 [root@jiaxin-ceshi logs]# docker ps 获取镜像docker pull --help docker pull 镜像名称 查看镜像信息 [root@jiaxin-ceshi logs]# docker images 查找景象 [root@jiaxin-ceshi logs]# docker search nginx 下载镜像 [root@jiaxin-ceshi logs]# docker pull nginx

优秀的个人博客,低调大师

Linux 常用命令集合

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期 cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 - 月日时分年.秒 clock -w 将时间修改保存到 BIOS 关机 (系统的关机、重启以及登出 ) shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启(1) reboot 重启(2) logout 注销 文件和目录 cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1) lstree 显示文件和目录由根目录开始的树形结构(2) mkdir dir1 创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做 'file1' 的文件' rmdir dir1 删除一个叫做 'dir1' 的目录' rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容 mv dir1 new_dir 重命名/移动 一个目录 cp file1 file2 复制一个文件 cp dir/* . 复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 . 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录 ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) file file1 outputs the mime type of the file as text iconv -l 列出已知的编码 iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 文件搜索 find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 find / -user user1 搜索属于用户 'user1' 的文件和目录 find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 whereis halt 显示一个二进制文件、源码或man的位置 which halt 显示一个二进制文件或可执行文件的完整路径 挂载一个文件系统 mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出 fuser -km /mnt/hda2 当设备繁忙时强制卸载 umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 mount /dev/fd0 /mnt/floppy 挂载一个软盘 mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享 磁盘空间 df -h 显示已经挂载的分区列表 ls -lSr |more 以尺寸大小排列文件和目录 du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小 rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统) dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统) 用户和群组 groupadd group_name 创建一个新用户组 groupdel group_name 删除一个用户组 groupmod -n new_group_name old_group_name 重命名一个用户组 useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户 useradd user1 创建一个新用户 userdel -r user1 删除一个用户 ( '-r' 排除主目录) usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 passwd 修改口令 passwd user1 修改一个用户的口令 (只允许root执行) chage -E 2005-12-31 user1 设置用户口令的失效期限 pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消 ls -lh 显示权限 ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 chown user1 file1 改变一个文件的所有人属性 chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 chgrp group1 file1 改变文件的群组 chown user1:group1 file1 改变一个文件的所有人和群组属性 find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 chmod g-s /home/public 禁用一个目录的 SGID 位 chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 chmod o-t /home/public 禁用一个目录的 STIKY 位 文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 chattr +a file1 只允许以追加方式读写文件 chattr +c file1 允许这个文件能被内核自动压缩/解压 chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 chattr +s file1 允许一个文件被安全地删除 chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 lsattr 显示特殊的属性 打包和压缩文件 bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 bzip2 file1 压缩一个叫做 'file1' 的文件 gunzip file1.gz 解压一个叫做 'file1.gz'的文件 gzip file1 压缩一个叫做 'file1'的文件 gzip -9 file1 最大程度压缩 rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包 rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1' rar x file1.rar 解压rar包 unrar x file1.rar 解压rar包 tar -cvf archive.tar file1 创建一个非压缩的 tarball tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 tar -tf archive.tar 显示一个包中的内容 tar -xvf archive.tar 释放一个包 tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 zip file1.zip file1 创建一个zip格式的压缩包 zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 unzip file1.zip 解压一个zip格式压缩包 RPM 包 - (Fedora, Redhat及类似系统) rpm -ivh package.rpm 安装一个rpm包 rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 rpm -U package.rpm 更新一个rpm包但不改变其配置文件 rpm -F package.rpm 更新一个确定已经安装的rpm包 rpm -e package_name.rpm 删除一个rpm包 rpm -qa 显示系统中所有已经安装的rpm包 rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包 rpm -qi package_name 获取一个已安装包的特殊信息 rpm -qg "System Environment/Daemons" 显示一个组件的rpm包 rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表 rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表 rpm -q package_name --whatprovides 显示一个rpm包所占的体积 rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l rpm -q package_name --changelog 显示一个rpm包的修改历史 rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供 rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表 rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书 rpm --checksig package.rpm 确认一个rpm包的完整性 rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性 rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 rpm -Va 检查系统中所有已安装的rpm包- 小心使用 rpm -Vp package.rpm 确认一个rpm包还未安装 rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件 rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包 rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包 YUM 软件包升级器 - (Fedora, RedHat及类似系统) yum install package_name 下载并安装一个rpm包 yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 yum update package_name.rpm 更新当前系统中所有安装的rpm包 yum update package_name 更新一个rpm包 yum remove package_name 删除一个rpm包 yum list 列出当前系统中安装的所有包 yum search package_name 在rpm仓库中搜寻软件包 yum clean packages 清理rpm缓存删除下载的包 yum clean headers 删除所有头文件 yum clean all 删除所有缓存的包和头文件 DEB 包 (Debian, Ubuntu 以及类似系统) dpkg -i package.deb 安装/更新一个 deb 包 dpkg -r package_name 从系统删除一个 deb 包 dpkg -l 显示系统中所有已经安装的 deb 包 dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包 dpkg -s package_name 获得已经安装在系统中一个特殊包的信息 dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表 dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表 dpkg -S /bin/ping 确认所给的文件由哪个deb包提供 APT 软件工具 (Debian, Ubuntu 以及类似系统) apt-get install package_name 安装/更新一个 deb 包 apt-cdrom install package_name 从光盘安装/更新一个 deb 包 apt-get update 升级列表中的软件包 apt-get upgrade 升级所有已安装的软件 apt-get remove package_name 从系统删除一个deb包 apt-get check 确认依赖的软件仓库正确 apt-get clean 从下载的软件包中清理缓存 apt-cache search searched-package 返回包含所要搜索字符串的软件包名称 查看文件内容 cat file1 从第一个字节开始正向查看文件的内容 tac file1 从最后一行开始反向查看一个文件的内容 more file1 查看一个长文件的内容 less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 head -2 file1 查看一个文件的前两行 tail -2 file1 查看一个文件的最后两行 tail -f /var/log/messages 实时查看被添加到一个文件中的内容 文本处理 cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中 cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中 grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug" grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇 grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行 grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug" sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2" sed '/^$/d' example.txt 从example.txt文件中删除所有空白行 sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行 echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容 sed -e '1d' result.txt 从文件example.txt 中排除第一行 sed -n '/stringa1/p' 查看只包含词汇 "string1"的行 sed -e 's/ *$//' example.txt 删除每一行最后的空白字符 sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部 sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容 sed -n '5p;5q' example.txt 查看第5行 sed -e 's/00*/0/g' example.txt 用单个零替换多个零 cat -n file1 标示文件的行数 cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行 echo a b c | awk '{print $1}' 查看一行第一栏 echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏 paste file1 file2 合并两个文件或两栏的内容 paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分 sort file1 file2 排序两个文件的内容 sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) sort file1 file2 | uniq -u 删除交集,留下其他的行 sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容 comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 字符设置和文件格式转换 dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS recode ..HTML < page.txt > page.html 将一个文本文件转换成html recode -l | more 显示所有允许的转换格式 文件系统分析 badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块 fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性 fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性 fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 初始化一个文件系统 mkfs /dev/hda1 在hda1分区创建一个文件系统 mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统 mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统 mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统 fdformat -n /dev/fd0 格式化一个软盘 mkswap /dev/hda3 创建一个swap文件系统 SWAP文件系统 mkswap /dev/hda3 创建一个swap文件系统 swapon /dev/hda3 启用一个新的swap文件系统 swapon /dev/hda2 /dev/hdb3 启用两个swap分区 备份 dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份 dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份 restore -if /tmp/home0.bak 还原一个交互式备份 rsync -rogpav --delete /home /tmp 同步两边的目录 rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录 rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录 dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作 dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件 tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作 ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容 ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录 tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接 find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录 find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包 dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作 dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容 光盘 cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容 mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件 mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件 mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件 cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件 gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件 mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件 cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中 cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3) cdrecord --scanbus 扫描总线以识别scsi通道 dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD 网络 - (以太网和WIFI无线) ifconfig eth0 显示一个以太网卡的配置 ifup eth0 启用一个 'eth0' 网络设备 ifdown eth0 禁用一个 'eth0' 网络设备 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址 ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing) dhclient eth0 以dhcp模式启用 'eth0' route -n show routing table route add -net 0/0 gw IP_Gateway configura default gateway route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16' route del 0/0 gw IP_gateway remove static route echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing hostname show hostname of system host www.example.com lookup hostname to resolve name to ip address and viceversa(1) nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2) ip link show show link status of all interfaces mii-tool eth0 show link status of 'eth0' ethtool eth0 show statistics of network card 'eth0' netstat -tup show all active network connections and their PID netstat -tupl show all network services listening on the system and their PID tcpdump tcp port 80 show all HTTP traffic iwlist scan show wireless networks iwconfig eth1 show configuration of a wireless network card hostname show hostname host www.example.com lookup hostname to resolve name to ip address and viceversa nslookup www.example.com lookup hostname to resolve name to ip address and viceversa whois www.example.com lookup on Whois database Microsoft Windows networks (SAMBA) nbtscan ip_addr netbios name resolution nmblookup -A ip_addr netbios name resolution smbclient -L ip_addr/hostname show remote shares of a windows host smbget -Rr smb://ip_addr/share like wget can download files from a host windows via smb mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share

优秀的个人博客,低调大师

openstack i版常用命令

查看openstack的运行状态 nova节点nova service-list (nova-scheduler、nova-conductor、nova-cert、nova-consoleauth)监控服务状态时除nova-consoleauth中有一台作为准备down状态外其余为up neutron节点neutron agent-list (Metadata agent、DHCP agent、Open vSwitch agent) 监控状态时非:-)时为异常 cinder节点 cinder service-list (cinder-backup、cinder-scheduler、cinder-volume) 监控状态时非up时为异常 注: 监控采用api的方式获取,命令加入--debug即可获得api请求cinder --debug service-list 查看云主机信息 特定tenant下所有云主机 nova list 所有tenant下的云主机信息 nova list --all-tenants (admin keyfile) 注:nova api配置限制返回条目nova.conf 1 2 3 #Themaximumnumberofitemsreturnedinasingleresponse #fromacollectionresource(integervalue) osapi_max_limit=1000 根据IP过滤查询 nova list --all-tenant --ip 10.199.133.152 keyfile文件示例 1 2 3 4 5 6 cat keystonerc_admin export OS_USERNAME=admin export OS_TENANT_NAME=admin export OS_PASSWORD=openstack_pass export OS_AUTH_URL=http: //keystone_ip :5000 /v2 .0/ export PS1= '[\u@\h\W(keystone_admin)]\$' 查看详细信息 nova show uuid 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 +--------------------------------------+-------------------------------------------------------------+ |Property|Value| +--------------------------------------+-------------------------------------------------------------+ |OS-DCF:diskConfig|MANUAL| |OS-EXT-AZ:availability_zone|qa-zone| |OS-EXT-SRV-ATTR:host|hh-yun-compute-130128.vclound.com| |OS-EXT-SRV-ATTR:hypervisor_hostname|hh-yun-compute-130128.vclound.com| |OS-EXT-SRV-ATTR:instance_name|instance-00021e62| |OS-EXT-STS:power_state|1| |OS-EXT-STS:task_state|-| |OS-EXT-STS:vm_state|active| |OS-SRV-USG:launched_at|2017-01-04T06:39:22.000000| |OS-SRV-USG:terminated_at|-| |QATOOL_NETnetwork|10.199.133.152| |accessIPv4|| |accessIPv6|| |availability_zone|qa-zone| |config_drive|| |created|2017-01-04T06:38:18Z| |flavor|4core-4g(dc98e6d6-143f-42c2-9482-ee6efb04ff7e)| |hostId|38e138eb165ba7732ce3f40b6830eb158ef8788bdc4279c63e2a024f| | id |e2bbc0ff-a16a-4dea-8c5e-1e9bb7445c13| |image|Centos7_Generic_1503(5aa770b3-8636-4532-9ffd-e1b0dca982be)| |key_name|-| |metadata|{}| |name|harbor-ui.vclound.com| |os-extended-volumes:volumes_attached|[{ "id" : "ee67e9a3-3b63-41dd-bd4a-ef778dbe89d4" }]| |progress|0| |security_groups|default| |status|ACTIVE| |tenant_id|359df7f169214333a7562c7a3095beb8| |updated|2017-01-04T06:39:22Z| |user_id|e69ce5e92b4c427189269c0d6df38fb7| +--------------------------------------+-------------------------------------------------------------+ 查看flavor nova flavor-list 查看镜像 nova image-list glance image-list 查看网络 neutron net-list 查看用zonenova aggregate-list 查看zone下的物理主机 nova aggregate-details qa-zone 创建并启动一台名为adams_test_vm的云主机 创建云主机指定物理主机及密码 nova boot --flavor flavor_name --image image_name --security_group default --nic net-id=net_uuid --availability-zone qa-nova:computer_name vm_host_name --user-data ./passwd.sh --poll 1 2 3 passwd .sh内容如下: #!/bin/bash echo qwe123qwe| passwd --stdinroot 下载镜像 glance image-download image_id --file Win7 上传镜像 glance image-create --name image_name --disk-format qcow2 --file /root/Win7 --container-format bare --is-public True 卸载云盘 nova volume-detach 云主机uuid 云盘uuid 挂载云盘 novavolume-attach云主机uuid 云盘uuid 查看用户信息keystone user-getuser_id 查看tenant信息keystone tenant-get tenant_id 查看compute节点列表nova hypervisor-list 查看compute节点信息nova hypervisor-show compute_node_name 查看宿主机节点上的所有云主机信息nova hypervisor-serverscompute_node_name 查看compute节点资源使用情况nova hypervisor-stats 删除云主机nova delete uuid 创建云盘cinder create size_by_G --availability-zone nova --volume-type ceph-sata --display-name harbor-ui-01 --display-description "ui log disk" --metadata create_user_login=jack01.wu readonly=False create_user_id=xxx attached_mode=rw 迁移云主机nova live-migration uuid compute_node_name (挂载有云硬盘的实例,需要先卸载后操作) 禁用compute节点服务nova service-disable compute_node_name IP分配信息neutron port-list 租户列表keystone tenant-list 配额信息nova quota-show 变更实例配置nova resize instance_uuid|instance_nameflavor_name|flavor_id 重新配置实例nova instance_uuid|instance_nameflavor_name|flavor_id--rebuild-password test Openstack超配设置 1 nova.conf(默认值) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 CPU #VirtualCPUtophysicalCPUallocationratiowhichaffects #allCPUfilters.Thisconfigurationspecifiesaglobalratio #forCoreFilter.ForAggregateCoreFilter,itwillfallback #tothisconfigurationvalueifnoper-aggregatesetting #found.(floatingpointvalue) #cpu_allocation_ratio=16.0 DISK磁盘超配如云主机使用宿主机存储易导致灾难事故 #Virtualdisktophysicaldiskallocationratio(floating #pointvalue) #disk_allocation_ratio=1.0 MEM #Virtualramtophysicalramallocationratiowhichaffects #allramfilters.Thisconfigurationspecifiesaglobalratio #forRamFilter.ForAggregateRamFilter,itwillfallbackto #thisconfigurationvalueifnoper-aggregatesettingfound. #(floatingpointvalue) #ram_allocation_ratio=1.5 #Enablesdynamicmemoryallocation(ballooning)whensettoa #valuegreaterthan1.Thevalueexpressestheratiobetween #thetotalRAMassignedtoaninstanceanditsstartupRAM #amount.Forexamplearatioof2.0foraninstancewith #1024MBofRAMimplies512MBofRAMallocatedatstartup #(floatingpointvalue) #dynamic_memory_ratio=1.0 从14的开发测试环境开始使用openstack,整体架构初期采用openstack底层、页面抛弃原生Horizon自主开发集成后台界面,实现全套的从物理机裸机至云主机业务上线使用、监控报警的流程。初期采用puppet用于管理云主机,glusterfs文件存储作为后端存储。 后续由于时间及研究未深入原因,puppet不适合用于管理3k+以上云主机,后续采用特定用户密钥+自研发布系统的方式管理云主机的管理软件。及机房断电时glusterfs的恢复能力、文件丢失情况严重问题后续后端采用ceph的rbd块存储的方式稳定提供高可用服务。 大致功能模块如下: 本文转自 qwjhq 51CTO博客,原文链接:http://blog.51cto.com/bingdian/1708902

优秀的个人博客,低调大师

Hbase shell 常用命令1

下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count '表名称' 删除记录 delete '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' 查看所有记录 scan "表名称" 查看某个表某个列中所有数据 scan "表名称" , ['列名称:'] 更新记录 就是重写一遍进行覆盖 下面是一些常见命令的说明,在hbaseshell中输入help的帮助信息,在本文中,我们先介绍前3个,后面2个,将在下一篇博文中介绍。 点击(此处)折叠或打开 输入help,查看命令帮助 hbase(main):001:0> help HBase Shell, version 1.2.0, r25b281972df2f5b15c426c8963cbf77dd853a5ad, Thu Feb 18 23:01:49 CST 2016 Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command. Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group. COMMAND GROUPS: Group name: general Commands: status, table_help, version, whoami Group name: ddl Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters Group name: namespace Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables Group name: dml Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve Group name: tools Commands: assign, balance_switch, balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, close_region, compact, compact_rs, flush, major_compact, merge_region, move, normalize, normalizer_enabled, normalizer_switch, split, trace, unassign, wal_roll, zk_dump Group name: replication Commands: add_peer, append_peer_tableCFs, disable_peer, disable_table_replication, enable_peer, enable_table_replication, list_peers, list_replicated_tables, remove_peer, remove_peer_tableCFs, set_peer_tableCFs, show_peer_tableCFs Group name: snapshots Commands: clone_snapshot, delete_all_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot Group name: configuration Commands: update_all_config, update_config Group name: quotas Commands: list_quotas, set_quota Group name: security Commands: grant, list_security_capabilities, revoke, user_permission Group name: procedures Commands: abort_procedure, list_procedures Group name: visibility labels Commands: add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibility SHELL USAGE: Quote all names in HBase Shell such as table and column names. Commas delimit command parameters. Type <RETURN> after entering a command to run it. Dictionaries of configuration used in the creation and alteration of tables are Ruby Hashes. They look like this: {'key1' => 'value1', 'key2' => 'value2', ...} and are opened and closed with curley-braces. Key/values are delimited by the '=>' character combination. Usually keys are predefined constants such as NAME, VERSIONS, COMPRESSION, etc. Constants do not need to be quoted. Type 'Object.constants' to see a (messy) list of all constants in the environment. If you are using binary keys or values and need to enter them in the shell, use double-quote'd hexadecimal representation. For example: hbase> get 't1', "key\x03\x3f\xcd" hbase> get 't1', "key\003\023\011" hbase> put 't1', "test\xef\xff", 'f1: 一、一般操作 1.查询服务器状态 hbase(main):024:0>status 3 servers, 0 dead,1.0000 average load 2.查询hbase版本 hbase(main):025:0>version 0.90.4, r1150278,Sun Jul 24 15:53:29 PDT 2011 二、DDL操作 1.创建一个表 hbase(main):011:0>create 'member','member_id','address','info' 0 row(s) in 1.2210seconds 2.获得表的描述 hbase(main):012:0>list TABLE member 1 row(s) in 0.0160seconds hbase(main):006:0>describe 'member' DESCRIPTIONENABLED {NAME => 'member', FAMILIES => [{NAME=> 'address', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', true VERSIONS => '3', COMPRESSION => 'NONE',TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'fa lse', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSI ONS => '3', COMPRESSION => 'NONE', TTL=> '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]} 1 row(s) in 0.0230seconds 3.删除一个列族,alter,disable,enable 我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。 hbase(main):003:0>alter 'member',{NAME=>'member_id',METHOD=>'delete'} ERROR: Table memberis enabled. Disable it first before altering. 报错,删除列族的时候必须先将表给disable掉。 hbase(main):004:0>disable 'member' 0 row(s) in 2.0390seconds hbase(main):005:0>alter'member',{NAME=>'member_id',METHOD=>'delete'} 0 row(s) in 0.0560seconds hbase(main):006:0>describe 'member' DESCRIPTIONENABLED {NAME => 'member', FAMILIES => [{NAME=> 'address', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0',false VERSIONS => '3', COMPRESSION => 'NONE',TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'fa lse', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSI ONS => '3', COMPRESSION => 'NONE', TTL=> '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]} 1 row(s) in 0.0230seconds 该列族已经删除,我们继续将表enable hbase(main):008:0> enable 'member' 0 row(s) in 2.0420seconds 4.列出所有的表 hbase(main):028:0>list TABLE member temp_table 2 row(s) in 0.0150seconds 5.drop一个表 hbase(main):029:0>disable 'temp_table' 0 row(s) in 2.0590seconds hbase(main):030:0>drop 'temp_table' 0 row(s) in 1.1070seconds 6.查询表是否存在 hbase(main):021:0>exists 'member' Table member doesexist 0 row(s) in 0.1610seconds 7.判断表是否enable hbase(main):034:0>is_enabled 'member' true 0 row(s) in 0.0110seconds 8.判断表是否disable hbase(main):032:0>is_disabled 'member' false 0 row(s) in 0.0110seconds 三、DML操作 1.插入几条记录 put'member','scutshuxue','info:age','24' put'member','scutshuxue','info:birthday','1987-06-17' put'member','scutshuxue','info:company','alibaba' put'member','scutshuxue','address:contry','china' put'member','scutshuxue','address:province','zhejiang' put'member','scutshuxue','address:city','hangzhou' put'member','xiaofeng','info:birthday','1987-4-17' put'member','xiaofeng','info:favorite','movie' put'member','xiaofeng','info:company','alibaba' put'member','xiaofeng','address:contry','china' put'member','xiaofeng','address:province','guangdong' put'member','xiaofeng','address:city','jieyang' put'member','xiaofeng','address:town','xianqiao' 2.获取一条数据 获取一个id的所有数据 hbase(main):001:0>get 'member','scutshuxue' COLUMN CELL address:citytimestamp=1321586240244, value=hangzhou address:contrytimestamp=1321586239126, value=china address:provincetimestamp=1321586239197, value=zhejiang info:agetimestamp=1321586238965, value=24 info:birthdaytimestamp=1321586239015, value=1987-06-17 info:companytimestamp=1321586239071, value=alibaba 6 row(s) in 0.4720seconds 获取一个id,一个列族的所有数据 hbase(main):002:0>get 'member','scutshuxue','info' COLUMN CELL info:agetimestamp=1321586238965, value=24 info:birthdaytimestamp=1321586239015, value=1987-06-17 info:companytimestamp=1321586239071, value=alibaba 3 row(s) in 0.0210seconds 获取一个id,一个列族中一个列的所有数据 hbase(main):002:0>get 'member','scutshuxue','info:age' COLUMN CELL info:agetimestamp=1321586238965, value=24 1 row(s) in 0.0320seconds 6.更新一条记录 将scutshuxue的年龄改成99 hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99' 0 row(s) in 0.0210seconds hbase(main):005:0>get 'member','scutshuxue','info:age' COLUMN CELL info:agetimestamp=1321586571843, value=99 1 row(s) in 0.0180seconds 3.通过timestamp来获取两个版本的数据 hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965} COLUMN CELL info:agetimestamp=1321586238965, value=24 1 row(s) in 0.0140seconds hbase(main):011:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843} COLUMN CELL info:agetimestamp=1321586571843, value=99 1 row(s) in 0.0180seconds 4.全表扫描: hbase(main):013:0>scan 'member' ROWCOLUMN+CELL scutshuxuecolumn=address:city, timestamp=1321586240244, value=hangzhou scutshuxuecolumn=address:contry, timestamp=1321586239126, value=china scutshuxuecolumn=address:province, timestamp=1321586239197, value=zhejiang scutshuxue column=info:age,timestamp=1321586571843, value=99 scutshuxuecolumn=info:birthday, timestamp=1321586239015, value=1987-06-17 scutshuxuecolumn=info:company, timestamp=1321586239071, value=alibaba tempcolumn=info:age, timestamp=1321589609775, value=59 xiaofengcolumn=address:city, timestamp=1321586248400, value=jieyang xiaofengcolumn=address:contry, timestamp=1321586248316, value=china xiaofengcolumn=address:province, timestamp=1321586248355, value=guangdong xiaofengcolumn=address:town, timestamp=1321586249564, value=xianqiao xiaofengcolumn=info:birthday, timestamp=1321586248202, value=1987-4-17 xiaofengcolumn=info:company, timestamp=1321586248277, value=alibaba xiaofengcolumn=info:favorite, timestamp=1321586248241, value=movie 3 row(s) in 0.0570seconds 5.删除id为temp的值的‘info:age’字段 hbase(main):016:0>delete 'member','temp','info:age' 0 row(s) in 0.0150seconds hbase(main):018:0>get 'member','temp' COLUMN CELL 0 row(s) in 0.0150seconds 6.删除整行 hbase(main):001:0>deleteall 'member','xiaofeng' 0 row(s) in 0.3990seconds 7.查询表中有多少行: hbase(main):019:0>count 'member' 2 row(s) in 0.0160seconds 8.给‘xiaofeng’这个id增加'info:age'字段,并使用counter实现递增 hbase(main):057:0*incr 'member','xiaofeng','info:age' COUNTER VALUE = 1 hbase(main):058:0>get 'member','xiaofeng','info:age' COLUMN CELL info:agetimestamp=1321590997648, value=\x00\x00\x00\x00\x00\x00\x00\x01 1 row(s) in 0.0140seconds hbase(main):059:0>incr 'member','xiaofeng','info:age' COUNTER VALUE = 2 hbase(main):060:0>get 'member','xiaofeng','info:age' COLUMN CELL info:agetimestamp=1321591025110, value=\x00\x00\x00\x00\x00\x00\x00\x02 1 row(s) in 0.0160seconds 获取当前count的值 hbase(main):069:0>get_counter 'member','xiaofeng','info:age' COUNTER VALUE = 2 9.将整张表清空: hbase(main):035:0>truncate 'member' Truncating 'member'table (it may take a while): - Disabling table... - Dropping table... - Creating table... 0 row(s) in 4.3430seconds 可以看出,hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能的。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。