kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

curl命令

http://blog.csdn.net/hqzxsc2006/article/details/50547684

-s 静默输出;没有-s的话就是下面的情况,这是在脚本等情况下不需要的信息。

监控首页各项时间指标:

1
2
3
4
5
6
7
curl -o /dev/null -s -w '%{time_connect} %{time_starttransfer} %{time_total}' http://www.miotour.com
0.244 1.044 2.672

时间指标解释 :
time_connect      建立到服务器的 TCP 连接所用的时间
time_starttransfer    在发出请求之后,Web 服务器返回数据的第一个字节所用的时间
time_total            完成请求所用的时间

在发出请求之后,Web 服务器处理请求并开始发回数据所用的时间是 (time_starttransfer)1.044 - (time_connect)0.244 = 0.8 秒

客户机从服务器下载数据所用的时间是 (time_total)2.672 - (time_starttransfer)1.044 = 1.682 秒

-x 指定访问IP与端口号

1
curl -x 61.135.169.105:80 http://www.baidu.com

-I 仅仅取文件的http头部

1
curl   -I  -x 192.168.1.1:80  http://www.miotour.com

用referer做的防盗链,就可以使用-e来设置

1
curl -e "http://www.qiecuo.org"    http:// www.miotour.com -v  -I

-H去构造你想要的http头部

1
curl -H "X-Forward-For:8.8.8.8" http://www.miotour.com  -v  -I

curl提交用户名和密码

1
2
curl http://name:passwd@www.miotour.com
curl -u name:passwd http://www.miotour.com

-b “cookie” 此参数用来构造一个携带cookie的请求

USER AGENT 关于浏览器发送的http请求信息. Curl允许用命令制定. 发送一些用于欺骗服务器或cgi的信息.

1
curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/

alias命令

功能说明: 设置指令的别名。

语 法: alias[别名]=[指令名称]

参 数: 若不加任何参数,则列出目前所有的别名设置。

举 例:

1
2
3
4
5
6
7
8
alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

说 明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。

如果你想给每一位用户都生效的别名,请把alias la=‘ls -al’ 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用.

tcp连接建立过程

一、server

1. 接收syn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tcp_v4_do_rcv {
	nsk = tcp_v4_hnd_req(sk, skb);

	nsk == sk


	tcp_rcv_state_process {
		icsk->icsk_af_ops->conn_request(sk, skb)
		tcp_v4_conn_request {
			__tcp_v4_send_synack {

				2. 发送syn/ack
			}
		}
	}
}
2. 接收ack
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
35
36
37
38
39
40
41
42
43
44
45
tcp_v4_do_rcv {
	nsk = tcp_v4_hnd_req(sk, skb) {
		req = inet_csk_search_req
		nsk = tcp_check_req {
			tcp_v4_syn_recv_sock {
				tcp_create_openreq_child {
					inet_csk_clone {

						newsk->sk_state = TCP_SYN_RECV;

					}
				}
			}
		}
	}

	nsk != sk {
		tcp_child_process {
			tcp_rcv_state_process {

				if (!tcp_validate_incoming(sk, skb, th, 0))
					return 0;

				/* step 5: check the ACK field */
				if (th->ack) {
					int acceptable = tcp_ack(sk, skb, FLAG_SLOWPATH) > 0;

					switch (sk->sk_state) {
						case TCP_SYN_RECV:

						tcp_set_state(sk, TCP_ESTABLISHED);

					}

					case TCP_ESTABLISHED:
						tcp_data_queue(sk, skb);
						queued = 1;
						break;
					}
				}

			}
		}
	}
}

二、client

1. 发送syn
1
2
3
4
5
6
7
8
9
10
tcp_v4_connect {

	tcp_set_state(sk, TCP_SYN_SENT);

	tcp_connect {
		__tcp_add_write_queue_tail
		tcp_transmit_skb
		inet_csk_reset_xmit_timer
	}
}
2. 接收syn/ack
1
2
3
4
5
6
7
8
9
10
11
12
tcp_v4_do_rcv {
	sk->sk_state == TCP_SYN_SENT

	tcp_rcv_state_process {
		queued = tcp_rcv_synsent_state_process(sk, skb, th, len) {

			tcp_set_state(sk, TCP_ESTABLISHED);

			tcp_send_ack(sk); // 发送ack
		}
	}
}