背景:
  在Linux上或windows上有时接口调用时需要有一个延时(模拟和真实访问一样),于是在windows下和linux下都需要要这样的延时函数。

Windows下延时两秒示例:



Linux下延时两秒示例:
usleep - sleep some number of microseconds 它微妙:


Linux平台延时之sleep、usleep、nanosleep、select比较:
sleep的精度是秒
usleep的精度是微妙,不精确
select的精度是微妙,精确
struct timeval delay;
delay.tv_sec = 0;
delay.tv_usec = 20 * 1000; // 20 ms
select(0, NULL, NULL, NULL, &delay);

nanosleep的精度是纳秒,不精确
unix、linux系统尽量不要使用usleep和sleep而应该使用nanosleep,使用nanosleep应注意判断返回值和错误代码,否则容易造成cpu占用率100%。
上面提到usleep和nanosleep不精确的实验,参见这里:http://www.lslnet.com/linux/dosc1/18/linux-188816.htm
摘自:http://www.cppblog.com/kongque/archive/2011/01/18/138765.aspx
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
其中第一列是打开的句柄数,第二列是进程ID。可以根据ID号来查看进程名:
ps aef|grep 24204

是当前生效还是全局,http://www.linuxde.net/2013/03/13045.html

分析这段代码可以知道先读/etc/security/limits.conf,如果/etc/security/limits.d/目录下还有配置文件的话,也读进来,一起分析。这就意味/etc/security/limits.d/里面的文件里面的配置会覆盖/etc/security/limits.conf的配置。


  一般在/etc/security/limits.conf 中修改最大打开文件数和进程数,如:
    * soft noproc 102400
    * hard noproc 102400
    * soft nofile 102400
    * hard nofile 102400
    但是在centos 6.3下,方法不一样了
    首先在/etc/security/limits.conf中修改最大文件数和进程数
    *   soft   nofile   102400
    
    *   hard  nofile   102400
  
    然后在/etc/security/limits.d/90-nproc.conf中修改最大文件数和进程数
    *   soft   nproc   102400
    *   hard  nproc   102400
  

阅读全文
为了vim更好的支持python写代码,修改tab默认4个空格有两种设置方法:

1. vim /etc/vimrc
set ts=4
set sw=4

举个例子,在多人一起开发项目时,为了使代码风格尽量保持一致,一般不允许在代码使用TAB符,而以4个空格代之。我们可以编辑一个文件,包含下面的内容:
set shiftwidth=4
set expandtab

然后把下面的命令加入到.vimrc中:
autocmd FileType c,cpp set shiftwidth=4 | set expandtab

就可以只在编辑c和cpp文件时实行这种设置了

http://blog.sina.com.cn/s/blog_6f3d37ff0101aat6.html
===========================================
vim显示空格,及tab字符 vim 多行注释(转)
1、显示 TAB 键

文件中有 TAB 键的时候,你是看不见的。要把它显示出来:

:set list

现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字符在哪里。
这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终端,或者使用 GUI 模式,Vim 可以用高亮显示空格和TAB。
使用 ‘listchars’ 选项:

:set listchars=tab:>-,trail:-

现在,TAB会被显示成 ">—" 而行尾多余的空白字符显示成 "-"。看起来好多了,是吧?

————————————————————————————

2、让vim显示行尾的空格

fedora 9系统下
在/etc/vimrc文件添加如下两行
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/

实践证明在centos下的/root/.vimrc里加上也OK,行尾空格变红。-add:2014-10-09

————————————————————————————

http://www.cnblogs.com/chenwenbiao/archive/2011/10/26/2225467.html
背景:前两天对外包的PHP返回慢作了一个xdebug的统计,后来尽管加上了那个rm的crontab,但是后来发现日志依旧在,还是运维发现,上了30G了。
后来查了下crontab的日志文件,发现:


配置:
一:Crontab定时删除,1小时删除一次:


三分钟一清,试过一小时一清,都3G左右大小了:


二:应该是生成的xdebug日志文件太多了造成的(1小时一次有点长了),这个文件删除不了:

出现:Argument list too long。

三:网上找了下,摘录如下:
cache目录,谁知道输入
rm *
的命令后,大概几秒后屏幕就跳出
/bin/rm: argument list too long
条件反射动作,上百度和google查找,找到解决方法和原因,原因是一个文件夹下文件太多,使用rm删除就会出现/bin/rm: Argument list too long错误.
解决方法:http://hintcnuie.javaeye.com/blog/431354
按网址上面写的输入
ls | xargs -n 10 rm -fr ls
就解决了,这句解释为:输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除,这样就不会超过命令行的长度了.
另外找到用脚本的方法:
for loop in `ls 目录路径`
do
rm -f $loop
done
注意:$loop是删除的文件名,确保路径是否正确。
但这个还没有实验过。
来自:http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0614/1538.html
第二种方法:
当某个文件夹下的文件太多,不能使用rm删除
# rm * -rf
-bash: /bin/rm: Argument list too long
网上找了个方法,贴上来给大家分享
find PATH -name *.mp3 -exec rm {} \;
如,要删除 /tmp/123/abc 目录下的
find  /tmp/123/abc ‘*’ -exec rm {} \;
如当前目录为 /tmp/123 ,想删除 /tmp/123/abc 下的
find  ./abc  -name ‘*’ -exec rm {} \;
  大家可以自己试试,不过要小心处理,别删错重要文件了!!!
来自:http://linux.chinaitlab.com/administer/805334.html
https://github.com/tsaleh/vim-align
能满足各种方式的对齐。真心不错呢
背景:
外包把代码放到我们的测试机上,有可能出现这样那样的调用问题,尽管前面说过要注意host配置的问题并记录,但是往往出现在上到测试机时,忘记了,于是用下tcpdump来抓包,可以实现有效的对其跨系统的接口进行跟踪,并找到问题之所在。
零:使用,方法一:
vi /root/.bashrc  

生效:
source /root/.bashrc
方法二(优点这个导出只是传的参数以&符号分割,而返回则全是body里的内容,相当的适合用作接口调试参数,用curl来进行组装访问。):

参考其优点细说在:http://jackxiang.com/post/7344/
特别说明:
tcpdump命令默认捕获包总长度是96字节,如图所示,我们只要在抓包命令里加一个参数 -s 0 即可捕获完整数据的数据包。
/usr/local/sbin/tcpdump -i any -p -s 0 -w /tmp/capture.pcap

一:安装
官网:http://www.tcpdump.org
下载两个包,注意配套,我的是:
http://www.tcpdump.org/release/libpcap-1.4.0.tar.gz
http://www.tcpdump.org/release/tcpdump-4.3.0.tar.gz
Add Time:2014-01-27,上面旧版本没问题,新的有问题:
wget http://www.tcpdump.org/release/tcpdump-4.5.1.tar.gz
wget http://www.tcpdump.org/release/libpcap-1.5.3.tar.gz
1 下载了libpcap-1.5.2.tar.gz。
2 tar -vxf libpcap-1.5.2.tar.gz
3 ./configure
4 make 发生错误。
1)安装:libpcap
cd /data/codesdev/libpcap/libpcap-1.6.1
./configure&&make && make install
理论上一次能过,但是往往会出现新的问题,如下:
[root@master libpcap-1.5.2]# make
gcc -fpic -I.  -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include   -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-dbus.c
./pcap-dbus.c: In function ‘dbus_write’:
./pcap-dbus.c:111: 错误:‘DBUS_ERROR_INIT’ 未声明 (在此函数内第一次使用)
./pcap-dbus.c:111: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
./pcap-dbus.c:111: 错误:所在的函数内只报告一次。)
./pcap-dbus.c: In function ‘dbus_activate’:
./pcap-dbus.c:165: 错误:‘DBUS_ERROR_INIT’ 未声明 (在此函数内第一次使用)
make: *** [pcap-dbus.o] 错误 1
按装dbus:
http://www.freedesktop.org/wiki/Software/dbus/
问题答案未实践来自:http://bbs.csdn.net/topics/390693013
######################我的情况如下######################
cc -fpic -I.  -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include   -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-linux.c
gcc -fpic -I.  -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include   -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-usb-linux.c
gcc -fpic -I.  -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include   -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-dbus.c
./pcap-dbus.c: In function ‘dbus_write’:
./pcap-dbus.c:111: error: ‘DBUS_ERROR_INIT’ undeclared (first use in this function)
./pcap-dbus.c:111: error: (Each undeclared identifier is reported only once
./pcap-dbus.c:111: error: for each function it appears in.)
./pcap-dbus.c: In function ‘dbus_activate’:
./pcap-dbus.c:165: error: ‘DBUS_ERROR_INIT’ undeclared (first use in this function)
make: *** [pcap-dbus.o] Error 1
#########################################################################
http://dbus.freedesktop.org/releases/dbus/

2)安装tcpdump:
cd /data/codesdev/libpcap/tcpdump-4.6.1
./configure&&make && make install

在centos6.4上安装后如下:
tcpdump --version
tcpdump version 4.6.1
libpcap version 1.6.1
OpenSSL 1.0.1e-fips 11 Feb 2013

二:通过tcpdump抓取HTTP包的方法,实践Ok:
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 为"GET"前两个字母"GE"
0x4854 为"HTTP"前两个字母"HT"
来自:http://zhumeng8337797.blog.163.com/blog/static/100768914201291110503529/
经过实践是可以的,特别是对接口的调试这一块很是有用,特记录如下:

解释:
0x4745 为"GET"前两个字母"GE"
0x4854 为"HTTP"前两个字母"HT"
实践如下:
[root@localhost ~]# tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854  -w /tmp/capture.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
8 packets captured
8 packets received by filter
0 packets dropped by kernel
[root@localhost ~]# sz /tmp/capture.pcap
[/codes]


三:通过网卡eth1来监听端口80发出去的host包到192.168.109.8的报文:
TcpDump位置: /usr/local/sbin/tcpdump
  
(0)最常用的:

(1)捕获队列的Http请求,不知道是哪个网卡于是得:-i any,根据端口和IP进行捕获:
curl "http://198.168.109.*:1218?charset=utf8&name=playRecord&opt=get",也就是目标是:198.168.109.*
生成如下捕获的tcpdump命令,经测试捕获是Ok的且可以用wireshark打开并查看到http的包:

如监控队列:

(2)加上源地址IP进行捕获:

所有包都截获后sz下来,并用Windows下的wireshark界面进行过滤查看http的包:


实践完全Ok,用wireshark能看到,并能导出:

wireshark界面使用备案Url:http://www.jackxiang.com/post/6262/

四:抓取发往某个指定IP的http get包数据指定文件进行输出package,这个也是下载到Windows下用wireshark界面过滤查看,实践用wireshark能看到:


实践如下:
[root@localhost ~]# tcpdump -XvvennSs 0 -i eth0 port 80 and dst host "192.168.109.8" and tcp[20:2]=0x4745 or tcp[20:2]=0x4854  -w /tmp/capture.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
Got 4

实践用wireshark打开能看到这些ip的http,实践Ok。

五:如何添加编译好的Tcpdump到到环境变量PATH中的方法:
http://www.jackxiang.com/post/1792/

阅读全文
MEMWATCH 由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具。只要在代码中添加一个头文件并在 gcc 语句中定义了 MEMWATCH 之后,您就可以跟踪程序中的内存泄漏和错误了。MEMWATCH 支持 ANSI C,它提供结果日志记录,能检测双重释放(double-free)、错误释放(erroneous free)、没有释放的内存(unfreed memory)、溢出和下溢等等。

使用方法:http://hi.baidu.com/nullzone/item/ff7e60fdeae5c0cc521c262d
更多实践:http://hi.baidu.com/gz_gzhao/item/017262f23a5c7008c7dc4563

像Node这样的脚本型也有内存的泄漏问题:
http://www.oschina.net/translate/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season
进入BIOS设置页面之后,可以找到一个叫“Hardware Monitor”或“PC Health”的选项(如笔者的机器是“Power > Hardware Monitor”。
在BIOS看CPU温度、转速和电压

  点PC Health Status

  CPU Temperature是CPU的温度

  CPU Fan是CPU风扇转速

  System Fan是机箱风扇转速


1、开机时按DEL进入BIOS设置(显示器上有提示进入办法,但多数是按DEL);
2、选择CPU或硬件信息栏(不同型号BIOS显示的不一样,可以一个个都选一遍)。
3、当能看到“CPU temprature”即为CPU当然温度,有些还能看到CPU风扇、系统风扇等的转速。
背景:
     如何更改linux终端显示颜色?深蓝色的目录背景是黑色,很不爽。
有兄弟有现成的调色请稍给兄弟,如:
PS1='[\[\e[32;40m\]\u@\h \w \t]$ '
类似的,目录Ok的,有现成的兄弟,给个出来。
我在群里问很多朋友,都说我这个目录的颜色有点奇怪,他们的蓝色在黑色下面能看得很清楚,也有兄弟建议说修改SecureCRT里的会话选项-外观-窗口和文本外观-当前颜色方案-选:traditional  点编辑:属性,前景/背景对背景颜色作调整。(但我还是喜欢黑色:超级黑,高级黑无限黑,终极黑,极品黑,宇宙黑),【后来我发现有可能是全局选项,本文后面有这个设置,我设置了下感觉不是很符合要求,目录不知道怎么设置,建议以实践为准。】,找了篇文章,感觉和我的想法差不多,先转了再说,试试还成功了。

我的实践成功步骤如下:
1)vi /etc/DIR_COLORS
DIR 01;34       # directory  
定位位置:
FILE 00         # normal file
DIR 01;34       # directory
LINK 01;36      # symbolic link
FIFO 40;33      # pipe

修改为:
DIR 01;36       # directory
2)使改动生效方法:
eval `dircolors /etc/DIR_COLORS`  //命令中的`符号为键盘~符号下面的那个

3)登录生效:如果再登录一次,发现它还是蓝色,不是浅蓝,于是得在登录时实现自动运行,如下。
vi ~/.bashrc


立即生效:source ~/.bashrc  
附录:
Linux登录终端时显示本机IP地址在前面,一样修改~/.bashrc,在虛尾添加:


linux终端中,目录的显示颜色是蓝色,看起来很是不方便。阅读全文
背景: 我也想升级一把,如果直接上6.4,以前6.3里面的vim配置,服务器等重新安,太麻烦了。
-------------------------------------------------------------------------------------------------------------------------------
最后,发现我的那个已经升级了,不用去修改grub,参考:http://tieba.baidu.com/p/2249307319
阅读全文
cat /proc/361/limits |grep files
Max open files            1024                 4096                 files    

一:SecureCRT 自动登录脚本:
常常会登录跳板机,里面的一些用户名和密码每次要重新输入,于是否,这就需要用一些捕获电脑输出(如输入用户名后会提示输入密码)的脚本,如果是自己先在跳板机会,执行脚本也成,这样用快捷键:alt+s R 参数后找到编辑好的脚本后,就可以自动登录到外网,还可以sudo成root等,但这个快捷命令有它的好处,如外面有多台,这时可以把多个自动登陆脚本放到不同文件,用上面的快捷键进行多次,但是只有一台时,用快捷键就有些麻烦,于是否,secureCRT有一个界面供我们使用,如下:
alt + B找到跳板机的那个IP,后在上面点右键,后连接下面有一个登陆动作->选 自动登录,选 上发送初始回车,下面有一行:
预期                                                    发送                                                            隐藏
[xiangdong@localhost ~]                       ssh -l xiangdong 192.168.109.8                       可勾选/不勾选也成
xiangdong@192.168.109.8's password:   xiangdong
[xiangdong@test ~]                             sudo -s
Password:                                           xiangdong
以上就实现了如果登录跳板机,上面的脚本就会执行并自动登陆到外网那一台机器并sudo成root权限。这样一登录跳板机就上了外面的配置机器,极其方便,如果你在全局设置里->常规->默认会话->使用自动会话,添加这个跳板机为打开SecureCRT就自动登录后,更灰常的方便喽,嘿嘿。

注意:在登录xiangdong后有可能会有shell提示:
-bash: ulimit: open files: cannot modify limit: Operation not permitted

-bash: ulimit: open files: cannot modify limit: Operation not permitted
[xiangdong@test ~]

是因为:
vi /etc/profile里有一行:ulimit -n 200000 ,这个句柄权限是不能让我这个权限设置的,于是否,提示权限不够。
这里因java需要大量的句柄,所以修改大了很多,在此点特别备注,后面要捕获的,还是那个:[xiangdong@test ~],即可。
特别注意:这个脚本如果没有捕获到会一直捕获,直到捕获到,或这个shell终端挂掉,否则,再想运行其它脚本时选脚本时会变灰,没法再选。

二、解决普通用户ssh连接linux服务器是总是提示:ulimit: open files: cannot modify limit: Operation not permitted
vi /etc/profile  //这个文件每个用户都会执行它
ulimit -S -c 0 > /dev/null 2>&1  //实践发现这个放在/etc/profile里不会报

//下面这样的如果不以root去执行肯定会报:cannot modify limit: Operation not permitted
ulimit -n 200000
ulimit -HSn 65536                                                                                                                                            
ulimit -HSn 65536
ulimit -n 200000

su 普通用户后:
[xiangdong@localhost ~]$ source /etc/profile
-bash: ulimit: open files: cannot modify limit: Operation not permitted
去掉后就OK了,当时有两个,发现去了还是有,一查才是跳板机上还有一样的问题,再次去掉就好了。
特别注意:有时会有定时脚本会往这个/etc/profile里写,如再次出现得查一下是从哪儿写过来的。
背景:近来发现一内网的IP如:192.168.1.8 这样的,居然可以通过配置另外一个Host进行外网的访问,刚开始以为是Nginx作的反向代理,如果要加一个虚拟机的域名还得再添加一次Nginx的反向代理,也就是添加一个Nginx的反向代理的配置,于是否,也就向运维了解了下情况,说是因F5作了四层代理给那台内网IP了(确定了下:四层),不是用的Nginx,只需要自己在92.168.1.8上加一个域名就可以了,这样一来,就不像Nginx代理那样需要设置一次nginx.conf,并nginx -s reload一下,扯多了,停:这里涉及到四层代理 ,于是就有下面的文章了,如下:

负载均衡设备也常被称为"四到七层交换机",那补充:
所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。
换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;
四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。
===================================================================================================================
所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。
比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
七层的负载均衡,就是在四层的基础上(不能空中楼阁,没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个WEB服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
么四层和七层两者到底区别在哪里?
负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。
1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子:
LVS,F5
2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。例子:
haproxy,MySQL Proxy
注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。
如果单纯要做HTTP的负载均衡,用haproxy好了。性能很强。
另外,F5和Alteon这样的硬件LB是LVS等软件赶不上。

来自摘抄,其更多内容查看:http://blog.csdn.net/21aspnet/article/details/6583762
__________案例是七层上某个URL访问有问题,而转成4层就好了,也就是说七层上可以对某位上URI作过滤,不让你访问就是____________
TCP(传输层)
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

IP地址(网络层)
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。
在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。


http://www.2cto.com/net/201310/252965.html
DD命令复制磁盘文件:
linux下使用dd命令复制磁盘
# dd if=/dev/sdc of=/dev/sdd bs=2M status=progress



服务器磁盘坏块检查:


badblocks -s -v /dev/sdb  
实践如下:

====================================================
linux dd指令用法中参数bs,count:
bs=600 count=1,备份第一块为600个字节的区域
若显示0+0,表示备份的空间不到一块指定大小的区域.(大小默认好象为512个字节)
bs=512 count=2,备份前2块总共为1024个字节的区域
屏幕上显示2+1,表示备份了2个块,1表示文件被整个备份了
屏幕上显示2+0,表示备份了2个块,0表示文件没被整个备份

cat /tmp/sdbbadblocks.log
774968152 774968153 774968154 774968155 774968900 774968901 774968902 774968903 774969648 774969649 774969650 774969651 774970396 774970397 774970398 774970399 774971144 774971145 774971146 774971147 774971892 774971893 774971894 774971895 774973516 774973517 774973518 774973519
写入:
badblocks -w -f /dev/sda 774968152 774968153 774968154 774968155 774968900 774968901 774968902 774968903 774969648 774969649 774969650 774969651 774970396 774970397 774970398 774970399 774971144 774971145 774971146 774971147 774971892 774971893 774971894 774971895 774973516 774973517 774973518 774973519

badblocks是Linux下常用的坏道修复工具。当你觉得硬盘上可能有坏道,或者是SMART数据显示有坏道的时候,都可以用badblocks来检查一下。

假设我们要检查的硬盘是/dev/sdb

$sudo badblocks -s -v -o sdbbadblocks.log /dev/sdb

这样就可以对硬盘进行只读扫描,自动获取硬盘块数目并扫描全部块,将扫描日志输出到屏幕同时记录在sdbbadblocks.log文件中。

由于扫描速度比较低,一次不一定能扫完,可以分多次进行。

sudo badblocks -s -v -o sdbbadblocks.log /dev/sdb END START

将END和START换成结束和开始的块的编号就可以了。

如果找到了坏道,可以进行写入扫描进行修复。写入扫描遇到坏道的时候会自动重映射。写入扫描会覆盖原有数据,所以请先备份。写入扫描速度很低,所以应该只扫描只读扫描时候发现错误的部分。

$sudo badblocks -w -s /dev/sdb END START

背景:Unix上传文件如果是分块断点上传,需要合并文件,如果是想做测试,需要分割文件。
我們得到了一个文件/root/sdb.bad :

16435904

sdb 有1个坏块

先用dd尽量备份坏块

6.dd if=/dev/sdb bs=4096 skip=16435904 of=/tmp/15435904.dat count=1

如果显示读取字节数是0就多试几次, 不行就可能丢失此块数据, 倒是不用担心,一般不会有太大问题.

用badblocks的写测试功能,对这些坏块进行重写(注意! -w写测试会覆盖数据):

7.badblocks -w -f /dev/sdb2 16435904 16435904

如果前面的操作有成功的备份/tmp/15435904.dat, 就把它写回:

8.dd if=/tmp/15435904.dat of=/dev/sdb seek=15435904 bs=4096 count=1

其实我们不需要等待badblocks扫描完成, 就可以进行修复。

badblocks是对块设备进行处理, 所以可以实现对挂载中的系统进行处理。

在修复前后,利用smartctl 对磁盘进行long测试

# smartctl -l selftest /dev/sdb
阅读全文
df -hT
-T, --print-type      print file system type
-h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si              likewise, but use powers of 1000 not 1024

一、看分区的格式:
root@192.168.137.159:~# df -hT
文件系统    类型      容量  已用  可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
              ext4     29G   23G  4.0G  86% /
tmpfs        tmpfs    250M     0  250M   0% /dev/shm
/dev/sda1     ext4    485M   38M  422M   9% /boot
.host:/     vmhgfs    100G   94G  5.6G  95% /mnt/hgfs
.host:/     vmhgfs    100G   94G  5.6G  95% /mnt/hgfs

二、加上-H显示用了多少:
[root@ZWCLC6X-7198 /]# df -hTH
文件系统    类型      容量  已用  可用 已用%% 挂载点
/dev/sda3     ext4      15G   3.2G    11G  24% /
tmpfs        tmpfs     3.1G      0   3.1G   0% /dev/shm
/dev/sda1     ext4     529M    45M   457M   9% /boot
/dev/sdb      ext4     101G   197M    96G   1% /data


三、ext4减少inode,mkfs.ext4格式化大容量磁盘:
减小inode总数,可以减小inode占用的磁盘空间,减少磁盘浪费。

例如:指定1m空间分配一个inode来格式化2TB磁盘
mkfs.ext4 -i 1048576 -n /dev/sdc  #1024*1024=1048576

mkfs.ext4有参数-i,可以指定:多大磁盘空间分配一个inode
man mkfs.ext4
-i bytes-per-inode
    Specify  the  bytes/inode ratio.
    mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.
    The larger the bytes-per-inode ratio, the fewer inodes will be created.
    This value generally shouldn’t be smaller than the blocksize  of  the filesystem,
    since  in  that case more inodes would be made than can ever be used.
    Be warned that it is not possible to expand
    the number of inodes on a filesystem after it is created,
    so be careful deciding the correct value for this parameter.


From:https://www.cnblogs.com/micmouse521/p/8064568.html
分页: 34/40 第一页 上页 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 下页 最后页 [ 显示模式: 摘要 | 列表 ]