首页 文章 精选 留言 我的

精选列表

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

Centos运维管理员常用命令大全

1.删除0字节文件 find-type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 PS-e -o "%C : %p : %z : %a"|sort -k5 -nr 3.按cpu利用率从大到小排列 ps-e -o "%C : %p : %z : %a"|sort -nr 4.打印说cache里的URL grep -r-a jpg /data/cache/* | strings | grep"http:" | awk -F'http:' '{print "http:"$2;}' 5.查看http的并发请求数及其TCP连接状态: netstat-n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 6. sed -i'/Root/s/no/yes/' /etc/ssh/sshd_configsed在这个文里Root的一行,匹配Root一行,将no替换成yes. 7.1.如何杀掉mysql进程: ps aux|grep mysql |grep -v grep |awk '{print$2}' |xargs kill -9 (从中了解到awk的用途) killall -TERMmysqld kill -9`cat /usr/local/apache2/logs/httpd.pid`试试查杀进程PID 8.显示运行3级别开启的服务: ls/etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据) 9.如何在编写SHELL显示多个信息,用EOF cat<< EOF +--------------------------------------------------------------+ | === Welcome to Tunoff services === | +--------------------------------------------------------------+ EOF 10. for 的巧用(如给mysql建软链接) cd/usr/local/mysql/bin for i in* do ln/usr/local/mysql/bin/$i /usr/bin/$i done 11. 取IP地址: ifconfigeth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- 或者 ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' |cut -d: -f2 | awk '{ print $1}' 12.内存的大小: free -m|grep "Mem" | awk '{print $2}' 13. netstat-an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s%s\n",$5,$6}' | sort 14.查看Apache的并发请求数及其TCP连接状态: netstat-n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 15.因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦. find /-name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}' CPU的数量(多核算多个CPU,cat/proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。 16 CPU负载 # cat /proc/loadavg 检查前三个输出值是否超过了系统逻辑CPU的4倍。 18 CPU负载 #mpstat 1 1 检查%idle是否过低(比如小于5%) 19 内存空间 # free 检查free值是否过低 也可以用 # cat/proc/meminfo 20 swap空间 # free 检查swap used值是否过高 如果swap used值过高,进一步检查swap动作是否频繁: # vmstat1 5 观察si和so值是否较大 21 磁盘空间 # df -h 检查是否有分区使用率(Use%)过高(比如超过90%) 如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录: # du -cks* | sort -rn | head -n 10 22 磁盘I/O负载 # iostat -x 1 2 检查I/O使用率(%util)是否超过100% 23 网络负载 # sar -n DEV 检查网络流量(rxbyt/s,txbyt/s)是否过高 24 网络错误 # netstat -i 检查是否有网络错误(drop fifocolls carrier) 也可以用命令:# cat/proc/net/dev 25 网络连接数目 # netstat -an | grep -E “^(tcp)” | cut -c68- | sort | uniq -c | sort -n 26 进程总数 # ps aux | wc -l 检查进程个数是否正常 (比如超过250) 27 可运行进程数目 # vmwtat 1 5 列给出的是可运行进程的数目,检查其是否超过系统逻辑CPU的4倍 28 进程 # top -id 1 观察是否有异常进程出现 29 网络状态 检查DNS, 网关等是否可以正常连通 30 用户 # who | wc -l 检查登录用户是否过多 (比如超过50个) 也可以用命令:# uptime 31 系统日志 # cat /var/log/rflogview/*errors 检查是否有异常错误记录 也可以搜寻一些异常关键字,例如: # grep -ierror /var/log/messages # grep -ifail /var/log/messages 32 核心日志 # dmesg 检查是否有异常错误记录 33 系统时间 # date 检查系统时间是否正确 34 打开文件数目 # lsof | wc -l 检查打开文件总数是否过多 35 日志 # logwatch –print 配置/etc/log.d/logwatch.conf,将 Mailto 设置为自己的email 地址,启动mail服务(sendmail或者postfix),这样就可以每天收到日志报告了。 缺省logwatch只报告昨天的日志,可以用#logwatch –print –range all 获得所有的日志分析结果。 可以用# logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。 36.杀掉80端口相关的进程 lsof -i:80|grep -v "ID"|awk '{print "kill -9",$2}'|sh 37.清除僵死进程。 ps -eal |awk '{ if ($2 == "Z") {print $4}}' | kill -9 38.tcpdump抓包 ,用来防止80端口被人攻击时可以分析数据 # tcpdump-c 10000 -i eth0 -n dst port 80 > /root/pkts 39.然后检查IP的重复数 并从小到大排序 注意 "-t\ +0" 中间是两个空格 # lesspkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk{'printf $1" "$2"\n"'} | sort -n -t\ +0 40.查看有多少个活动的php-cgi进程 netstat-anp | grep php-cgi | grep ^tcp | wc -l 41.查看系统自启动的服务 chkconfig--list | awk '{if ($5=="3:on") print $1}' 42.kudzu查看网卡型号 kudzu--probe --class=network 匹配中文字符的正则表达式:[\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*?/> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^\s*|\s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 评注:匹配形式如 0511-4405222或 021-87888822 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]\d{5}(?!\d) 评注:中国邮政编码为6位数字 匹配身份证:\d{15}|\d{18} 评注:中国的身份证为15位或18位 匹配ip地址:\d+\.\d+\.\d+\.\d+ 评注:提取ip地址时有用 匹配特定数字: ^[1-9]\d*$ //匹配正整数 ^-[1-9]\d*$ //匹配负整数 ^-?[1-9]\d*$ //匹配整数 ^[1-9]\d*|0$ //匹配非负整数(正整数 +0) ^-[1-9]\d*|0$ //匹配非正整数(负整数 +0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数+ 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数+ 0) 评注:处理大量数据时有用,具体应用时注意修正 匹配特定字符串: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串 评注:最基本也是最常用的一些表达式

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

centos下利用yum安装卸载软件常用命令

一、使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。 安装的命令是,yum install ~,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断; 删除的命令是,yum remove ~,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。 其中~ 代表软件名 1.用YUM安装软件包命令:yum install ~ 2.用YUM删除软件包命令:yum remove ~ 二、用yum查询想安装的软件 我们常会碰到这样的情况,想安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。我们可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于是我们可能得到 gaim,kopete等等,并从中选择。 有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。 1.使用YUM查找软件包 命令:yum search ~ 2.列出所有可安装的软件包 命令:yum list 3.列出所有可更新的软件包 命令:yum list updates 4.列出所有已安装的软件包 命令:yum list installed 5.列出所有已安装但不在Yum Repository 內的软件包 命令:yum list extras 6.列出所指定软件包 命令:yum list ~ 7.使用YUM获取软件包信息 命令:yum info ~ 8.列出所有软件包的信息 命令:yum info 9.列出所有可更新的软件包信息 命令:yum info updates 10.列出所有已安裝的软件包信息 命令:yum info installed 11.列出所有已安裝但不在Yum Repository 內的软件包信息 命令:yum info extras 12.列出软件包提供哪些文件 命令:yum provides~ 三、清除YUM缓存 yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all 清除所有。 1.清除缓存目录(/var/cache/yum)下的软件包 命令:yum clean packages 2.清除缓存目录(/var/cache/yum)下的 headers 命令:yum clean headers 3.清除缓存目录(/var/cache/yum)下旧的 headers 命令:yum clean oldheaders 4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers 命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 四、yum命令工具使用举例 yum update 升级系统 yum install ~ 安装指定软件包 yum update ~ 升级指定软件包 yum remove ~ 卸载指定软件 yum grouplist 查看系统中已经安装的和可用的软件组,可用的可以安装 yum grooupinstall ~安装上一个命令显示的可用的软件组中的一个 yum grooupupdate ~更新指定软件组的软件包 yum grooupremove ~ 卸载指定软件组中的软件包 yum deplist ~ 查询指定软件包的依赖关系 yum list yum\* 列出所有以yum开头的软件包 yum localinstall ~ 从硬盘安装rpm包并使用yum解决依赖

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

HBase基本概念和hbase shell常用命令用法

1. 简介 HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。 2. HBase的表结构 HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族/列簇(column family)。 Row Key column-family1 column-family2 column-family3 column1 column2 column1 column2 column3 column1 key1 t1:abc t2:gdxdf t4:dfads t3:hello t2:world key2 t3:abc t1:gdxdf t4:dfads t3:hello t2:dfdsfa t3:dfdf key3 t2:dfadfasd t1:dfdasddsf t2:dfxxdfasd t1:taobao.com 如上图所示,key1,key2,key3是三条记录的唯一的row key值,column-family1,column-family2,column-family3是三个列族,每个列族下又包括几列。比如column-family1这个列族下包括两列,名字是column1和column2,t1:abc,t2:gdxdf是由row key1和column-family1-column1唯一确定的一个单元cell。这个cell中有两个数据,abc和gdxdf。两个值的时间戳不一样,分别是t1,t2, hbase会返回最新时间的值给请求者。 这些名词的具体含义如下: (1) Row Key 与nosql数据库们一样,row key是用来检索记录的主键。访问hbase table中的行,只有三种方式: (1.1) 通过单个row key访问 (1.2) 通过row key的range (1.3) 全表扫描 Row key行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。 存储时,数据按照Row key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性) 注意: 字典序对int排序的结果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行键必须用0作左填充。 行的一次读写是原子操作 (不论一次读写多少列)。这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。 (2) 列族 column family hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history , courses:math 都属于 courses 这个列族。 访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。 (3) 单元 Cell HBase中通过row和columns确定的为一个存贮单元称为cell。由{row key, column( =+), version} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。 (4) 时间戳 timestamp 每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。 为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,hbase提供了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。 3. HBase shell的基本用法 hbase提供了一个shell的终端给用户交互。通过执行 help get 可以看到命令的帮助信息。 以网上的一个学生成绩表的例子来演示hbase的用法。 name grad course math art zkb 5 97 87 baoniu 4 89 80 这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成math和art,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics等相应的列添加入course列族。图中需要注意的是90这个值,列族下面的列也是可以没有名字的。 (1) 建立一个表格scores 具有两个列族grad 和courese hbase(main):001:0> create'scores','grade', 'course' 0 row(s) in 0.4780 seconds (2) 查看当前HBase中具有哪些表 hbase(main):002:0> list TABLE scores 1 row(s) in 0.0270 seconds (3) 查看表的构造 hbase(main):004:0> describe'scores' DESCRIPTION ENABLED {NAME => 'scores', FAMILIES => [{NAME =>'course', BLOOMFILTER => 'NONE', REPLICATION_SCOPE =>'0', true COMPRESSION => 'NONE', VERSIONS =>'3', TTL => '2147483647', BLOCKSIZE =>'65536', IN_MEMORY => 'fal se', BLOCKCACHE => 'true'}, {NAME => 'grade', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPR ESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE =>'65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]} 1 row(s) in 0.0390 seconds (4) 加入一行数据,行名称为zkb 列族grad的列名为”” 值位5 hbase(main):006:0> put'scores','zkb','grade:','5' 0 row(s) in 0.0420 seconds (5) 给zkb这一行的数据的列族course添加一列,97> hbase(main):007:0> put'scores','zkb','course:math','97' 0 row(s) in 0.0270 seconds (6) 给zkb这一行的数据的列族course添加一列,87> hbase(main):008:0> put'scores','zkb','course:art','87' 0 row(s) in 0.0260 seconds (7) 加入一行数据,行名称为baoniu 列族grad的列名为”” 值为4 hbase(main):009:0> put'scores','baoniu','grade:','4' 0 row(s) in 0.0260 seconds (8) 给baoniu这一行的数据的列族course添加一列,89> hbase(main):010:0> put'scores','baoniu','course:math','89' 0 row(s) in 0.0270 seconds (9) 给Jerry这一行的数据的列族course添加一列,80> hbase(main):011:0> put'scores','baoniu','course:art','80' 0 row(s) in 0.0270 seconds (10) 查看scores表中zkb的相关数据 hbase(main):012:0> get'scores','zkb' COLUMN CELL course:art timestamp=1316100110921, value=87 course:math timestamp=1316100025944, value=97 grade: timestamp=1316099975625, value=5 3 row(s) in 0.0480 seconds (11) 查看scores表中所有数据 注意:scan命令可以指定startrow,stoprow来scan多个row,例如:scan 'user_test',{COLUMNS =>'info:username',LIMIT =>10, STARTROW => 'test',STOPROW=>'test2'} hbase(main):013:0> scan'scores' ROW COLUMN+CELL baoniu column=course:art, timestamp=1316100293784, value=80 baoniu column=course:math, timestamp=1316100234410, value=89 baoniu column=grade:, timestamp=1316100178609, value=4 zkb column=course:art, timestamp=1316100110921, value=87 zkb column=course:math, timestamp=1316100025944, value=97 zkb column=grade:, timestamp=1316099975625, value=5 2 row(s) in 0.0470 seconds (12) 查看scores表中所有数据courses列族的所有数据 hbase(main):017:0> scan'scores',{COLUMNS => 'course'} ROW COLUMN+CELL baoniu column=course:art, timestamp=1316100293784, value=80 baoniu column=course:math, timestamp=1316100234410, value=89 zkb column=course:art, timestamp=1316100110921, value=87 zkb column=course:math, timestamp=1316100025944, value=97 2 row(s) in 0.0350 seconds (13) 删除scores表 hbase(main):024:0> disable'scores' 0 row(s) in 0.0330 seconds hbase(main):025:0> drop'scores' 0 row(s) in 1.0840 seconds 本文转自杨海龙的博客博客51CTO博客,原文链接http://blog.51cto.com/7218743/1704072如需转载请自行联系原作者 IT达仁

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

第十一章 Shell常用命令与工具(二)

本章涉及命令如下: 11.31 wget 功能:非交互式网络下载,类似于HTTP客户端 常用选项: -b, --background 后台运行 日志记录和输入文件: -o, --output-file=FILE 日志写到文件 -a,--append-output=FILE 日志追加到文件 -d, --debug 打印debug信息,会包含头信息 -q, --quiet 退出,不输出 -i, --input-file=FILE 从文件中读取URL下载 下载选项: -t, --tries=NUMBER 设置链接重试次数 -O,--output-document=FILE 写入内容到文件 -nc, --no-clobber 跳过下载现有的文件 -c, --continue 断点续传 --progress=TYPE 设置进度条(dot和bar) -S, --server-response 打印服务器响应头信息 --spider 不下载任何内容 -T,--timeout=SECONDS 设置相应超时时间(还有--dns-timeout、--connect-timeout和--read-timeout) -w, --wait=SECONDS 两次重试间隔等待时间 --bind-address=ADDRESS 设置绑定地址 --limit-rate=RATE 限制下载速度 --user=USER 设置ftp和http用户名 --password=PASS 设置ftp和http密码 目录: -P,--directory-prefix=PREFIX 保存文件目录 HTTP选项: --http-user=USER 设置http用户名 --http-password=PASS 设置http密码 --proxy-user=USER 设置代理用户名 --proxy-password=PASS 设置代理密码 --referer=URL 设置Referer --save-headers 保存头到文件 --default-page=NAME 改变默认页面名字,默认index.html -U,--user-agent=AGENT 设置客户端信息 --no-http-keep-alive 禁用HTTP keep-alive(长连接) --load-cookies=FILE 从文件加载cookies --save-cookies=FILE 保存cookies到文件 --post-data=STRING 使用POST方法,发送数据 FTP选项: --ftp-user=USER 设置ftp用户名 --ftp-password=PASS 设置ftp密码 --no-passive-ftp 禁用被动传输模式 递归下载: -r, --recursive 指定递归下载 -l, --level=NUMBER 最大递归深度 -A, --accept=LIST 逗号分隔下载的扩展列表 -R, --reject=LIST 逗号分隔不被下载的扩展列表 -D, --domains=LIST 逗号分隔被下载域的列表 --exclude-domains=LIST 排除不被下载域的列表 示例: 下载单个文件到当前目录: #wgethttp://nginx.org/download/nginx-1.11.7.tar.gz 放到后台下载: #wget-bhttp://nginx.org/download/nginx-1.11.7.tar.gz 对于网络不稳定的用户使用-c和--tries参数,保证下载完成,并下载到指定目录: #wget-t3-chttp://nginx.org/download/nginx-1.11.7.tar.gz-Pdown 不下载任何内容,判断URL是否可以访问: #wget--spiderhttp://nginx.org/download/nginx-1.11.7.tar.gz 下载内容写到文件: #wgethttp://www.baidu.com/index.html-Oindex.html 从文件中读取URL下载: #wget-iurl.list 下载ftp文件: #wget--ftp-user=admin--ftp-password=adminftp://192.168.1.10/ISO/CentOS-6.5-i386-minimal.iso 伪装客户端,指定user-agent和referer下载: #wget-U"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.157Safari/537.36"--referer"http://nginx.org/en/download.html"http://nginx.org/download/nginx-1.11.7.tar.gz 查看HTTP头信息: #wget-Shttp://nginx.org/download/nginx-1.11.7.tar.gz #wget--debughttp://nginx.org/download/nginx-1.11.7.tar.gz 博客地址:http://lizhenliang.blog.51cto.com QQ群:323779636(Shell/Python运维开发群) 11.32 curl 功能:发送数据到URL,类似于HTTP客户端 常用选项: -C, --continue-at 断点续传 -b, --cookie STRING/FILE从文件中读取cookie -c, --cookie-jar 把cookie保存到文件 -d, --data 使用POST方式发送数据 --data-urlencode POST的数据URL编码 -F, --form 指定POST数据的表单 -D, --dump-header 保存头信息到文件 --ftp-pasv 指定FTP连接模式PASV/EPSV -P, --ftp-port 指定FTP端口 -L, --location 遵循URL重定向,默认不处理 -l, --list-only 指列出FTP目录名 -H, --header 自定义头信息发送给服务器 -I, --head 查看HTTP头信息 -o, --output FILE 输出到文件 -#, --progress-bar 显示bar进度条 -x, --proxy[PROTOCOL://]HOST[:PORT] 使用代理 -U, --proxy-userUSER[:PASSWORD] 代理用户名和密码 -e, --referer 指定引用地址referer -O, --remote-name 使用远程服务器上名字写到本地 --connect-timeout 连接超时时间,单位秒 --retry NUM 连接重试次数 --retry-delay 两次重试间隔等待时间 -s, --silent 静默模式,不输出任何内容 -Y, --speed-limit 限制下载速率 -u, --user USER[:PASSWORD] 指定http和ftp用户名和密码 -T, --upload-file 上传文件 -A, --user-agent 指定客户端信息 示例: 下载页面: #curl-obadu.htmlhttp://www.baidu.com 不输出下载信息: #curl-s-obaidu.htmlhttp://www.baidu.com 伪装客户端,指定user-agent和referer下载: #curl-A"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.157Safari/537.36"-e"baike.baidu.com"http://127.0.0.1 模拟用户登录,并保存cookies到文件: #curl-c./cookies.txt-FNAME=user-FPWD=123http://www.example.com/login.html 使用cookie访问: #curl-bcookies.txthttp://www.baidu.com 访问HTTP认证页面: #curl-uuser:passhttp://www.example.com FTP上传文件: #curl-Tfilenameftp://user:pass@ip/a.txt #curlftp://ip-uuser:pass-Tfilename FTP下载文件: #curl-Oftp://user:pass@ip/a.txt #curlftp://ip/filename-uuser:pass-ofilename FTP下载多个文件: #curlftp://ip/img/[1,3,5].jpg 查看HTTP头信息: #curl-Ihttp://www.baidu.com 11.33 scp 功能:基于SSH的安全远程服务器文件拷贝 常用选项: -i 指定私钥文件 -l 限制速率,单位Kb/s,1024Kb=1Mb -P 指定远程主机SSH端口 -p 保存修改时间、访问时间和权限 -r 递归拷贝目录 -o SSH选项,有以下常用的: ConnectionAttempts=NUM 连接失败后重试次数 ConnectTimeout=SEC 连接超时时间 StrictHostKeyChecking=no 自动拉去主机key文件 PasswordAuthentication=no 禁止密码认证 示例: 本地目录推送到远程主机: #scp-P22-rsrc_dirroot@192.168.1.10:/dst_dir 远程主机目录拉取到本地: #scp-P22root@192.168.1.10:dst_dirsrc_dir 同步文件方式一样,不用加-r参数 11.34 rsync 功能:远程或本地文件同步工具 常用选项: -v 显示复制信息 -q 不输出错误信息 -c 跳过基础效验,不判断修改时间和大小 -a 归档模式,等效-rlptgoD,保留权限、属组等 -r 递归目录 -l 拷贝软连接 -z 压缩传输数据 -e 指定远程shell,比如ssh、rsh --progress 进度条,等同-P --bwlimit=KB/s 限制速率,0为没有限制 --delete 删除那些DST中SRC没有的文件 --exclude=PATTERN 排除匹配的文件或目录 --exclude-from=FILE 从文件中读取要排除的文件或目录 --password-file=FILE 从文件读取远程主机密码 --port=PORT 监听端口 示例: 本地复制目录: #rsync-avzabc/opt 本地目录推送到远程主机: #rsync-avzSRCroot@192.168.1.120:DST 远程主机目录拉取到本地: #rsync-avzroot@192.168.1.10:SRCDST 保持远程主机目录与本地一样: #rsync-avz--deleteSRCroot@192.168.1.120:DST 排除某个目录: #rsync-avz--exclude=no_dirSRCroot@192.168.1.120:DST 指定SSH端口: #rsync-avz/etc/hosts-e"ssh-p22"root@192.168.1.120:/opt 11.35 nohup 功能:运行命令,忽略所有挂起信号 常用选项: 示例: 后台运行程序,终端关闭不影响: #nohupbashtest.sh&>test.log& 11.36 iconv 功能:将文件内容字符集转成其他字符集 常用选项: -l 列出所有已知的编码字符集 -f 编码原始文本 -t 输出的编码格式 -o 输出到文件 -s 不输出警告 示例: 将文件内容转换UTF8: #iconv-fgbk-tutf8old.txt-onew.txt 将csv文件转换GBK: #iconv-futf8-tgbkold.txt-onew.txt 解决邮件乱码: #echo$(echo"content"|iconv-futf8-tgbk)|mail-s"$(echo"title"|iconv-futf8-tgbk)"dst@163.com 11.37 uname 功能:打印系统信息 常用选项: -a 打印所有信息 -s 打印内核名称 -n 打印主机名 -r 打印内核发行版 -v 打印内核版本 -m 打印机器硬件名 -p 打印处理器类型 -i 打印硬件平台 -o 打印操作系统 示例: 打印所有系统信息: #uname-a 打印主机名: #uname-a 打印内核版本: #uname-r 打印操作系统: #uname-o 11.38 sshpass 功能:非交互SSH登录(需要安装) 常用选项: -f 从文件中获取密码 -d 用数字文件描述符获取密码 -p 密码作为参数 -e 密码作为环境变量传递,变量名是SSHPASS 示例: 免交互SSH登录: #sshpass-p123456sshroot@192.168.1.10 免交互传输文件: #sshpass-p123456scpa.txt192.168.1.10:/root 密码传入系统变量: #SSHPASS=123456rsync-avz/etc/hosts-e"sshpass-essh"root@192.168.1.221:/opt 11.39 tar 功能:归档目录或文件 常用选项: -c 创建新归档 -d 比较归档和文件系统的差异 -r 追加文件到归档 -t 存档的内容列表 -x 提取归档所有文件 -C 改变解压目录 -f 使用归档文件或设备归档 -j bzip2压缩 -z gzip压缩 -v 输出处理过程 示例: 创建归档文件来自foo和bar: #tar-cfarchive.tarfoobar 提取归档的所有文件: #tar-xfarchive.tar 创建归档并gzip压缩: #tar-zcvfarchive.tar.gzlog 提取归档文件并gzip解压: #tar-zxvflog.tar.gz 创建归档并bzip2压缩: #tar-jcvflog.tar.bzlog 列出所有在archive.tar的文件: #tar-tvfarchive.tar 提取归档并解压到指定目录: #tar-zxvflog.tar.gz-C/opt 11.40 logger 功能:系统日志的shell命令行接口 常用选项: -i 每行记录进程ID -f 指定输出日志到文件 -p 设置记录的优先级 -t 添加标签 示例: #logger-i-t"my_test"-plocal3.notice"test_info" 11.41 netstat 功能:打印网络连接、路由表、接口统计信息、伪装连接和多播成员 常用选项: -r 显示路由表 -i 显示接口表 -n 不解析名字 -p 显示程序名 PID/Program -l 显示监听的socket -a 显示所有socket -o 显示计时器 -Z 显示上下文 -t 只显示tcp连接 -u 只显示udp连接 -s 显示每个协议统计信息 示例: 显示所有监听: #netstat-anltu 显示所有TCP连接: #netstat-antp 显示所有UDP连接: #netstat-anup 显示路由表: #netstat-r 11.42 ss 功能:比netstat更强大的socket查看工具 格式:ss [options] [ FILTER ] 常用选项: -n 不解析名字 -a 显示所有socket -l 显示所有监听的socket -o 显示计时器 -e 显示socket详细信息 -m 显示socket内存使用 -p 显示进程使用的socket -i 显示内部TCP信息 -s 显示socket使用汇总 -4 只显示IPV4的socket -0 显示包socket -t 只显示TCP socket -u 只显示UDP socket -d 只显示DCCP socket -w 只显示RAW socket -x 只显示Unix域socket -f FAMILY只显示socket族类型(unix, inet,inet6, link, netlink) -A 查询socket{all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] -D 将原始的TCP socket转储到文件 -F 从文件中读取过滤信息 过滤: -o state 显示TCP连接状态信息 示例: 显示所有TCP连接: #ss-t-a 显示所有UDP连接: #ss-u–a 显示socket使用汇总: #ss-s 显示所有建立的连接: #ss-ostateestablished 显示所有的TIME-WAIT状态: #ss-ostateTIME-WAIT 搜索所有本地进程连接到XServer: #ss-xsrc/tmp/.X11-unix/* 11.43 lsof 功能:列出打开的文件 常用选项: -i [i] 监听的网络地址,如果没有指定,默认列出所有。[i] 来自[46][protocol][@hostname|hostaddr][:service|port] -U 列出Unix域socket文件 -p 指定PID -u 指定用户名或UID所有打开的文件 +D 递归搜索 示例: 列出所有打开的文件: #lsof 查看哪个进程占用文件: #lsof/etc/passwd 列出所有打开的监听地址和unix域socket文件: #lsof-i-U 列出80端口监听的进程: #lsof-i:80 列出端口1-1024之间的所有进程: #lsof-i:1-1024 列出所有TCP网络连接: #lsof-itcp 列出所有UDP网络连接: #lsof-iudp 根据文件描述符列出打开的文件: #lsof-d1 列出某个目录被打开的文件: #lsof+D/var/log 列出进程ID打开的文件: #lsof-p5373 打开所有登录用户名abc或userid1234,或PID123或PID456: #lsof-p123,456-u123,abc 列出COMMAND列中包含字符串sshd: #lsof-csshd 博客地址:http://lizhenliang.blog.51cto.com QQ群:323779636(Shell/Python运维开发群) 11.44 ps 功能:报告当前进程的快照 常用选项: -a 显示所有进程 -u 选择有效的用户ID或名称 -x 显示无控制终端的进程 -e 显示所有进程 -f 全格式 -r 只显示运行的进程 -T 这个终端的所有进程 -p 指定进程ID --sort 对某列排序 -m 线程 -L 格式化代码列表 -o 用户自定义格式 CODENORMAL HEADER %C pcpu %CPU %G group GROUP %P ppid PPID %U user USER %a args COMMAND %c comm COMMAND %g rgroup RGROUP %n nice NI %p pid PID %r pgid PGID %t etime ELAPSED %u ruser RUSER %x time TIME %y tty TTY %z vsz VSZ 示例: 打印系统上所有进程标准语法: #ps-ef 打印系统上所有进程BSD语法: #psaux 打印进程树: #psaxjf或ps-ejH 查看进程启动的线程: #ps-LfpPID 查看当前用户的进程数: #psuxm或ps-Uroot-urootu 自定义格式显示并对CPU排序: #ps-eouser,pid,pcpu,pmem,nice,lstart,time,args--sort=-pcpu 或ps-eo"%U%p%C%n%x%a" 11.45 top 功能:动态显示活动的进程和系统资源利用率 常用选项: -d 信息刷新时间间隔 -p 只监控指定的进程PID -i 只显示正在使用CPU的进程 -H 显示线程 -u 只查看指定用户名的进程 -b 将输出编排成易处理格式,适合输出到文件处理 -n 指定最大循环刷新数 交互命令: f 添加或删除显示的指标 c 显示完整命令 P 按CPU使用百分比排序 M 按驻留内存大小排序 T 按进程使用CPU时间排序 1 显示每个CPU核心使用率 k 终止一个进程 示例: 刷新一次并输出到文件: #top-b-n1>top.log 只显示指定进程的线程: #top-Hp123 传入交互命令,按CPU排序 11.46 free 功能:查看内存使用率 常用选项: -b bytes显示 -k KB显示 -m M显示 -g G显示 -h 易读单位显示 -s 每几秒重复打印 -c 重复打印几次退出 示例: 查看物理内存: #free-m 易读单位显示: #free-h 11.47 df 功能:查看文件系统的磁盘空间使用情况 常用选项: -a 包含虚拟文件系统 -h 可易读单位显示 -i 显示block使用的inode信息 -k KB显示 -P 使用POSIX格式输出 -t 输出指定文件系统类型 -T 打印文件系统类型 示例: 查看所有文件系统: #df-ah 输出指定文件系统: #df-txfs 11.48 vmstat 功能:报告虚拟内存、swap、io、上下文和CPU统计信息。 分析了这些文件: /proc/meminfo /proc/stat /proc/*/stat 常用选项: -a 打印活跃和不活跃的内存页 -d 打印硬盘统计信息 -D 打印硬盘表 -p 打印硬盘分区统计信息 -s 打印虚拟内存表 -m 打印内存分配(slab)信息 -t 添加时间戳到输出 -S 显示单位,默认k、KB、m、M,大写是*1024 示例: 分析系统性能: #vmstat 每秒刷新一次,统计五次: #vmstat-t1511.49iostat 功能:报告CPU利用率和磁盘I/O 常用选项: -c 显示CPU使用率 -d 只显示磁盘使用率 -k 单位KB/s代替Block/s -m 单位MB/s代替Block/s -N 显示所有映射设备名字 -t 打印报告时间 -x 显示扩展统计信息 示例: 显示CPU使用率: #iostat-c13 显示I/O磁盘统计信息: #iostat-d-x-k13#间隔1秒,输出3次 11.50 sar 功能:查看系统资源综合方面利用率 常用选项: -u, CPU -r, memory -b, disk -n DEV, NIC traffic -q, systemload -b, TPS(Transaction Per Second,每秒事务处理量) -o, output to file 示例: #sar-u23#每两秒执行一次,采集三次 #sar-u23-ocpu.out #sar-fcpu.out#读取文件 11.51 dstat 功能:查看系统资源综合方面利用率 常用选项: -c, CPU -d, disk -m, memory(实际内存使用) -n, net -s, swap -l, systemload --tcp, tcp stats --udp, udp stats plugins: --list 查看支持的插件 --disk-util --disk-tps --top-bio 查看最高block I/O进程 --top-bio-adv 查看最高block I/O进程,包括pid、r、w --top-io --top-io-adv --top-cpu 查看最高使用CPU进程 --top-cpu-adv 查看最高CPU进程 --top-mem 查看最高使用内存进程 示例: 查看CPU利用率: #dstat–c 查看TCP连接状态: #dstat--tcp 11.52 ip 功能:查看/操作路由表,设备,路由策略和隧道 格式:ip [ OPTIONS] OBJECT { COMMAND | help } 常用选项: -b, -batch<FILENAME> 从文件或标准输入读取命令并调用他们,第一次失败将终止 -force 批量模式有错误不终止,如果有错误则状态返回非0 -s, -statistics 输出更多的统计信息 -l, -loops<COUNT> 指定最大的循环数 操作对象(OBEJECT): address 网络设备地址 12tp 以太网IP隧道 link 配置网络设备 maddress 多播地址 monitor 动态监控网络连接 mroute 多播路由缓存条目 mrule 角色在多播路由策略数据库 neighbour 管理ARP或NDISC缓存条目 netns 管理网络命名空间 ntable 管理neighbour缓存操作 route 路由表 rule 角色在路由策略数据库 tpc_metrics/tcpmetrics管理TCP指标 tunnel IP隧道 tuntap 管理TUN/TAP设备 xfrm 管理IPSec策略 可通过ip OBEJECT help再查看对象的操作方法。 示例: 查看网络设备地址: #ipaddr 查看网卡统计信息: #ip-slink 查看单个网卡统计信息: #ip-slinklseth0 查看ARP缓存表: #ipneighbour 查看路由表: #iproute 查看路由策略: #iprule 网卡设置/删除IP: #ipaddradd/del192.168.1.201/24deveth0 添加/删除默认路由: #iprouteadd/deldefaultvia192.168.1.1 开启/关闭网卡: #iplinksetdeveth0up/down 设置最大传输单元: #iplinksetdeveth0mtu1500 设置MAC地址: #iplinksetdeveth0address00:0c:29:52:73:8e 11.53 nc 功能:TCP和UDP连接和监听 常用选项: -i interval 指定间隔时间发送和接受行文本 -l 监听模式,管理传入的连接 -n 不解析域名 -p 指定本地源端口 -r 指定本地和远程主机端口 -s 指定本地源IP地址 -u 使用udp协议,默认是tcp -v 执行过程输出 -w timeout 连接超时时间 -x proxy_address[:port] 请求连接主机使用代理地址和端口 -z 指定扫描监听端口,不发送任何数据 示例: 端口扫描: #nc-z192.168.1.101-65535 TCP协议连接到目标端口: #nc-p31337-w5192.168.1.1022 UDP协议连接到目的端口: #nc-u192.168.1.1053 指定本地IP连接: #nc-s192.168.1.9192.168.1.1022 探测端口是否开启: #nc-z-w2192.168.1.1022 创建监听Unix域Socket: #nc-lU/var/tmp/ncsocket 通过HTTP代理连接主机: #nc-x10.2.3.4:8080-Xconnect10.0.0.1022 监听端口捕获输出到文件: #nc-l1234>filename.out 从文件读入到指定端口: #nchost.example.com1234<filename.in 收发信息: #nc-l1234 #nc127.0.0.11234 执行memcahced命令:printf"stats\n"|nc127.0.0.111211 发送邮件: #nc[-C]localhost25<<EOF HELOhost.example.com MAILFROM:<user@host.example.com> RCPTTO:<user2@host.example.com> DATA Bodyofemail. . QUIT EOF #echo-n"GET/HTTP/1.0\r\n\r\n"|nchost.example.com80 11.54 time 功能:执行脚本时间 常用选项: 示例: 查看执行ls所需的时间: #timels 11.55 ssh 功能: 常用选项: 示例: 11.56 iptables 常见几种类型防火墙? 包过滤防火墙:包过滤是IP层实现,包过滤根据数据包的源IP、目的IP、协议类型(TCP/UDP/ICMP)、源端口、目的端口等包头信息及数据包传输方向灯信息来判断是否允许数据包通过。 应用层防火墙:也称为应用层代理防火墙,基于应用层协议的信息流检测,可以拦截某应用程序的所有封包,提取包内容进行分析。有效防止SQL注入或者XSS(跨站脚本***)之类的恶意代码。 状态检测防火墙:结合包过滤和应用层防火墙优点,基于连接状态检测机制,将属于同一连接的所有包作为一个整体的数据流看待,构成连接状态表(通信信息,应用程序信息等),通过规则表与状态表共同配合,对表中的各个连接状态判断。 iptables是Linux下的配置防火墙的工具,用于配置Linux内核集成的IP信息包过滤系统,使增删改查信息包过滤表中的规则更加简单。 iptables分为四表五链,表是链的容器,链是规则的容器,规则指定动作。 四表: filter 用于包过滤 nat 网络地址转发 mangle 对特定数据包修改 raw 不做数据包链接跟踪 五链: INPUT 本机数据包入口 OUTPUT 本机数据包出口 FORWARD 经过本机转发的数据包 PREROUTING 防火墙之前,修改目的地址(DNAT) POSTROUTING 防火墙之后,修改源地址(SNAT) 表中的链: 表 链 filter INPUT、OUTPUT和FORWARD nat PREROUTING、POSTROUTING和OUTPUT mangle PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD raw PREROUTING和OUTPUT 命令格式:iptables [-t table] 命令 [chain] 匹配条件 动作 命令 描述 -A,append 追加一条规则 -I,insert 插入一条规则,默认链头,后跟编号,指定第几条 -D,delete 删除一条规则 -F,flush 清空规则 -L,list 列出规则 -P,policy 设置链缺省规则 -m,module 模块,比如state、multiport 匹配条件 描述 -i 入口网卡 -o 出口网卡 -s 源地址 -d 目的地址 -p 协议类型 --sport 源端口 --dport 目的端口 动作 描述 ACCEPT 允许数据包通过 DROP 丢弃数据包不做处理 REJECT 拒绝数据包,并返回报错信息 SNAT 一般用于nat表的POSTROUTING链,进行源地址转换 DNAT 一般用于nat表的PREROUTING链,进行目的地址转换 MASQUERADE 动态源地址转换,动态IP时使用 模块 描述 state 包状态,有四个:NEW、RELATED、ESTABLISHED和INVALID mac 源MAC地址 limit 包速率限制 multiport 多端口,以逗号分隔 iprange 端口范围,以逗号分隔 示例:常用的规则配置方法 iptables-F#清空表规则,默认filter表 iptables-tnat-F#清空nat表 iptables-AINPUT-ptcp--dport22-jACCEPT#允许TCP的22端口访问 iptables-IINPUT-pudp--dport53-jACCEPT#允许UDP的53端口访问,插入在第一条 iptables-AINPUT-ptcp--dport22:25-jACCEPT#允许端口范围访问 iptables-DINPUT-ptcp--dport22:25-jACCEPT#删除这条规则 #允许多个TCP端口访问 iptables-AINPUT-ptcp-mmultiport--dports22,80,8080-jACCEPT iptables-AINPUT-s192.168.1.0/24-jACCEPT#允许192.168.1.0段IP访问 iptables-AINPUT-s192.168.1.10-jDROP#对1.10数据包丢弃 iptables-AINPUT-ieth0-picmp-jDROP#eth0网卡ICMP数据包丢弃,也就是禁ping #允许来自lo接口,如果没有这条规则,将不能通过127.0.0.1访问本地服务 iptables-AINPUT-ilo-jACCEPT #限制并发连接数,超过30个拒绝 iptables-IINPUT-ptcp--syn--dport80-mconnlimit--connlimit-above30-jREJECT #限制每个IP每秒并发连接数最大3个 iptables-IINPUT-ptcp--syn-mlimit--limit1/s--limit-burst3-jACCEPT iptables-AFORWARD-ptcp--syn-mlimit--limit1/s-jACCEPT #iptables服务器作为网关时,内网访问公网 iptables–tnat-APOSTROUTING-s[内网IP或网段]-jSNAT--to[公网IP] #访问iptables公网IP端口,转发到内网服务器端口 iptables–tnat-APREROUTING-d[对外IP]-ptcp--dport[对外端口]-jDNAT--to[内网IP:内网端口] #本地80端口转发到本地8080端口 iptables-tnat-APREROUTING-ptcp--dport80-jREDIRECT--to-ports8080 #允许已建立及该链接相关联的数据包通过 iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT #ASDL拨号上网 iptables-tnat-APOSTROUTING-s192.168.1.0/24-opppo-jMASQUERADE iptables-PINPUTDROP#设置INPUT链缺省操作丢弃所有数据包,只要不符合规则的数据包都丢弃。注意要在最后设置,以免把自己关在外面!

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

Linux常用命令(第二版) --Shell应用技巧

Shell应用技巧 小技巧: 1、命令补全功能: <Tab>键 2、清屏: Ctrl+l 3、删除光标前所有内容: Ctrl+u 4、命令历史记录: history 这时: !history所列出的命令标号,就可以执行那条命令。 如: !188 而且: 按方向键↑和↓可查找以前执行过的命令。 重要技巧: 1、命令别名: 作用: 可以使操作更加容易,命令能够更加容易记忆。 alias: 显示系统已经定义了的别名。 定义别名: aliascopy=cp aliasdrm=”rm-rf” #定义别名组合,必须用“”引起来 删除别名: unaliascopy 附-很多时候,UNIX系统中系统并没有作这些别名的设置! 2、输入输出重定向: 0(STDIN) -标准输入,键盘; 1(STDOUT) -标准输出,显示器; 2(STDERR) -标准错误输出,显示器。 >或>>输出重定向 ls-l/tmp>test.txt //文件原来内容清空 ls-l/tmp>>test.txt //追加 <输入重定向 wall<test.txt //输入重定向 2>错误输出重定向 cp-R/usr/backup/usr.bak2>/bak.error 3、管道:将一个命令的输出传送给另一个命令,作为另一个命令的输入。 ls-l/etc|more ls-l/etc|grepinit #grepinit/etc/inittab ls-l/etc|grepinit|wc-l #wc命令是个计数器 4、命令连接符 1); #用;间隔的各命令按顺序依次执行 pwd;ls;date 2)&& command1&&command2 成功 执行 失败 不执行 #前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,它后面的命令才被执行。 E.g. writeMary</home/hadoop/love.txt&&rm-f/home/hadoop/love.txt ls&&pwd lskkk&&pwd 3)|| command1||command2 执行 不执行 不执行 执行 #前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,它后面的命令才被执行。 E.g. writeMary</home/hadoop/love.txt||mailMary</home/hadoop/love.txt ls||pwd lskkk||pwd 详细内容请参考另一系列博客-《四天精通Shell编程》系列: http://blog.csdn.net/zjf280441589/article/details/17455515 http://blog.csdn.net/zjf280441589/article/details/17467069 http://blog.csdn.net/zjf280441589/article/details/17487351 http://blog.csdn.net/zjf280441589/article/details/17503985 5、命令替换符 命令1`命令2` #将命令2的输出作为命令1的参数,简化操作。 e.g. ll`whichtouch` #产看touch命令的详细信息 附-cat/etc/shells #列出当前系统所支持的所有shell 而Linux默认的就是bash /bin/bash 比较老一点的UNIX bin/sh 附-wc wc-lmsg #查看msg文件内容有多少行

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

【Kubernetes】一些自己的常用命令, 不定时更新

自动补全: yum -y install bash-completion echo "source <(kubectl completion bash)" >> ~/.bashrc 添加镜像仓库认证 kubectl -n $NAMESPACE create secret docker-registry $KEYNAME \ --docker-server=$DOCKER_REGISTRY_SERVER \ --docker-username=$DOCKER_USER \ --docker-password=$DOCKER_PASSWORD \ --docker-email=$DOCKER_EMAIL echo "------------ create k8s-user secret ----------------" kubectl get secret $KEYNAME --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d echo "------------ add k8s-user serviceaccount ----------------" kubectl -n $NAMESPACE patch serviceaccount default -p '{"imagePullSecrets": [{"name": "k8s-user"}]}' 获取集群内部service&pod网段 ps -ef | grep -Po 'cluster-cidr\S+\s|service-cluster-ip-range\S+\s' 获取集群/组件状态 kubectl get componentstatus kubectl cluster-info 获取kubelet状态 systemctl status kubelet journalctl -xefu kubelet 更新istio流量拦截网段 helm template install/kubernetes/helm/istio --set global.proxy.includeIPRanges="10.1.0.0/16\,10.2.0.0/20" -x templates/sidecar-injector-configmap.yaml | kubectl apply -f - istio 开启自动注入 kubectl label namespace default istio-injection=enabled istio替换现有deploy, 注入sidercar istioctl kube-inject -f <(kubectl get deploy xxx -o yaml) | kubectl replace -f - 重启pod(无法直接重启, 删除或者replace pod可以达到重启效果, 或者进入容器/cashbus/tomcat/restart.sh) kubectl delete po -l app=sc-tag kubectl get pod logtail-ds-698m5 -n kube-system -o yaml | kubectl replace --force -f - 转发pod流量到kubectl运行节点上 # kiali kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}') 20001:20001 # grafana kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 & # prometheus kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 & # service Graph kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 & # jaeger-collector kubectl -n istio-system port-forward $(kubectl -n istio-system get po -l app=tracing-on-sls,component=collector -o jsonpath='{.items[0].metadata.name}') 9411:9411& 停止应用所有pod 没法直接停止 可以 scale对应deployment为0达到效果 kubectl scale xx sc-contract-sc-xxx --replicas=0 命令行处理yaml cat <<EOF | kubectl create -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: simple annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - http: paths: - path: /svc backend: serviceName: http-svc servicePort: 80 EOF 标记master可调度(不建议) kubectl taint node -l node-role.kubernetes.io/master node-role.kubernetes.io/master=:PreferNoSchedule --overwrite kubectl taint node -l node-role.kubernetes.io/master node-role.kubernetes.io/master- 标记节点不可调度 kubectl cordon node helm手动安装 ######### helm install 需要支持ipv6 /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 $ sysctl -p /etc/sysconfig/network NETWORKING_IPV6=yes $ service network restart curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash helm tiller自行升级 官方源被墙 国内连不上 这里用阿里镜像源 export TILLER_TAG=v2.9.1 kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=registry-vpc.cn-beijing.aliyuncs.com/google_containers/tiller:$TILLER_TAG helm 自动补全 source <(helm completion bash) 获取pod异常终止前的状态 kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}' xxxxxxxx 删除node 转移节点正在运行的 resource kubectl get no -o wide | awk '/NotReady/{print $1}' | xargs -i -t kubectl drain {} --ignore-daemonsets 删除 kubectl get no -o wide | awk '/NotReady/{print $1}' | xargs -i -t kubectl delete node {} 逐出节点上所有pod kubectl drain cn-beijing.i-xxxxx --delete-local-data --ignore-daemonsets 批量打ingress controller标签 用作自动调度 kubectl get node | awk '!/master/{print $1}' |xargs -i -t kubectl label node {} node-role.kubernetes.io/ingress=true --overwrite 各种patch patch configmap kubectl patch -n kube-system cm tcp-services --patch '{"data":{"32218": "default/sc-xxx0debug:32219"}}' patch serice kubectl patch -n kube-system svc nginx-ingress-lb --patch '{"spec":{"ports":[{"name":"patch-test","port": 32222, "protocol":"TCP", "targetPort": 32222}]}}' patch nodeSelector kubectl patch deployment sc-demo-sc-demo -p '{"spec":{"template":{"spec":{"nodeSelector":{"env":"testing"}}}}}' patch readiness healthCheck jsonpatch http://jsonpatch.com/ patch healthCheck, JSON Patch, RFC 6902 kubectl patch deployment xxxx --type='json' -p='[ { "op": "replace", "path": "/spec/template/spec/containers/0/readinessProbe", "value": { "failureThreshold": 1, "initialDelaySeconds": 30, "periodSeconds": 3, "successThreshold": 3, "httpGet": { "path": "/rest/healthCheck", "port": "app-port" }, "timeoutSeconds": 1 } } ]' 获取所有运行镜像 go-template示例 kubectl get deployment -o go-template --template='{{range .items}}{{range .spec.template.spec.containers }}{{printf "%s\n" .image}}{{end}}{{end}}' kubectl get deployment -o go-template --template='{{range .items}}{{range .spec.template.spec.containers }}{{printf "%s\n" .image}}{{end}}{{end}}' | awk -F'[:/]' '{printf " [\042%s\042]=\042%s\042\n",$(NF-1),$NF}' 删除istio相关crd(customresourcedefinition) kubectl get crd | awk '/istio/{print $1}' | xargs -i kubectl delete crd {} 清空整个namespace(慎用) kubectl -n istio-system delete all --all 强制更新 helm "no deployed release"状态的release,感觉还是比较鸡肋. 至今没找到好的办法处理 "no deployed release" helm upgrade --force -i -f ack-istio-default.yaml ack-istio-default incubator/ack-istio

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

CentOS下vi/vim复制剪切粘贴以及常用命令小结

接触linux操作系统之后使用vi/vim编辑器用的就比较多,其实vi/vim编辑文件特别方便,但是一些常见的指令模式下的命令确很容易忘,特别是复制剪切粘贴经常忘,所以小结下以后查用起来比较方便。 1.复制剪切粘贴撤销 复制: 复制一行则:yy 复制三行则:3yy,即从当前光标+下两行。 复制当前光标所在的位置到行尾:y$ 复制当前光标所在的位置到行首:y^ 剪切: 剪切一行:dd 前切三行:3dd,即从当前行+下两行被剪切了。 剪切当前行光标所在的位置到行尾:d$ 剪切当前行光标所在的位置到行首:d^ 粘贴: 用v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴。 撤销与恢复: 'u': 撤销上一个编辑操作 'ctrl + r': 恢复,即回退前一个命令 'U': 行撤销,撤销所有在前一个编辑行上的操作 2.屏幕翻页 Ctrl+u: 向上翻半屏 Ctrl+f: 向上翻一屏 Ctrl+d: 向下翻半屏 Ctrl+b: 向下翻一屏 3.移动光标指令 移动光标普遍使用的是方向键,考虑兼容问题,vi定义太多的方向指令,下面只是一小小部分(常用的几个): space: 光标右移一个字符 Backspace: 光标左移一个字符 Enter: 光标下移一行 nG: 光标移至第n行首 n+: 光标下移n行 n-: 光标上移n行 n :光标移至第n行尾0:光标移至当前行首 : 光标移至当前行尾 4.插入删除指令 常用插入、删除指令如下: i:在当前光标前插入,光标后文本向后移 a:从当前光标后插入,光标后文本后移 I:在光标所在行首插入(第一个非空白字符前) A:从光标所在行末插入 o: 在光标所在行下面新增一行(并进入输入模式) O: 在光标所在行上方新增一行(并进入输入模式) x: 删除光标所在字符,等同于[Delete]功能键 X: 删除光标前字符,相当与[Backspace] dd: 删除光标所在的行 r: 修改光标所在字符 R: 替换当前字符及其后的字符,直到按 [ESC] s: 从当前光标位置处开始,以输入的文本替代指定数目的字符 S: 删除指定数目的行,并以所输入文本代替之 do: 删至行首 d$: 删至行尾 5.退出 退出输入模式,先按一下[ESC]键(有时要多按两下),然后执行: :w! :w ——保存当前文件 :wq —— 存盘退出(与指令 😡 功能相同) :q —— 直接退出,如已修改会提示是否保存 :q! ——不保存直接退出

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

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