`
saiyaren
  • 浏览: 225674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux 总结 原创-胡志广

 
阅读更多

1. ps 监视进程

ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0  10372   696 ?        Ss   Mar28   0:02 init [3]

root         2  0.0  0.0      0     0 ?        S<   Mar28   0:00 [migration/0]

root         3  0.0  0.0      0     0 ?        SN   Mar28   0:00 [ksoftirqd/0]

root         4  0.0  0.0      0     0 ?        S<   Mar28   0:00 [watchdog/0]

 

 

PID 进程ID

MEM 内存使用率

VSZ 占用虚拟内存大小

RSS 内存中页的数量(页是管理内存的单位,在PC上通常为4K

TTY 进程所在终端的ID

2. top

top  -p pid,pid,…

top后,会显示CPU详细内容

 

3. vi 到最后一行

shift+g

 

 

4. 通过端口查询pid

netstat -anp | grep 8001

 

tcp        0      0 :::8001                     :::*                        LISTEN     1359/java

1359 PID

 

 

5. Sar 进行性能监控

 

  1. 查看CPU使用情况 

 sar  2   5 
 // 每隔2秒,显示5次,CPU使用的情况

                                                        

                                       

  1. 查看内存使用情况 

 sar  -  2   5 
 // 每隔2秒,显示5次,内存使用的情况

                                                        

                                       

  1. 查看网络吞吐量 

 sar  - n DEV  2   5 
 // 每隔2秒,显示5次,网络吞吐量情况

 

保存为文本:

sar  1   10   >  data.txt
 
// 每隔1秒,写入10次,把CPU使用数据保存到data.txt文件中。 
 
sar  1   0   -  15 : 00 : 00   >  data.txt
 
// 每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为 hh:mm:ss格式) 
 
sar  1   0   -  -  15 : 00 : 00   >  data.txt
 
// 每隔1秒记录内存使用情况,直到15点,数据将保存到data.txt文件中。 
 
sar  1   0   - n DEV  -  15 : 00 : 00   >  data.txt
 
// 每隔1秒记录网络使用情况,直到15点,数据将保存到data.txt文件中。

 

6. 强制kill

看到vim占用cpu99,然后用ps查询vim

Ps aux|grep vim

然后根据pid 杀死进程

Kill -9 pid

是强制杀死进程

 

7. 统计端口来路总数

netstat -an | grep 8081 | wc –l

 

 

8. 开启网络中断

开启网络中断可通过服务查看irqbalance服务查看状态,如果网络中断分布不均,则可以通过开启或关闭服务进行切换

service irqbalance stop

 

 

9. 解压bz2

$bzip2 –d test.tar.bz2

$tar xvf test.tar

解压到执行目录加命令:

-C test_dir

10.         Rpm无法应用解决方法

当应用无关联删除rpm -e --allmatches –nodeps popt后,rpm无法应用,所以切记不要随便卸载不清楚地rpm

当卸载popt后,无法应用rpm了,执行rpm会报

Libpopt.so.0不存在,所以我们这时候无法在用rpm安装popt包,那么就下载源码包安装

源码包地址:

http://www.linuxfromscratch.org/blfs/view/6.3/general/popt.html

下载后,我们解压popt1.10.4

执行:

sed -i -e "/*origOptString ==/c 0)" popt.c &&
./configure --prefix=/usr &&
make

然后检查

make check

然后安装:

make install

安装在执行rpm即又可用了,所以一定要小心啊

 

 

11.         Vim 统计某个字符出现的次数

%s/the/&/gn 

上面的代码是the出现的次数

 

匹配行数:

%s/^//n

 

12.         解压tar.bz2

#bzip2 –d xxx.tar.bz2

#tar xvf xxx.tar

 

 

13.         编译内核重启后,错误解决方法(linux 2.6.35内核)

mount: could not find filesystem ‘/dev/root’
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic – not syncing: Attempted to kill init!

 

修改

.config

CONFIG_SYSFS_DEPRECATED_V2=y

CONFIG_SYSFS_DEPRECATED=y

 

或者在

Make menuconfig

General setup--> [*] enable deprecated sysfs features to support old userspace tools

 

 

14.         Linux date 获取时间戳(秒)

date +%s

 

 

15.         Vi 替换命令

:%s/aaa/ bbb/g 全部替换

:s/aaa/bbb/ 替换当前行

n$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian  sky 

 

按指定行替换

startlineendline s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian  sky 

:

1,3  s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian  sky 

 

 

 

aaa是被替换内容

bbb 是替换内容

 

 

16.         vim 代码自动补全

ctrl+p

 

光标可以上下移动

 

17.         Vi添加行号

:set nu

 

18.         Vi 设置缩进

set softtabstop=2

 

19.         vi 批量注释

批量注释:

Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如// 或 #,输入完毕之后,Vim会自动将你选中的所有行首都加上注释

取消注释:

Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意// 要选中两个,选好之后按d即可删除注释

 

20.         Vi 剪切和复制

v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴。

 

21.         更改系统语言为英文

export LANG="en_US"

 

22.         删除乱码文件或文件夹

首先,ls –li查看索引节点

[root@BP-28-xxxx tools]# ls -li

×Ü¼Æ 119644

85458947 drwxr-xr-x  8 1000 1000     4096 06-18 19:22 jdws-1.0

85458946 -rw-r--r--  1 root root   612267 06-18 19:21 jdws-1.0.tar.gz

85491713 drwxrwxr-x 24 root root     4096 06-26 21:38 linux-2.6.35.13

85459795 -rw-r--r--  1 root root 69335593 06-20 11:41 linux-2.6.35.13.tar.bz2

85459319 drwxr-xr-x  7 1169 1169     4096 06-18 19:25 pcre-8.10

85459318 -rw-r--r--  1 root root  1285776 06-18 19:24 pcre-8.10.tar.gz.gz

85459796 -rwxr--r--  1 root root      426 06-26 01:01 realserver

85983233 drwxr-xr-x  2 root root     4096 07-09 17:26 search_front_server

85459798 -rw-r--r--  1 root root 51113771 07-09 17:42 search_front_server.zip

85954225 drwxr-xr-x  2 root root     4096 07-09 17:26 -?-¸WEB+À¥¦¦?¢¿

 

然后找到85954225

执行命令:

find ./ -inum 85954225 -print -exec rm {} -rf \;

之后就可以删除乱码文件或者文件夹了

 

 

23.         Rpm 强制安装

后面加上 --nodeps –force即可

例:

rpm -ivh libpng-devel-1.2.10-7.1.el5_3.2.x86_64.rpm --nodeps –force

 

 

24.         linux php安装

首先安装:

rpm -ivh libjpeg-6b-37.x86_64.rpm

rpm -ivh libjpeg-devel-6b-37.x86_64.rpm

rpm -ivh libjpeg-6b-37.i386.rpm

rpm -ivh libjpeg-devel-6b-37.i386.rpm

 

rpm -ivh libpng-1.2.10-7.1.el5_3.2.i386.rpm

rpm -ivh libpng-1.2.10-7.1.el5_3.2.x86_64.rpm

rpm -ivh libpng-devel-1.2.10-7.1.el5_3.2.i386.rpm

rpm -ivh libpng-devel-1.2.10-7.1.el5_3.2.x86_64.rpm

如果不能正常安装则进行强制安装

--nodeps –force

 

然后安装:

tar zxf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8/ && ./configure && make && make install && /sbin/ldconfig && cd libltdl/ && ./configure --enable-ltdl-install && make && make install && cd ../../

 

tar zxf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8/ && /sbin/ldconfig

ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

./configure && make && make install && cd ../

 

然后安装或解压mysql

 

然后:

tar jxvf php-5.3.5.tar.bz2

cd php-5.3.5

./configure '--prefix=/export/servers/php' '--with-mysql=../mysql-5.1.54-linux-x86_64-glibc23/' '--with-config-file-path=/export/servers/php/etc' '--disable-debug' '--enable-ftp' '--enable-inline-optimization' '--enable-magic-quotes' '--enable-mbstring' '--enable-soap' '--enable-safe-mode' '--enable-wddx=shared' '--enable-xml' '--with-gd' '--with-gettext' '--with-regex=system' '--with-zlib-dir=/usr/lib' '--enable-fpm' '--with-jpeg-dir' '--enable-fpm' '--with-fpm-user=www''--with-fpm-group=www'  '--enable-shmop' '--with-mcrypt' '--with-mysqli=mysqlnd'

 make

sleep 5

 make  install

 

//make ZEND_EXTRA_LIBS='-liconv' && make install

cd ..

cp -r -v php-fpm.conf /export/servers/php/etc/

 

增加扩展:

tar jxvf eaccelerator-0.9.6.1.tar.bz2

cd eaccelerator-0.9.6.1

/export/servers/php/bin/phpize

 

./configure     --enable-eaccelerator=shared     --with-php-config=/export/servers/php/bin/php-config      --with-eaccelerator-shared-memory     --with-eaccelerator-sessions     --with-eaccelerator-content-caching

make -j 9&&make -j 9 install

 

 

25.         php fpm 配置端口

/etc/php-fpm.conf中更改

Listen

Listen 127.0.0.1:9001

端口可自定

默认是:listen = '/dev/shm/php-fcgi.sock'

 

26.         Php 动态添加模块

首先,进入到php的安装目录下的ext目录,找到指定的模块进入目录,如curl 目录,进入

Cd  /export/tools/php/php-5.3.5/ext/curl

进入后,执行phpphpize命令,如php目录是/export/servers/php

那么执行:

/export/servers/php/bin/phpize

执行后在该目录下会生成configure文件

然后执行configure

./configure  --with-curl --with-curlwrappers  --with-php-config=/export/servers/php /bin/php-config

 

然后执行make && makeinstall

执行后,我们去/export/servers/php/lib/php/extensions/no-debug-non-zts-20090626 目录下查看是否有curl.so

然后再ll /export/servers/php/etc/php.ini中加入:

extension=curl.so

然后用

/export/servers/php/bin/php –m

查看是否有curl,如果有就成功了

 

 

27.         Phpiconv错误解决方法

make php时报了如下错误:

/export/huzhiguang/bak_tools/nginx+php/php-5.3.5/ext/iconv/iconv.c:337: undefined reference to `libiconv'

 

配置./configure

--with-iconv=/usr/local

这样配置上其路径即可

 

28.         Php 增加apache支持

'--with-apxs2=/export/servers/apache2/bin/apxs'

 

 

29.         You've configured multiple SAPIs to be build解决方法

 因为在安装php时加入了apache 支持和nginx支持,冲突了,所以,先进行apache安装

'--with-apxs2=/export/servers/apache2/bin/apxs'

 

然后再进行

'--enable-fpm' '--enable-fastcgi' '--with-fpm-user=www'   '--with-fpm-group=www'

 Nginx的安装

 

30.         Vi 撤销和恢复

u是撤销你刚才做的动作

ctrl+r 是恢复你刚才撤销的动作

 

 

 

31.         Xhprof使用问题总结

当报如下问题的时候:

Warning: fopen(/export/servers/xhprof_logs/4fffc57f6fa9e.xhprof_foo) [function.fopen]: failed to open stream: Permission denied in/export/data/www/search.360buy.com/xhprof_lib/utils/xhprof_runs.php on line 135

 

这是由于/export/servers/xhprof_logs/目录的权限不足,需要把其他使用人的写权限打开,所以这里可以赋予权限:

Chmod 777 /export/servers/xhprof_logs/

记住最后一项一定要是7

/export/servers/xhprof_logs/这个目录是我们保存xhprof日志的目录,是配置在php.ini 中的

xhprof.output_dir=/export/servers/xhprof_logs

这个路径

 

 

当我们要查看xhprof ui的时候,一定要把xhprof_htmlxhprof_lib文件夹copy到我们的web 服务的目录下

 

还有就是这2个目录一定要指定好目录:

include_once $XHPROF_ROOT . "/search.360buy.com/xhprof_lib/utils/xhprof_lib.php";

include_once $XHPROF_ROOT . "/search.360buy.com/xhprof_lib/utils/xhprof_runs.php";

 

否则会报如下错误:

Warning: include_once(/export/data/www1/search.360buy.com/xhprof_lib/utils/xhprof_lib.php) [function.include-once]: failed to open stream: No such file or directory in/export/data/www/search.360buy.com/sample.php on line 30

Warning: include_once() [
function.include]: Failed opening '/export/data/www1/search.360buy.com/xhprof_lib/utils/xhprof_lib.php' for inclusion (include_path='/export/servers/php/include/ice/') in /export/data/www/search.360buy.com/sample.php on line 30

Warning: include_once(/export/data/www1/search.360buy.com/xhprof_lib/utils/xhprof_runs.php) [
function.include-once]: failed to open stream: No such file or directory in /export/data/www/search.360buy.com/sample.php on line 31

Warning: include_once() [
function.include]: Failed opening '/export/data/www1/search.360buy.com/xhprof_lib/utils/xhprof_runs.php' for inclusion (include_path='/export/servers/php/include/ice/') in /export/data/www/search.360buy.com/sample.php on line 31

 

上面有提示错误的路径,如

export/data/www1/search.360buy.com/xhprof_lib/utils/xhprof_lib.php

这里我们查看是否我们需要的php在这个路径下,如果不在,我们则改为指定路径即可,/export/data/www/ 这个而是我们的web 应用的路径,程序会自动跟踪到,也就是我们指定的web服务路径

 

当我们执行需要测试的php时,成功后会生成指定的路径

http:///index.php?run=4fffc79e37141&source=xhprof_foo ---------------

后面连接的是生成好的我们监控信息

这里的index.phpxhprof_html目录下的,所以xhprof_html这个目录我们需要提前 copy到应用下,可以进行查看分析列表

 

 

Incl. CPU(microsecs) 是进入函数后其所有子函数的cpu时间和本函数消耗时间的总和

 

ICpu%Incl. CPU(microsecs)/ Total Incl. CPU (microsecs),包含所有子函数的CPU消耗时间/cpu消耗时间

 

Excl. CPU(microsec),本函数消耗的cpu时间

ECPU% Excl. CPU(microsec)/ Total Incl. CPU (microsecs) 的比率

 

 

32.         Vi 查找不区分大小写

vim在默认的情况下,用/?来查找字符串时,是区分大小写的,有时候很不方便。
我们可以用
:set ic
这样vim就不区分大小写了。
如果我们像区分大小写
:set noic

 

33.         配置静态IP

Vi /etc/sysconfig/network-scripts/ifcfg-eth0

然后将BOOTPROTO="static" 设置为static

配置IP、网关、DNS、子网掩码等

…..

IPADDR="192.168.12.63"

NETMASK="255.255.255.0"

GATEWAY="192.168.12.1"

DNS1="202.106.0.20"

…….

 

Onboot=yes

是引导默认的网卡

34.         Wget 测试gzip

Wget --header="accept-encoding:gzip" 地址

 

35.         Tar 打包+压缩

tar -zcvf /home/www/images.tar.gz /home/www/images

 

 

36.          挂载内存文件系统

内存文件系统一般分析ramdiskramfstmpfs

Ramdisk是通过固定分配内存的一块空间,进行格式化,然后挂载,这种方式不再我们考虑的范围之内因为不灵活。

 

剩下2种则是ramfstmpfs

Ramfs是用物理内存动态分配的文件系统,物理内存空间够用的情况下可进行动态分配。

Tmpfs是物理内存和swap内存搅浑系统共用,当物理内存不够用时用swap,而且tmpfs可进行设定分区上限大小,比较灵活。

在内存空间够用时ramfstmpfs的性能差不多,io无压力,当内存空间用尽时,2种内存文件系统均io比较高,但是tmpfsio高后,会调用swap来分摊,而ramfs则需要清空内存文件系统中的文件才可以。

 

挂载tmpfs:

mount my_tmpfs $DIR_TMP -t tmpfs -o size=512m
例:
mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

 

调整挂载内存系统的大小:

mount $DIR_TMP -o remount,size=1024m,nr_inodes=100k
 
nr_inodes为最大节点数,如果你的$DIR_TMP使用df命令查看明明有空间,却无法创建新文件(例如touch一个新文件),可能是文件节点用到上限了,可以用"df -i"命令来查看,如果是有空间但节点达到上限,就需要用nr_inodes来调整了
 
 

37.          查看文件夹大小

du -h --max-depth=1 /usr/

 

df是查看系统大小

du是查看文件夹大小

--max-depth 是深度,是文件夹的深度

后面是需要查看的文件夹

 

38.         Ldd 查看二进制动态链接库

Ldd ./program

就可以查看该二进制文件下的动态链接库

 

 

39.         递归查找文本内容

grep 内容 匹配 [–r]

-r 是递归查找

如:

grep “content” * -r

这就是查找该目录下所有文件中含有content内容的文件查找出来

 

 

40.         Umout device is busy.解决方法

df 查看硬盘容量信息

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda1             30720960   9464728  19695656  33% /

tmpfs                 16432956         0  16432956   0% /dev/shm

/dev/sda3            392050276  20914848 351220420   6% /export

 

然后umount掉一个挂载点

Umount /export

当执行umount 时,报了

/export: device is busy.错误

我们通过fuser命令把所有占用/export的进程等kill掉,执行如下命令:

fuser –km /export

 

然后我们再执行

Umout /export

卸载成功,然后我们重新挂载

mount /dev/sda3 /export –t ext4

然后再用df查看挂载情况

 

41.         Vi 格式化文本

先按g(g)到最上面,然后按=,然后按G(大写G)到最下面文本就全部格式化了

 

 

42.         安装redis

$ wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz

$ tar xzf redis-2.4.17.tar.gz

$ cd redis-2.4.17

$ make

 

启动redis

cd src

./ redis-server ../redis.conf

后面的../redis.conf是配置文件的路径

 

进入redis 的客户端:

$ src/redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

 

43.         Lsof –i

Lsof –i

查看网络链接

可用于查看当连接多时造成的问题

44.         Ss

查看连接

可以查看当连接多时造成的问题

一般连接多,最后死掉了可能是由于未关闭连接造成的

 

ss -a -t|grep 192.168.12.63:27017|grep TIME|wc -l

wc –l 统计总数

-t tcp

45.         Linux中没有sar iostat等命令安装

可以yum install sysstat

或者找sysstat包安装

 

 

46.         This account is currently not available

当切换登录用户时,如:

Su – mysql

系统提示了This account is currently not available当前用户无效,是由于该用户为

Sbin/nologin

所以通过vipw命令

进入后修改mysql用户为 bin/bash即可

mysql:x:503:503::/home/mysql:/bin/bash

 

 

47.         scp ssh通信错误解决方法

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that the RSA host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

ca:3a:84:1b:64:1c:58:35:df:a9:00:2b:54:68:e4:23.

Please contact your system administrator.

Add correct host key in /root/.ssh/known_hosts to get rid of this message.

Offending key in /root/.ssh/known_hosts:1

RSA host key for 192.168.12.63 has changed and you have requested strict checking.

Host key verification failed.

lost connection

 

删除/root/.ssh/下的known_host文件即可

 

 

48.         重新链接gcc

安装新的gcc后,配置环境变量后,使用gcc还是旧的

那么我们首先

Cd /usr/bin

然后ln –s –f /export/servers/gcc-4.6.1/bin/gcc

即可

这样就将bin下的gcc直接链接到/export/servers/gcc-4.6.1/bin/gcc

 

 

 

49.         安装boost_1.50

tar -zxvf  boost_1_50_0.tar.gz
cd boost_1_50_0/
./bootstrap.sh --prefix=/usr --libdir=/usr/lib64
./b2 --prefix=/usr --libdir=/usr/lib64  --layout=system install
export Boost_LIBRARYDIR=/usr/include/boost/

 
BOOST_INCLUDE=/usr/local/include/boost
BOOST_LIB=/usr/local/lib
export BOOST_INCLUDE BOOST_LIB

 

这里要注意,编译时需要用到你以后使用的gcc版本,版本不一致会出现问题

 

50.         Yum gcc

Yum install gcc*

需要是 gcc*否则会安装不全

 

51.         配置gcc环境变量

export PATH=/export/servers/gcc4.7/bin:$PATH

这里的gcc环境变量需要配置在$PATH前,这样最新的gcc就有优先级了,配置后面不生效,因为之前的gcc会先被调用,并且最好不用用软链接(ln –s)来更改gcc,这样容易出现问题

 

 

 

ls  >a; od -Ax -tcx1  a

 

 

52.         ssh 服务停止无法启动

/var/empty/sshd must be owned by root and not group or world-writable.

  Linux上的SSH无法启动

 

报告/var/empty/sshd must be owned by root and not group or world-writable.

主要是权限造成的,解决方法如下:

(1)       方法1

 

修改为root属主,启动成功

 

  -bash-2.05b# chown root /var/empty/sshd/

 

  -bash-2.05b# /etc/init.d/sshd start

 

Starting sshd: [ OK ]

(2)       方法2

chown -R root.root /var/empty/sshd

chmod 744 /var/empty/sshd

service sshd restart

 

方法2解决了问题

 

53.         shell界面出现“-bash-4.1$”这种形式的解决方法

.bashrc.bash_profile文件cp到用户的home路径下

上面2个文件通过~/.bash_profile

然后就可以解决这个问题了

 

54.         Shell 统计执行后的数量

如:

Lsof –I |wc -l

这样就可以统计数量

 

55.         Cannot assign requested address解决方法

服务端没有被压死,但是http_load报这个问题

那么修改http_load服务器的/etc/sysctl.conf文件

添加上:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

 

执行sysctl –p生效

 

#开启time_wait状态的socket重用

net.ipv4.tcp_tw_reuse = 1

#开启time_wait状态的socket快速回收

net.ipv4.tcp_tw_recycle = 1

 

首先查看服务端:

是否有大量的TIME_WAIT

Netstat –anp

然后可通过ss –a|wc –l查看

服务端把:

net.ipv4.tcp_max_tw_buckets = 6000

千万要注意.tcp_max_tw_buckets这项,这个千万要在net.ipv4.ip_local_port_range的范围内,这样当超过最大的buckets时,才可以对TIME_WAIT进行快速回收,不要设置太大,如果设置的太大超过了端口限制,那么一般就会报Cannot assign requested address问题,当client端出现大量的TIME_WAIT时,首先分析的就应该是buckets是否设置过大,或者ip_local_port_range范围过小

调大(修改/etc/sysctl.conf)

net.ipv4.tcp_max_tw_buckets表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字

 

然后客户端,发送的最大端口数量限制,一般来说每台机器都有65535个端口,但是可用的也许在60000多;

修改(/etc/sysctl.conf

net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:3276861000,改为102465000

1024-65000的范围这样可用的端口数量就变大很多,发送端可用的就多;

然后sysctl –p,让文件生效

 

sysctl -w net.ipv4.tcp_timestamps=1  开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用

sysctl -w net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收

 

参照:

http://zhumeng8337797.blog.163.com/blog/static/10076891420129155535790/

 

 

56.         configure If you meant to cross compile, use `--host'.错误解决方法

当运行./configure时,报出了如下错误:

checking whether we are cross compiling... configure: error: in `/export/wanghong/ice/ThirdParty-Sources-3.4.1/db-4.8.30.NC/build_unix':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.

需要在./configure 配置—host

—host是本系统的机型

./configure最上面就有显示如:

checking build system type... x86_64-unknown-linux-gnu
checking host system type... 
x86_64-unknown-linux-gnu
checking if building in the top-level or dist directories... no

红色的则为机型

所以配置:

./configure –host= x86_64-unknown-linux-gnu

 

 

57.         Error, some other host already uses address解决办法

配置完静态ip后,启动

Service network restart 命令,报了如下错误:

Error, some other host already uses address xxx.xxx.xxx.xxx

 

2种解决方法,一种是:

Ifconfig ech0 192.168.12.11 netmask 255.255.255.0 up

但是这个不能用service network restart  否则将会被覆盖

 

另一种是:

进入 /etc/sysconfig/network-scripts/ifup-eth文件中:

注释掉:

if ! arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${IPADDR} ; then

echo $”Error, some other host already uses address ${IPADDR}.”

exit 1

fi

 

然后再执行service network restart 即可

 

 

 

参考:

http://chyd96.blog.163.com/blog/static/62706076201052743350211/

 

58.         查看centos 版本

cat /etc/redhat-release

 

59.         查看文件大小

ls –lht

 

60.         回收内存

echo "3" > /proc/sys/vm/drop_caches

 

 

61.         putty 断开连接解决方式

putty超期时,报:

network error:software caused connection about

 

设置secoonds between keepalive (0 to turn off) 10

上图中,默认输入 0 是禁用保持连接,在这里我习惯的设置了 10。两个复选框都保持默认选中。

参考:

http://blog.csdn.net/googchar/article/details/8190104

 

 

62.         踢掉其他在线用户

首先用who命令查看

bianhaoqiong@bianhaoqiong-virtual:~$ who 

bianhaoqiong pts/0        2011-11-30 18:53 (192.168.190.1) 

bianhaoqiong pts/2        2011-11-30 17:52 (192.168.190.1) 

然后发现pts/2 不是你的用户,然后踢掉即可

然后执行pkill -kill -t pts/2 

 

63.         Ssh 连接报Read from socket failed: Connection reset by peer问题解决方法

当连接ssh 时,报了如下错误:

Read from socket failed: Connection reset by peer

起因;

$sudo chmod 777 /etc/  -R (千万不要做,这是一个误操作)

导致了上面的结果

 

解决方法:

#chmod 400 /etc/ssh/*

 

在重新连接就可以了。

 

 

64.         linuxsu命令su cannot set groups Operation not permitted错误

linux下命令su执行出现以下错误
su: cannot set groups: Operation not permitted

huzg切换到root用户后提示如上错误

首先看:

 ll /bin/su

-rwsr-xr-x 1 root root 28336 Jan 21  2009 /bin/su

然后先分配root用户组,然后执行

chmod a+s /bin/su

然后就可以切换了

 

 

65.      -bash: /dev/null: Permission denied

当从root用户切换到普通用户的时候报了如下错误:

-bash: /dev/null: Permission denied

/etc/bashrc78

"$i" >/dev/null 2>&1

这里是要有写权限的

[root@BP-28-2-206192 home]# ll /dev/null

crwxr-xr-x 1 root root 1, 3 Mar 14 22:34 /dev/null

看一下/dev/null

在组这里只有执行和读的权限

所以我们重新给授权chmod 666 /dev/null

也就是所有的都授予rw权限,但未分配执行权限

 

66.         压缩tar.bz2

tar -cjf hiphop-php-bin.tar.bz2 bin

 

67.         指定动态链接库路径

vi /etc/ld.so.conf.d/hhvm.conf

在目录/etc/ld.so.conf.d/下创建,所以的配置引用在/etc/ld.so.conf文件下保存

然后在hhvm.conf中一定要引入动态链接库的路径,因为它无法进行递归操作

然后指定ldconfig

 

 

68.         linux grep 命令取反

取含有abc  的是     grep abc

取不含有abc 的是   grep -v abc

 

 

69.         后台执行命令

Nohup 命令 &

如:

nohup sh compare_url_cbs.sh &

 

nohup ./nginx &

 

详见:

http://blog.sina.com.cn/s/blog_605f5b4f0100x28u.html

 

70.         curl命令加引用来路头

curl –e “http://item.jd.com/849503.html

http://club.jd.com/productpage/p-1002664897-s-0-t-3-p-0.html?callback=jsonp1364800457420&_=1364800614497

 

Referrer: http//item.jd.com

参照:

http://codingstandards.iteye.com/blog/807844

 

71.         linux 定时任务执行器

执行crontab -e

编辑任务执行器

然后将需要执行的语句和规则加入进去:

49 22 15 5 *  nohup /usr/local/bin/http_load_gzip -p 100 -s 1200 /export/http_load_data/huzg/test_memery.txt &>/export/http_load_data/huzg/test_memery.log &

注意:

这里的二进制需要加上指定的路径,否则找不到文件

 

每一行对应一个cron job

每一行分为六个部分,每一部分用空格隔开,同一个部分用逗号隔开

minute  hour  day_of_month  month  weekday  command

前五个域中使用*,则表示所有的时间点

minute0-59

hour0-230代表零点

day_of_month1-31

month1-12

weekday0-60代表星期天,1-6代表星期一到星期六

command:需要执行的脚本或者命令

 

比如上面的就是515日的2249分执行,最后的星期不需要用*代替

49 22 15 5 * 这样倒着配置

 

详见:

http://www.2cto.com/os/201109/105474.html

 

72.         TIME_WAIT过多

 net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。

  认为180000,改为5000。对于ApacheNginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

 

:

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

 

设置这两个参数: reuse是表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接; recyse是加速TIME-WAIT sockets回收

 

参考:

http://space.yoka.com/blog/1216916/3662173.html

 

73.         指定某个用户运行程序

 

su - <user> -c "<cmd>"

例:

su - huzg -c "/export/dev_hhvm/hiphop-php_hzg/build2/src/hhvm/hhvm -c /export/data/www/hhvm/config-club_hhvm_nolog_test.hdf -m daemon"

 

:

-c 后的路径需要是绝对路径

 

74.         查看最后登录用户的命令

last             

 

 

75.         linux patch方法

详细见:

http://www.cnblogs.com/itech/archive/2009/08/19/1549729.html

 

1diff

    --------------------

    NAME

           diff - find differences between two files

    SYNOPSIS

           diff [options] from-file to-file

    --------------------

 

     单的说,diff的功能就是用来比较两个文件的不同,然后记录下来,也就是所谓的diff补丁。语法格式:diff 【选项】 源文件(夹) 目的文件(夹),就是要给源文件(夹)打个补丁,使之变成目的文件(夹),术语也就是“升级”。下面介绍三个最为常用选项:

 

    -r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。

    -N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。

    -u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。

 

2patch

    ------------------

    NAME

       patch - apply a diff file to an original

    SYNOPSIS

           patch [options] [originalfile [patchfile]]

           but usually just

           patch -pnum <patchfile>

    ------------------

    简单的说,patch就是利用diff制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着你可以有源文件(夹)――>目的文件(夹),也可以目的文件(夹)――>源文件(夹)。下面介绍几个最常用选项:

    -p0 选项要从当前目录查找目的文件(夹)

-p1 选项要忽略掉第一层目录,从当前目录开始查找。

 

总结一下:
单个文件
diff 
uN from-file to-file >to-file.patch
patch 
p0 < to-file.patch
patch 
RE p0 < to-file.patch

多个文件
diff 
uNr from-docu to-docu >to-docu.patch
patch 
p1 < to-docu.patch
patch 
p1 <to-docu.patch

 

(1)      文件patch

原始文件:test0

修改后文件:test1

创建补丁:

diff -uN test0 test1 > test1.patch

diff –uN 原始文件 修改后文件 > 补丁名称

 

打补丁:

patch -p0 < test1.patch

 

恢复:

patch –RE -p0 < test1.patch

 

(2)      文件夹patch

原始文件夹:folder0

修改后文件夹:folder1

创建补丁:

diff -uNr floder0 folder1 > folder1.patch

diff -uNr 原始文件夹 修改后文件夹 补丁名称

 

打补丁:

cp folder1.patch folder0

cd folder0

cat folder1.patch | patch -p1

 

恢复:

cat folder1.patch | patch -R -p1

 

76.         通过端口KILL进程

[root@BP-28-2-206192 ~]# netstat -anp|grep 8083

tcp        0      0 0.0.0.0:8083                0.0.0.0:*                  LISTEN      -

tcp        0      0 0.0.0.0:18083               0.0.0.0:*                  LISTEN      -

这样对于查看端口没有进程状态的

[root@BP-28-2-206192 ~]# lsof -i:8083

COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME

memcheck- 27124 huzg   33u  IPv4 51310972      0t0  TCP *:us-srv (LISTEN)

通过lsof命令查看,然后强制PID kill

Kill -9 27124

  • 大小: 23.1 KB
  • 大小: 42.8 KB
2
3
分享到:
评论
2 楼 saiyaren 2013-09-17  
ray_linn 写道
....这个叫总结... 基本上就是 man xxxx解决的事情。


我上面的所有问题你用man可以解决?
1 楼 ray_linn 2013-09-17  
....这个叫总结... 基本上就是 man xxxx解决的事情。

相关推荐

Global site tag (gtag.js) - Google Analytics