分页: 7/19 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Sep 15
1.按内存从大到小排列进程:  
ps -eo "%C : %p : %z : %a"|sort -k5 -nr

2.查看当前有哪些进程;查看进程打开的文件:
ps -A ;lsof -p PID

3.获取当前IP地址(从中学习grep,awk,cut的作用)
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-

4.统计每个单词出现的频率,并排序
awk '{arr[$1]+=1 }END{for(i in arr){print arr"\t"i}}' 文件名 | sort -rn

5.显示10条最常用的命令
sed -e "s/| /\n/g" ~/.bash_history | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head

6.杀死Nginx进程(杀死某一进程)
ps -ef|grep -v grep |grep nginx|awk '{print $2}' 或
for i in `ps aux | grep nginx | grep -v grep | awk {'print $2'}` ; do kill $i; done

7.列出当前文件夹目录大小,以G,M,K显示。
du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf"%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"):$1>=2**10? ($1/2**10, "K"): ($1, "")}e'

shaw答案 :du -hs $(du -sk ./`ls -F |grep /` |sort -nr |awk '{print $NF}')
也可 以实现,不过不是特别完美。但好记。

8.清空linux buffer cache
sync && echo 3 > /proc/sys/vm/drop_caches

9.将当前目录文件名全部转换成小写
for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done

10.消除vim中的^M的几种方法
1)dos2uninx filename
2)sed -e 's/^M//' filename
3)vim中 :s/^M//gc
4)col -bx < dosfile > newfile
5)tr -s "\r\n" "\n" < file > newfile

11. 清除所有arp缓存
arp -n|awk '/^[1-9]/ {print "arp -d "$1}'|sh

12. 绑定已知机器的arp地址
cat /proc/net/arp | awk '{print $1 " " $4}' |sort -t. -n +3 -4 > /etc/ethers


用killall能够杀死同一个可执行文件的所有进程,但是我要杀死用php执行的php文件进程中的某些,就不好做了,在网上搜了下发现了这个,挺好用:

killprog=`ps -ef|grep -E "XXXXXXX" | grep -v grep | awk '{print $2} '` kill $killprog
Sep 14
//查看资源空间上限
ulimit
//修改上限到最大
ulimit   -s   unlimited


//查看虚拟内存特殊状态
cat /proc/meminfo

/*linux 运行的每个进程都有自己的内存分页,一个进程不能访问另一个进程正在使用的分页。内核
也有自己的内存区域,任何进程都不得访问内核进程使用的内存。
要数据共享,可以创建共享内存区域,可以创建共享内存分页,通用共享内存区域可以被多个进程读取写入。
使用特殊命令ipcs查看系统当前内存分页。
*/
ipcs -m

/*
/etc/passwd文件包含一个所有系统用户账户组成的列表包括各个用户使用的shell
*/
cat /etc/passwd

//显示命令行提示符的当前设置输出结果为 bash shell 提示符字符串组成的序列如\u@\l[\W]\$
echo $PS1
//改变当前提示符,但如果启动新shell会加载默认shell提示符定义
PS1="[\t][\u]\$"

//显示路径后的斜杠
ls -F
//显示当前目录下的目录中的文件
// ls -F -R

//touch 命令
touch -a test //更改访问时间到当前时间
touch -m test //更改修改时间到当前时间
touch -t 200812251200 test //为文件更改时间戳为指定时间

//tail head 显示部分文件
tail -f //处于激活状态显示文件末尾(当文件处于不停写入时可以看到最新的)
head -n 15 // 显示前15行


//查看cpu与核数
查看cpu数量
more /proc/cpuinfo |grep "physical id"|uniq|wc -l
查看核数
more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l

//top命令
top执行后
按1 显示所有核的信息,这里的核是逻辑cpu,如果你是两个cpu,4核,则显示8个cpu,都是逻辑cpu
按f 进入修改各进程显示项目 ,如按 j 回车,则发现进程显示项目多一个P 表示当前进程运行在哪一个核。
Sep 14
EnableSendfile 指令
说明:使用操作系统内核的sendfile支持来将文件发送到客户端
语法:EnableSendfile On|Off
默认值:EnableSendfile On

这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。译者注:Linux2.4/2.6内核都支持。
这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:
一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时。
在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug。
当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件。
对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。
如果出现以上情况,你应当禁用sendfile :
EnableSendfile Off
针对NFS或SMB,这个指令可以被针对目录的设置覆盖:
EnableSendfile Off

EnableMMAP 指令

说明:在递送中使用内存映射(memory-mapping)来读取文件
语法:EnableMMAP On|Off
默认值:EnableMMAP On

此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。
这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:
在一些多处理器的系统上,内存映射会减低一些httpd的性能。
在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。
在可能遇到这些问题的服务器配置过程中,您应当使用下面的命令来禁用内存映射:
EnableMMAP Off
对于挂载了NFS的文件夹,可以单独指定禁用内存映射:
EnableMMAP Off
Jul 13
      今天碰到一个问题,NFS4.1的客户端在挂在服务器后,挂载目录下的文件及目录的uid和gid都变为4294967294,这应该是相当于-1的数。搜索了一下找到了几种解决的办法。

    解决方法:安装pnfs-nfs-utils,据说有很多依赖的包要装,没有尝试,有兴趣的可以去试试是否可行。


     网上有其他的解决办法:如

    You need to change the /etc/default/nfs-common file (on both your server and client):

      setNEED_IDMAPD to yes.

      sometimes set client is ok.

       不过在Cent OS 6.2的系统下没有找到这个文件,就不继续深究了。

     有一种最简单的解决办法就是在NFS的客户端启动rpcidmapd服务,然后你再看挂载的目录用户和组都是对的了,前提是你挂载的那个磁盘目录所属的用户和组,客户端也有。
Tags: ,
Jul 6
   之前用centos 6.2做系统的时候没有发现网卡会变成em1,可能不是在服务器上装的,而且今天特意拿来一台台式机安装centos 6.2 系统,网卡接口依然是之前的eth0,但是在DELL服务器上安装同样的centos 6.2系统,网卡的接口却变成了em1-em4了,其实本来这也没有什么,只是一个网卡接口的名称而已,一般来说没有什么影响。

   由于我们要使用LVS,环境配置完成后发现执行ipvsadm -ln,没有一台主机在线,连本机local都不在列表里
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.9.9:80 wrr persistent 3600
于是立即去拿网卡接口是eth0-eth3的服务器做测试,发现配置之后一切正常,两台机器除了网卡接口名称不一样之外其他的都一样,就想去试试把centos 6.2 网卡是em1-em4的服务器网卡接口给改回去看看,至于这个是不是ipvsadm的bug还不确定,现在也没有时间去考证这些东西,以后再研究,谷歌了一下找到了一些资料,感兴趣的可以去看看: http://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming,下面就开始操作啦:

第一步:修改系统grub
vi /boot/grub/grub.conf
增加一个 biosdevname=0 的启动参数,我修改的结果如下:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-220.17.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-220.17.1.el6.x86_64 ro root=UUID=41d8fd59-98cb-44fa-9cfb-065c104feaf0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarc
yrheb-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0
        initrd /initramfs-2.6.32-220.17.1.el6.x86_64.img
title CentOS (2.6.32-220.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=41d8fd59-98cb-44fa-9cfb-065c104feaf0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb
-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0
        initrd /initramfs-2.6.32-220.el6.x86_64.img
添加的参数只有红色字体的那一段,然后保存文件

第二步:删除udev的配置文件rm -f /etc/udev/rules.d/70-persistent-net.rules

第三步:修改当前网卡配置文件的名称
mv ifcfg-em1 ifcfg-eth0
mv ifcfg-em2 ifcfg-eth1
mv ifcfg-em3 ifcfg-eth2
mv ifcfg-em4 ifcfg-eth3

第四步:修改网卡配置文件内容,把em1全部修改改为eth0
修改之前:
DEVICE="em1"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=D4:AE:52:6A:8F:76
TYPE=Ethernet
BOOTPROTO=none
IPADDR=114.X.X.X
GATEWAY=114.X.X.X
NETMAKS=255.255.255.224
DNS1=202.106.0.20
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
修改之后:
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=D4:AE:52:6A:8F:76
TYPE=Ethernet
BOOTPROTO=none
IPADDR=114.X.X.X
GATEWAY=114.X.X.X
NETMAKS=255.255.255.224
DNS1=202.106.0.20
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
可以使用 perl -p -i -e 's/em1/eth0/g' ifcfg-eth0 或sed -i 's/em1/eth0/g' ifcfg-eth0 进行替换。
最后一步:重新启动系统 init 6 启动之后你就发现熟悉的eth0-eth4已经回来啦,顺便说下centos 6.2 还有一个问题就是如果你没有在网卡配置文件里写dns的话,重启之后你就会发现 /etc/resolv.conf 文件被清空了,一个方法就是在网卡配置文件中写DNS,另一个方法就是给/etc/resolv.conf加i属性,chattr +i /etc/resolv.conf
分页: 7/19 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]