有用的linux命令——chattr

一般Linux的文件系统都是ext2/ext3。ext文件系统的文件,目录会有一些文件系统所特有的属性。我们之前所熟知的rwx等属性是linux操作系统赋予文件的属性,和登录用户相关。而本文所说的这个特性是文件系统相关的,它不受登录用户的限制。
ext3所包括的文件属性很多,主要涉及到文件在文件系统上的存储、是否启用日志、是否更新atime、是否采用压缩等多种高级特性,其中我们常见的一种属性就是防删除。
使用lsattr命令可以查看文件的文件系统属性,
lsattr

横杠-表示未设置属性,默认情况下新建的文件是没有任何属性的,可以用chattr命令来进行修改。

阅读详细 »

Ubuntu 14.04 安装搜狗输入法

linux下终于可以使用搜狗了,更新日志:http://pinyin.sogou.com/linux/changelog.php

1.卸载ibus输入法: sudo apt-get remove ibus

2.添加安装源

sudo add-apt-repository ppa:fcitx-team/nightly

3.更新源  sudo apt-get update

4.安装fcitx和fcitx-sunpinyin输入法(可以不安装)

sudo apt-get install fcitx fcitx-config-gtk fcitx-sunpinyin(拼音)

sudo apt-get install fcitx fcitx-config-gtk fcitx-sogoupinyin(搜狗)

5.安装码表

sudo apt-get install fcitx-table-all

6.接下来输入:im-switch -s fcitx -z default 把fcitx设置为默认输入法或者通过:系统—系统管理—语言支持,打开语言和文本设置项,在语言分页中的键盘输入方 式系统中选择fcitx.

而且此时使用可能快捷键不能正常切换,可能原因是与原来系统ibus设置快捷键冲突,修改快捷键不一样就可以了。

 

linux实用命令详解(五)—crontab

一 crontab介绍

crontab 是linux 用来定期执行程序的命令,默认系统会启动此任务调度命令。crontab命令每分钟会定期检查是否有要执行的工作,若有便会自动执行。

二 命令格式

crontab -l|-r|-e|-i [username]

-l 显示用户的crontab文件的内容

-i 删除crontab文件时给出提示

-r 从crontab目录中删除用户的crontab文件

-e 编辑用户的crontab文件

三 应用实例

基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

阅读详细 »

程序员装逼神器-TPP

tpp是一款基于文本界面的展示工具,也就是文字版的ppt。官网:http://www.ngolde.de/tpp.html,先上效果图:

tpp

原码见:https://github.com/chinageek/fun/tree/master/tpp

安装方法:

sudo apt-get install tpp

使用方式:

usage: tpp [-t <type> -o <file>] <file>
 -t <type> set filetype <type> as output format
 -o <file> write output to file <file>
 -s <seconds> wait <seconds> seconds between slides (with -t autoplay)
 --version print the version
 --help print this help

目前可用的type有ncurses(默认),autoplay自动播放,latex生成tex文件,txt生成文本文件。如果使用autoplay,还可以加-s选项决定每一张的播放时间,单位是秒
快捷键:

使用鼠标滚轮或者方向键控制前后,还可以用空格播放下一张,按b可以回到前一张。按s可以回到第一张,e跳到最后一张,l刷新当前页,c调出命令行,j跳到指定页面,所有字母命令不区分大小写,q命令结束播放,退出tpp。
语法说明:
-author 作者
-title 标题
-date today(可以自动插入当天日期),还可以加各种格式,例如%a表示星期,%b表示月份,%e表示日期,%H表示小时,%M表示分钟,%S表示秒,%Z表示时区,%Y表示年份。
-heading 页面标题
-exec bash命令
-newpage 开始新页面
文字下面加—暂停(一步一步显示)
-beginoutput 开始文本框(可以用来显示代码)
-endoutput 结束文本框
-beginshelloutput 开始shell文本框(模拟shell输入输出)
-endshelloutput 结束shell文本框
-boldon 下面开始文本加粗
-boldoff 结束文本加粗
-revon 下面开始知道revoff文本反白
-revoff 结束文本反白
-ulon 开始文本下划线
-uloff 结束文本下划线
-huge 显示大的艺术字
-sethugefont 设置艺术字字体, standard标准字体,block砖块字体
-beginslideleft 下一行开始文本从左边进入,对应的还有right(从右边进入),top(从顶部进入),bottom(从底部进入)
-endslideleft 结束
-horline 在下一行画一条水平线
-header 页眉
-footer 页脚
-center 文本居中
-right 右对齐(默认左对齐)
-bgcolor 背景色(例如red,blue,yellow)
-color 设置文本颜色(直到出现新的color设置)
-fontcolor 设置文本颜色(全局)

linux实用命令详解(四)—netcat

netcat 或者 nc 是 Linux 下的一个用于调试和检查网络工具包的工具。可用于创建 TCP/IP 连接。netcat被称为网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

应用举例:

1. 侦听指定端口

server:

$ nc -l 99991
 然后你可以使用客户端模式来连接到 9999 端口:
client: 1$ nc localhost 999

现在如果你输入一些文本,它将被发送到服务器端

2. 使用 netcat 来传输文件

假设我们本地有一个 local文件,内容为:hello ranger

而在服务器端有一个空文件名为 server

然后我们使用如下命令来启用服务器端:

server:

$ nc -l 9999 > server

client:

cat local | nc localhost 9999

然后你停止服务器端,你可以查看 server 的内容就是刚才客户端传过来的 local 文件的内容:

hello ranger
3. netcat 支持超时控制

多数情况我们不希望连接一直保持,那么我们可以使用 -w 参数来指定连接的空闲超时时间,该参数紧接一个数值,代表秒数,如果连接超过指定时间则连接会被终止。

server:

nc -l 9999

client:

$ nc -w 10 localhost 9999

该连接将在 10 秒后中断。

注意: 不要在服务器端同时使用 -w 和 -l 参数,因为 -w 参数将在服务器端无效果。

linux实用命令详解(三)—ngrep

使用httpclient发送http请求时有时会遇到一些奇怪的问题,线上程序又不能打断点调试,只能通过抓包来分析请求数据,ngrep和tcpdump都可以抓取http请求,相比tcpdump ngrep更轻量些,使用起来也比较简单。

ngrep 是grep的网络版,他力求更多的grep特征,用于搜寻指定的数据包。由于安装ngrep需用到libpcap库, 所以支持大量的
操作系统和网络协议,能识别TCP、UDP和ICMP包。

应用举例:

捕获所有post请求(加个-W byline 参数后,将解析包中的换行符):

ranger@ranger:~$ sudo ngrep -q -W byline "(POST).*"
interface: eth0 (192.168.122.0/255.255.254.0)
match: (POST).*
T 192.168.122.74:46048 -> 140.207.228.58:80 [A]
POST /Hotel/OTA_HotelSearch.asmx?wsdl HTTP/1.1.
Content-Type: text/xml; charset=UTF-8.
SOAPAction: http://ctrip.com/Request.
Accept-Encoding: gzip, deflate.
Content-Length: 1330.
Accept: */*.
Accept-Language: zh-cn.
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0).
UA-CPU: x86.
Accept-Encoding: gzip, deflate.
Connection: close.
Host: openapi.ctrip.com.
.
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Request xmlns="http://ctrip.com/"> <requestXML><Request>
<Header AllianceID="***" SID="***" TimeStamp="1393554304685" RequestType="OTA_HotelSearch" Signature="B166CDF5422A6DA5BA81A08036E938E7"/>
<HotelRequest>
 <RequestBody xmlns:ns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <ns:OTA_HotelSearchRQ Version="1.0" PrimaryLangID="zh"
 xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelSearchRQ.xsd"

参数说明:

-q is be quiet (don’t print packet reception hash marks)静默模式,如果没有此开关,未匹配的数据包都以“#”显示

-e is show empty packets 显示空数据包
-i is ignore case 忽略大小写
-v is invert match 反转匹配
-R is don’t do privilege revocation logic
-x is print in alternate hexdump format 以16进制格式显示
-X is interpret match expression as hexadecimal 以16进制格式匹配
-w is word-regex (expression must match as a word) 整字匹配
-p is don’t go into promiscuous mode 不使用混杂模式
-l is make stdout line buffered
-D is replay pcap_dumps with their recorded time intervals
-t is print timestamp every time a packet is matched在每个匹配的包之前显示时间戳
-T is print delta timestamp every time a packet is matched显示上一个匹配的数据包之间的时间间隔
-M is don’t do multi-line match (do single-line match instead)仅进行单行匹配
-I is read packet stream from pcap format file pcap_dump 从文件中读取数据进行匹配
-O is dump matched packets in pcap format to pcap_dump 将匹配的数据保存到文件
-n is look at only num packets 仅捕获指定数目的数据包进行查看
-A is dump num packets after a match匹配到数据包后Dump随后的指定数目的数据包
-s is set the bpf caplen
-S is set the limitlen on matched packets
-W is set the dump format (normal, byline, single, none) 设置显示格式byline将解析包中的换行符
-c is force the column width to the specified size 强制显示列的宽度
-P is set the non-printable display char to what is specified
-F is read the bpf filter from the specified file 使用文件中定义的bpf(Berkeley Packet Filter)
-N is show sub protocol number 显示由IANA定义的子协议号
-d is use specified device (index) instead of the pcap default 使用哪个网卡,可以用-L选项查询
-L is show the winpcap device list index 查询网卡接口

linux实用命令详解(二)—siege

web开发免不了性能测试,经常需要模拟高并发的场景,siege和apache ab都是不错的选择,siege可以从你选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多。siege看名字就很霸气,暴力群殴,哥喜欢。

Siege是Linux系统下的一个测试工具,完全使用C语言实现,可以对HTTP和FTP服务器进行负载和性能测试。设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

用法举例

1.模拟500个用户,重复50次请求

siege -c 500 -r 50 -f url.txt

说明:-c是并发量,-r是重复次数。url.txt就是一个文本文件,每行都是一个url,它会从里面随机访问的。

url.txt内容: http://baidu.com/

2.模拟500个用户连续请求10分钟

siege -c 500 -t10M -u http://baidu.com

表示对http://baidu.com/这个站点使用500个用户并发访问,持续10分钟进行测试,注意:”-t10M”之间没有空格

3.Siege来重现对一台服务器的日志记录

$ cut -d ' ' -f7 /logs/access.log > urls.txt
$ siege -c 1 -b -f urls.txt

结果说明

** SIEGE 2.70
** Preparing 10 concurrent users for battle.
The server is now under siege.. .

Transactions: 200 hits //完成200次处理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 16.24 secs //总共使用16.24s
Data transferred: 2.03 MB //共数据传输 2.03 MB
Response time: 0.01 secs //响应时间,显示网络连接的速度
Transaction rate: 12.32 trans/sec //平均每秒完成 12.32次处理,也就是QPS
Throughput: 0.12 MB/sec //平均每秒传送数据
Concurrency: 0.13 //实际最高并发连接数
Successful transactions: 200 //成功处理次数
Failed transactions: 0 //失败处理次数
Longest transaction: 0.03 //请求响应最长时间
Shortest transaction: 0.00 //请求响应最短时间

参数详解

-C,或–config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
-v 运行时能看到详细的运行信息
-c n,或–concurrent=n 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
-i,–internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效
-d n,–delay=n hit每个url之间的延迟,在0-n之间
-r n,–reps=n 重复运行测试n次,不能与 -t同时存在
-t n,–time=n 持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
-l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
-R SIEGERC,–rc=SIEGERC 指定用特定的siege 配置文件来运行,默认的为$HOME/.siegerc
-f FILE, –file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt
-u URL,–url=URL 测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定

urls.txt文件:是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]

linux实用命令详解(一)—curl

开发web应用时经常需要接口调试,有很多现成的工具可以使用,但大部分都比较复杂,太笨重,个人感觉比较好用的就是postman和curl了,基本可以应付各种调试需求

curl是一个数据传输工具,支持HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP or FILE 协议。该命令不支持用户交互

curl www.javaranger.com

如果要把这个网页保存下来,可以使用-o参数,相当于wget命令

curl -o fileName  www.javaranger.com

curl www.javaranger.com >1.txt

显示头信息(-I只显示头信息)

curl -i www.javaranger.com

有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。

curl -L www.javaranger.com

-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息。

curl -v www.javaranger.com<br /><br />curl --trace www.javaranger.com

发送post信息(-H是添加请求头, -d是请求体)

curl -H "Content-Type:application/soap+xml; charset=UTF-8" -d@/tmp/feiren http://113.105.64.226/v1/NorthBoundAPIService.asmx<br />

添加User Agent

curl --user-agent "[User Agent]"  www.javaranger.com

添加cookie

curl --cookie "name=xxx" www.javaranger.com

查看接口相应时间

curl -o /dev/null -s -w "%{time_connect}:%{time_starttransfer}:%{time_total}\n" http://www.javaranger.com

第一个是从命令启动到链接上用的时间
冒号是分隔符(可以在自己的 -w 模板里头修改这个分隔符,比如可以用\t或者|,自己改改看)
第二个字段,是开始传输数据所用的时间
第三个字段,是完成传输所用的时间
这三个时间对于判断网络状况和系统性能是很有帮助的

再比较下面两个命令结果的不同:

$ export $SEP='|'<br />$ curl -o 1.txt -s -w "%{time_connect}$SEP%{time_starttransfer}$SEP%{time_total}\n" http://www.javaranger.com</p><p>$ curl -o 1.txt -s -w '%{time_connect}$SEP%{time_starttransfer}$SEP%{time_total}\n' http://www.javaranger.com</p><p>

结果:

0.12|3.23|3.35
0.12$SEP3.23$SEP3.35
” “(双引号)包围的字串里头会替换变量

‘ ‘单引号里面你的字符串不会被替换。

linux下的屏幕录像软件 Kazam

Linux下的屏幕录像软件有很多,Recordmydesktop、Recorditnow等。这些个软件个人感觉都不太好用。

Kazam还不错,既可以录制视频,也可以截屏,而且支持窗口、全屏、指定区域操作,非常方便,是一款功能强大的屏幕录制工具。

Kazam安装方法

Ubuntu用户安装PPA: (支持 Precise, Quantal, Raring)

sudo add-apt-repository ppa:kazam-team/stable-series

sudo apt-get update

sudo apt-get install kazam

ubuntu12.04中安装Adobe air

由于Adobe air已经放弃对Linux 的更新支持。air 的PPA也已经被移除。在Ubuntu 12.04的依赖环境中,还是能够安装Air的上一个版本的。

下载地址:http://airdownload.adobe.com/air/lin/download/2.6/adobeair.deb

sudo dpkg -i adobeair.deb

在Ubuntu 12.04测试成功。