码迷,mamicode.com
首页 > 系统相关 > 详细

linux常用

时间:2015-11-11 11:26:35      阅读:549      评论:0      收藏:0      [点我收藏+]

标签:

1、修改ip   
   即时生效: # ifconfig eth0 192.168.0.2 netmask 255.255.255.0  注 虚拟机ip网段应和本机网段一致  VMnet0(使用桥接网络)、VMnet1(仅主机网络)和VMnet8(NAT网络)
    启动生效:修改 /etc/sysconfig/network-scripts/ifcfg-eth0
    修改以下内容
    DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
    BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
    BROADCAST=192.168.0.255 #对应的子网广播地址
    HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址
    IPADDR=12.168.1.2 #如果设置网卡获得 ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址
    IPV6INIT=no
    IPV6_AUTOCONF=no
    NETMASK=255.255.255.0 #网卡对应的网络掩
    NETWORK=192.168.1.0 #网卡对应的网络地址
    ONBOOT=yes #系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备
    
    ifup eth0 启用一个 eth0 网络设备
    ifdown eth0 禁用一个 eth0 网络设备 
    
    自动获取IP
    vi /etc/sysconfig/network-script/ifcfg-eth0
    ONBOOT="yes"  
    MM_Controlled="no"  
    BOOTPROTO="dhcp"  
    #ifconfig 查看 Linux的 IP地址信息(interface configure)
    #iptables –F 禁用防火墙(擦掉所有防火墙的设置)
    #service network restart 重新获取 IP地址

2、重新启动网络配置
# /etc/init.d/network restart
# service network restat
3、修改网关 Default Gateway
即时生效:
# route add default gw 192.168.0.1 dev eth0
启动生效:
修改 /etc/sysconfig/network

4、修改 DNS
修改/etc/resolv.conf
修改后可即时生效,启动同样有效

5、修改 host name
即时生效:
# hostname centos
启动生效:
修改/etc/sysconfig/network

6、mysql 
   启动 $mysql_dir/bin/safe_mysqld 2>&1> /dev/null &
   补充参考: /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --log-error=/usr/local/mysql/var/localhost.err --pid-file=/usr/local/mysql/var/localhost.pid --socket=/tmp/mysql.sock --port=3306
   停止 $mysql_dir/bin/mysqladmin -u root -p shutdown

7、yes 命令 这个命令可以帮你自动回答命令行提示
   yes | rm -i *.txt  表示自动确认删除

891011、编译安装时指定安装路径   即./configure --prefix=/usr/local

12、时间 date +%Y:%m:%d 

13、日历 cal 02 2012 获取2012年2月的日历 cal 2012 获取 2012整年的日历

14、bc 计算器

15、常用按键说明 [Ctrl+D] 万能退出;  [Tab] 按两次 自动获取; [q] more 或者 less 等退出

16、在线说明文件路径 /usr/share/doc

17、查看网络的联机状态 netstat -nato  查看背景执行的程序 ps aux

18、内存中数据写入硬盘 sync 这个指令在系统关机或重新开机之前,很重要喔!最好多执行几次

19、shutdown 
    shutdown -h now    立刻关机,其中 now 相当于时间为 0 的状态 
        shutdown -h 20:25  系统在今天的 20:25 分会关机 
        shutdown -h +10    系统再过十分钟后自动关机 
        shutdown -r now    系统立刻重新开机
        shutdown -r +30 The system will reboot 再过三十分钟系统会重新开机,并显示后面的讯息。 
        shutdown -k now This system will reboot 仅发出警告信件的参数!系统并不会关机啦!吓唬人
        
20、添加一个用户 useradd wangxu 添加密码 passwd wangxu 修改密码 sudo passwd wangxu 删除用户 userdel wangxu 
    建立一个新用户账户,并设置ID #useradd caojh -u 544 (设定ID值时尽量要大于500,以免冲突 0到499之间的值留给bin、mail这样的系统账号)
     #groupadd oinstall
     #groupadd dba
     #useradd -m -g oinstall -G dba oracle
     #passwd oracle
    useradd参数   保存在/etc/passwd文本文件中
      -c:加上备注文字,备注文字保存在passwd的备注栏中。 
            -d:指定用户登入时的启始目录。
            -D:变更预设值。
            -e:指定账号的有效期限,缺省表示永久有效。
            -f:指定在密码过期后多少天即关闭该账号。
            -g:指定用户所属的群组。
            -G:指定用户所属的附加群组。
            -m:自动建立用户的登入目录。
            -M:不要自动建立用户的登入目录。
            -n:取消建立以用户名称为名的群组。
            -r:建立系统账号。
            -s:指定用户登入后所使用的shell。
            -u:指定用户ID号。
     查看组内成员:grep 组名 /etc/group
     更改用户名:usermod -l 新名 老名
21chgrp :改变档案所属群组  
    chown :改变档案所属人  
    chmod :改变档案的属性  例如:将文件showme.sh修改其所有人为root  #chown root showme.sh

22cat  由第一行开始显示档案内容
       cat -n  加行号(含空行)
       cat -n  加行号(不含空行)
       [test @test test]#cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
       [test @test test]#>/etc/test.txt 清空文件
       [test @test test]#cat *.txt>new.txt  将所有txt文件内容写入到new.txt
    tac  从最后一行开始显示,可以看出 taccat 的倒着写!
    more 一页一页的显示档案内容
    lessmore 类似,但是比 more 更好的是,他可以往前翻页!
    head 只看头几行 #head -n 100 r3.txt
    head 输出文件除了最后n行的全部内容 head -n -6 log2014.log
    tail 只看尾巴几行 tail -n200
    tail -f  监控更新的数据
    nl   显示的时候,顺道输出 行号!
    od   以二进制的方式读取档案内容!
     
    
23、zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。
                1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:
                          # zip -r yasuo.zip abc.txt dir1                 -r 递归处理,将指定目录下的所有文件和子目录一并处理。
                
                2.我下载了一个yasuo.zip文件,想解压缩:
                                # unzip yasuo.zip
                
                3.我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们:
                              # unzip abc\?.zip
                
                注释:?表示一个字符,如果用*表示任意多个字符。
                
                4.我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么:
                                # unzip -v large.zip
                
                5.我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了
                                # unzip -t large.zip
                
                6.我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:
                                # unzip -j music.zip

24tar(常用)
压缩  #tar zcvf /root/etc.tar.gz /etc          将etc打包为etc.tar.gz 并存储到/root 下
解压  #tar zxvf /root/etc.tar.gz -C /root         将包etc.tar.gz 解压到 /root  下
解压到当前文件夹 tar zxvf /root/etc.tar.gz
除txt外的所有文件压缩 #tar -cf arch.tar * --exclude "*.txt"
打包当前目录下的sinon文件夹 但忽略sinon文件夹下的log文件夹 #tar -cjvf sinon.tar.bz2 sinon --exclude=sinon/logs  或者#tar -cjvf sinon.tar.bz2 --exclude=sinon/logs sinon
只解压压缩文件中的index.php出来 #tar zxvf all.tar.gz index.php


25 rar
解压 rar x /root/elong.rar /root                解压elong.rar到 /root
压缩 rar a /root/elong.rar /root                将/root目录下的文件 添加到 elong.rar

26 >  >>  1>  2>
[test @test test]# ls -al >  list.txt 
将显示的结果输出到 list.txt 档案中,若该档案以存在则予以取代!
[test @test test]# ls -al >> list.txt 
将显示的结果累加到 list.txt 档案中,该档案为累加的,旧数据保留!
[test @test test]# ls -al 1> list.txt 2> list.err 
将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err
[test @test test]# ls -al 1> list.txt 2>&1 
将显示的数据,不论正确或错误均输出到 list.txt 当中!
[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃!  /dev/null 黑洞

27 <
由档案代替输入
[test @test tset]# mail -s "test" root < /root/.bashrc 将 .bashrc 内容寄给 root 

28 管线命令 pipe |
[test @test bin]# last                      执行 last ,将所有这个月的所有人登入数据取出来;
[test @test bin]# last | grep root          使用 grep 将上面的输出数据(stdout)当中的 root 撷取出来,其它的不要
[test @test bin]# last | grep root | wc -l  使用 wc 这个可以计算行数的指令将上一步的数据计算行数! wc -l 按行计算总数
   
29 cut 类似于php 的 explode
     [root @test /root ]# cut -d "分隔字符" [-cf] fields
        参数说明:
        -d  :后面接的是用来分隔的字符,预设是『空格符』
        -c  :后面接的是『第几个字符』
        -f  :后面接的是第几个区块?
    范例:
    [root @test /root]# cat /etc/passwd | cut -d ":" -f 1passwd 这个档案里面,每一行里头的 : 用来作为分隔号,    而列出第一个区块!
    [root @test /root]# cat /etc/passwd | cut -d ":" -f 2,5passwd 这个档案里面,每一行里头的 : 用来作为分隔号,列出第2 和第5
    [root @test /root]# last | cut -d " " -f 1     以空格符为分隔,并列出第一个区间!
    [root @test /root]# cat | cut -c1-20cat 之后的数据,每一行的 1-20 个字符取出来!
    
30 sort 分类,将相同的放一块
   [root @test /root]# last | cut -d" " -f1 | sort 
   sort    按正序排列  
   sort -r 按倒序排列
   sort -n 按数字排序
   sort -k 2 按列排序
   sort -u seq.txt 去重
   sort -r number.txt -o number.txt  排序后输出到原文件 不能用重定向>
   
31 uniq 取唯一(必须先sort 才能uniq)
   # last | cut -d" " -f1 | sort | uniq
   #cat a b | sort | uniq > c        # c 是a和b的合集
   #cat a b | sort | uniq -d > c     # c 是a和b的交集
   #cat a b | sort | uniq -u > c   # c 是a和b的不同
   
32 tr 类似 replace
   [root @test /root ]# tr [-ds] SET1
        参数说明:
        -d  :删除 SET1 这个字符串
        -s  :取代掉重复的字符!
        范例:
        [root @test /root]# last | tr [a-z] [A-Z]         <==将小写改成大写
        [root @test /root]# cat file | tr -d "Snail" > new_file    删除文件file中出现的"Snail"字符 【注意】凡是在file文件中出现的S,n,a,i,l字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
        [root @test /root]# cat /home/test/dostxt | tr -d \r > dostxt-noM   <==将 DOS 档案的字尾符号 ^M 的符号去除!
        [root @test /root]# cat file | tr [a-z] [A-Z]       使用tr命令“统一”字母大小写
        [root @test /root]# cat file | tr [0-9] [a-j]       把文件中的数字0-9替换为a-j
        
33 split 分割
    [root @test /root ]# split [-bl] 输入档案 输出档案前导字符
        参数说明:
        -b  :以档案 size 来分
        -l  :以行数来分
        范例:
        [root @test /root]# split -l 5 /etc/passwd test   <==会产生 testaa, testab, testac... 等等的档案
34 grep 
   参数说明:
        -a :在二进制文件中以文本文件的方式搜索数据
        -c  :计算找到指定字符串的次数
        -i   :忽略大小写
        -v : 反向选择
        -n ;输出行号
   
   linux grep显示指定内容前后指定行数的方法
        查询前后5行内容:
        cat /etc/httpd/conf/httpd.conf | grep -5 ^        查询之后5行内容:
        cat /etc/httpd/conf/httpd.conf | grep -A 5 ^        查询之前5行内容
        cat /etc/httpd/conf/httpd.conf | grep -B 5 ^        
递归查询指定类型文件
$grep -r  --include=*.php  "keyword"  ./
   正则搜索
   grep t[ae]st regular_express.txt
   输出相同行:
   $grep -wf file1 file2
   输出不同行
   $grep -wvf file1 file2
   统计两个文本文件的相同行
   $grep -Ff file1 file2
   如何比较两个文件并去删除相同的内容
   for i in $(<file1); do grep $i file2 || echo $i >>tmp1 ; done
35 script debug
    [test @test test]# sh -x test01-hello.sh 
36 查找文件
   locate srm  查找所有路径中带srm字符
   
   find /etc -name *srm*  
   find /etc -name srm* 
   find /etc -name srm 
   find ./ -size 0  //查找大小为0的文件
 
37 awk 
       #cat /etc/passwd | awk {FS=":"} {print $1} ##以:号分隔  并获取 第一列数据 等同于 awk -F ":" {print $1} /etc/passwd 
       #cat /etc/passwd | awk {FS=" "} {print $1} ##以空格分隔  并获取 第一列数据 等同于 cat /etc/passwd | awk {print $1}
       #cat /etc/passwd | awk {FS=":"} $3 < 10 {print $1 "\t" $3} ##文件/etc/passwd是以":"分隔的,查看第三栏小于10的数据,并且只第一栏与第三栏
       #cat /etc/passwd | awk NR==9,NR==12  获取第9至12行的数据
       #awk /pa.*3/, /end/ section.txt   正则查找含有pa.*3 与end 之间的行
       #awk BEGIN{total=0}{total+=$4}END{print total} a.txt   -----对a.txt文件的第四列进行求和!
       #awk BEGIN{ while( system("ls -l") | getline line ){ print line } }
       #awk {L[NR]=$0}END{for (i=3;i<=NR-2;i++){print L[i]}} new.txt  打印第3行至倒数第3行之间的数据
     #sed  1d ParentRegionList.txt|awk -F | {printf("%s|%s|%s|%s|%s\n",$1,$5,$7,$8,$9)}>aa.txt  删除第一行后 获取需要的列写入新文件
38 linux 打印mysql库中的数据 
   echo "select * from el_hotel limit 10" | mysql elong -uroot -padmin --default-character-set=utf8   
   echo "select * from el_hotel limit 5"   | mysql elong -uroot -padmin --default-character-set=gbk >a.xls  //导出为excel
   
   windows下 echo select * from el_hotel limit 5   | mysql elong -uroot -padmin --default-character-set=gbk >a.xls  //windows下导出为excel
   
39 xargs 将前一个命令的输出作为参数
   例:ls | xargs -n 20 rm -fr 将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
   
40 wget 
   wget -c http://www.example.com/large.file  继续上次未完的下载
   wget -O aa.txt http://www.example.com/large.file  将数据写入aa.txt 文件中
   
   
41 touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)

42 iconv -l 列出已知的编码 

43 mkdir
   #mkdir -p /tmp/dir1/dir2 递归创建一个目录树 
   #mkdir -m 777 /home/dir1/ 创建文件并设置权限

44 APT 软件工具
        apt-get install package_name 安装/更新一个 deb 包
        apt-cdrom install package_name 从光盘安装/更新一个 deb 包
        apt-get update 升级列表中的软件包
        apt-get upgrade 升级所有已安装的软件
        apt-get remove package_name 从系统删除一个deb包
        apt-get check 确认依赖的软件仓库正确
        apt-get clean 从下载的软件包中清理缓存
        apt-cache search searched-package 返回包含所要搜索字符串的软件包名称 
45 egrep 正则查找
   #egrep -o "http://[a-zA-Z0-9.]+\.[a-zA-Z]{2,3}" url_email.txt
   #sed -n 100,200p hotellist.xml |egrep -o [0-9]{8}|uniq|sort 查找100到200行之间的8位数字并去重排序
46 replace
   # var="This is a line of text"
     # echo ${var/line/REPLACED}      This is a REPLACED of text" //将变量var中的line替换成 REPLACED
47 substr
   # string=abcdefghijklmnopqrstuvwxyz
   # echo ${string:4}      efghijklmnopqrstuvwxyz
   # echo ${string:4:8}    efghijkl
   # echo ${string:(-1)}   z
   # echo ${string:(-2):2} yz
   
48 whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置 
  [root@linux.iamhjl.cn ~]# whereis mysql
  mysql: /usr/local/mysql
  
49 ln 它的功能是为某一个文件在另外一个位置建立一个同步的链接 不占用硬盘空间相当于一个镜像 最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。 
  ln -s /usr/local/webserver/mysql/bin/mysqldump /usr/bin/mysqldump    将建立一个软链到环境变量中  
  通过ls -l /usr/bin/mysqldump 或者ll /usr/bin/mysqldump 可查看软链;通过rm -rf /usr/bin/mysqldump 删除软链
  
50 find 
      find命令的参数;
      ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
            pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
            -print: find命令将匹配的文件输出到标准输出。
            -exec: find命令对匹配的文件执行该参数所给出的shell命令。-exec只限于 find使用
            -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
            #-print 将查找到的文件输出到标准输出
            #-exec   command   {} \;      —–将查到的文件执行command操作,{} 指代前面 find查询的结果,{} 和 \;之间有空格
            #-ok 和-exec相同,只不过在操作前要询用户
            \; 则相当于“宪法” 在 -exec 后面需要一个表示该命令终结的的符号
            eg:
            #find /root/webroot/taobao/log/ -type f -mtime +2 -exec rm -rf {} \;    删除过期文件 
            #find /root/webroot/taobao/log/ -name "*.log" -exec rm -rf {} \;  删除查出来的文件 
      #find ./  -name "update*"  -type f -exec ls -al {} \; 查找当前文件下以update开头的文件 并显示文件属性 
      #find ./ -name "update*" -exec cp  {} /home/hezuo/ \; 查找当前文件下以update开头的文件 并将find出来的东西拷到/home/hezuo/文件夹下 
      #find . -size +3000k -exec ls -ld {} \;  查找磁盘中大于3M的文件 
      #find ./ -type f -ls  查看一个目录树里的文件的体积和修改日期
      #find /etc -cmin -5   //在/etc下查找 5分钟内被修改过属性的文件和目录
      #find ./ -name "*.log" -exec cat {} \;>all.log 将满足条件的文件搜索出来并合并为一个文件 或者$find ./ -name "per*.log"|xargs cat >all.log 
      
      条件连接符
                -a and 逻辑与 -o or 逻辑或
                >#find / -size +204800 -a -size -409600
                >#find /etc -name init* -a -type f
                >#find /etc -cmin -30 -o -mmin -30
            命令连接符 -exec
                         -ok 询问确认
                >#find /home -user samlee -exec rm-rf {} \;
                >#find /etc -name init* -a -type d -exec ls -ld {} \;
                -exec/-ok 命令 {} \;

                
51 rsync 用于服务器之间文件同步
   $rsync -avz /root/file1/ /root/file2/ 本地传
   $rsync -avz /root/wangxu/ 192.168.15.129:/root/wangxu/其他机器 
   注意:如果远程主机的端口不是默认的22端口,假如是3000端口,上述的命令修改为,
   $ rsync -avz -e ssh -p 3000 filename1 ubuntu@192.168.0.1:/home/ubuntu/filenam
52 crontab -e编辑的时候,在文件名后面加上$(date +\%F)就能生成以年月日命名文件名  
    *:20 * * * * echo haha>>/root/webroot/taobao/log/$(date +\%F).log 每20秒执行一次
    */20 * * * * echo haha>>/root/webroot/taobao/log/$(date +\%F).log 每20分执行一次
53 tar.bz2 解压
   tar jxvf fcitx-3.2-050827.tar.bz2
54 常用软件下载地址
    libmcrypt http://lcmp.googlecode.com/files/libmcrypt-2.5.8.tar.gz
    mhash http://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2
    nginx http://nginx.org/download/
    mysql http://downloads.mysql.com/archives.php
    php   http://www.php.net/downloads.php

55 报错:Another app is currently holding the yum lock;waiting for it to exit...
   解决方案:可以通过强制关掉yum进程 #rm -f /var/run/yum.pid
   
56 curl 用php生成一个随机码 然后post 提交 xml
   curl -i –k https://api.dev.hotwire.com/v3/secure/booking/hotel?apikey=bqh3bv4ugfjk5swpcwn74w32&sig=$(php -r echo hash("sha256", "bqh3bv4ugfjk5swpcwn74w32test123456".time());) -H Content-type: text/xml -d @dev-booking_request_credit_card.xml -X POST 
   相关:php -r Run PHP <code> without using script tags <?..?>

57 export 导入环境变量 
   #export MYNAME="wangxu"  #env | grep MYNAME  #echo $MYNAME
   删除环境变量 #unset MYNAME
   环境变量永久有效 #vi /etc/profile 加入 export MYNAME="wangxu" 注:修改文件后要想马上生效还要运行# source /etc/profile

58 #/usr/local/bin/redis-server &> /dev/null &  redis服务启动 信息扔进黑洞
   

59 如何查看系统是哪个发布版?
    #cat /etc/issue
    #cat /proc/version

60 查看操作系统是多少位?
    #getconf LONG_BIT
    #uname -a

61 yum
    #yum install 软件名(-y:自动安装)
        #yum check-update //检测升级
        #yum update //升级
        #yum remove //卸载
        #yum list //软件包查询
        #yum info //软件包信息

62  !$
    #mkdir /path/to/exampledir  //创建一个目录
    #cd !$  //转到刚创建的目录

63 快捷键
    Ctrl + a:将光标定位到命令的开头
    Ctrl + e:与上一个快捷键相反,将光标定位到命令的结尾
    Ctrl + u:剪切光标之前的内容(删除整行)
    Ctrl + k:与上一个快捷键相反,剪切光标之后的内容
    Ctrl + y:粘贴以上两个快捷键所剪切的内容
    Ctrl + t:交换光标之前两个字符的顺序
    Ctrl + w:删除光标左边的参数(选项)或内容
    Ctrl + l:清屏
    Ctrl + r:逆向搜索 搜索历史记录

64 命令置换 ^^
   输入了一个 sudo apt-get updkte 的错误命令,这时可以通过输入 ^updkte^update(或 ^k^a)来纠正错误

65  查看Linux系统负荷 uptime 
    load average 里面有三个数字,它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷 值越小性能越好

66 $date -s 17:32:50 2013-01-17  修改服务器时间 
      $date -R   查看当前时区 
      $hwclock -w将当前时间和日期写入BIOS,避免重启后失效

67 witch 查找环境变量

68 nginx  多个php版本中选择(通过socket方式)   fastcgi_pass   unix:/tmp/php547.socket;
   一般使用TCP方式 如fastcgi_pass 127.0.0.1:9000
   php 中/php/etc/php-fpm.conf 中设置 
   ;listen = 127.0.0.1:9000
    listen = /tmp/php547.socket

69 liunx 下php运行文件地址  /usr/local/server/php547/bin/php
   php环境变量地址 ln -s /usr/local/server/php547/bin/php /usr/bin/php547
   #php547 -i

70 php 重启  /usr/local/server/php/sbin/php-fpm restart
   php 启动  /usr/local/server/php/sbin/php-fpm start
   php.ini 位置 /usr/local/server/php/etc
   
   或
   kill -INT `cat /usr/local/server/php547/var/run/php-fpm.pid`  关闭
   kill -USR2 `cat /usr/local/server/php547/var/run/php-fpm.pid` 重启

71 nginx 检查 /usr/local/server/nginx0849/sbin/nginx -t
   nginx 重启 /usr/local/server/nginx0849/sbin/nginx -s reload
   nginx 启动 /usr/local/server/nginx0849/sbin/nginx

72 scp 服务器之间拷贝文件
   命令格式:
    scp local_file remote_username@remote_ip:remote_folder
    或者
    scp local_file remote_username@remote_ip:remote_file
    或者
    scp local_file remote_ip:remote_folder
    或者
    scp local_file remote_ip:remote_file
    或者(从别处拷到本地)
    #scp -r root@10.0.24.103:/home2/backup/ ./
    拷贝远程(10.0.24.103)的/home2/backup/ 到本地的当前文件夹
   
73 清空文件 cat /dev/null >test.txt

74 Linux ubuntu /添加源 
        sudo vi /etc/apt/sources.list
        sources.list就是添加源的文件,只要把我上面说的那个源加到最后一行就行了,然后保存。回到终端下,更新一下软件列表,输入
        sudo apt-get update

75 ssh连接不上怎么办?
   安装SSH 
    yum install openssh-server
   启动SSH
    service sshd start
   设置开机运行
    chkconfig sshd on
    
    #service sshd status //查看运行状态 如果未运行
    #service sshd restart //重启
    查看22端口是否开启
     #iptables -L -n 
     若返回 如下 表示已开启
     ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:22
     
76 确认路由设置是否设置正确?(使用route命令查看)
   确认主机上是否开启了telnet服务?(使用netstat命令查看,TCP的23端口是否有LISTEN状态的行)
   确认防火墙是否放开了23端口的访问?(使用iptables-save查看)
   
77 nl命令
   [root@localhost test]# nl log2012.log 用 nl 列出 log2012.log 的内容 空白行不会加上行号
   [root@localhost test]# nl -b a log2012.log  空白行加上行号
   [root@localhost test]# nl -b a -n rz log2014.log 行号前面自动补上0,统一输出格式 默认6位
   [root@localhost test]# nl -b a -n rz -w 3 log2014.log 指定为3位
   
78 df du 用来检查linux服务器的文件系统的磁盘空间占用情况 du与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看
   [root@localhost test]#df -h
   [root@CAB-BTDWWeb1 xml]# du -sh
   38M 

79 /usr/sbin/groupadd 
    Usage: groupadd [options] GROUP

        Options:
          -f, --force             强制建立已经存在的组(如果存在则返回成功) 
          -g, --gid GID           设置新建立组的识别码,0--499保留给系统服务,可以指定500以上的唯一数值(除非用--non-unique参数)。
          -o, --non-unique        允许重复使用组识别码。
          -p, --password PASSWORD 设置新组的密码 
          -r, --system            创建一个系统账号

80 设置环境变量
   方法1 :直接用export命令(临时):
           #export PATH=$PATH:/opt/au1200_rm/build_tools/bin
   方法2 :修改profile文件:在里面加入: $export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
           #vi /etc/profile

81 nginx 监听80端口 ,可以将所有站点均设为80端口 server_name配置不一样的域名即可,不存在的域名设置host
   listen  80;
   server_name test.wyndham.elong.com;
   
   listen  80;
   server_name test.taobao.elong.com;
   
   listen  80;
   server_name test.caibei.elong.com;
   
   listen 80;
   server_name _;  不限制机器
   
82 cp -rf   -r 递归复制文件  -f强制复制

83 sed 
 常用选项:
        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑;
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。       
        
 #只打印第三行
    $sed -n 3p datafile 
    
    # 只查看文件的第100行到第200行
    $sed -n 100,200p mysql_slow_query.log
    #查看100行至最后一行
    $sed -n 100,$p mysql_slow_query.log
    
    #去掉多余的回车符
    sed s/^M// test.sh > back.sh
    
    #删除第二到第五行
    $sed 2,5d datafile
    
    #删除包含"My"的行到包含"You"的行之间的行
    $sed /My/,/You/d datafile
    
    #删除包含"My"的行到第十行的内容
    $sed /My/,10d datafile
    
    #删除最后一行,其余的都被显示
    $sed $d datafile
        
    #删除第一行,其余的都被显示
    $sed 1d datafile
    #替换内容
    $sed -i s/查找字段/替换字段/g datafile 
    #批量替换多个文件中的字符串
    $sed -i s/oldstring/newstring/g `grep oldstring -rl yourdir` 也可以使用  $sed -i "s/oldstring/newstring/g" `ls`
    例如:替换/home下所有文件中的www.admin99.net为admin99.net 
 $sed -i s/www.admin99.net/admin99.net/g `grep www.admin99.net -rl /home`
  (去掉 -i 只会显示更改输出的内容 但不会更改原文件内容 )
  
  sed /^$/d aa.txt #去除空行

84 ls     
    #ls -l | grep ^d  只显示文件夹
    #ls -l | grep ^- 只显示文件
    #ls -lh  按M显示

84 查找并杀死僵尸进程(zombie)
   #ps -ef | grep defunct 或者 ps -A -ostat,ppid,pid,cmd | grep -e ^[Zz]
   #ps -e -o ppid,stat | grep Z | cut -d” ” -f2 | xargs kill -9kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’`
   
85 redis-cli [OPTIONS] [cmd [arg [arg ...]]]
        -h <主机ip>,默认是127.0.0.1
        -p <端口>,默认是6379
        -a <密码>,如果redis加锁,需要传递密码
        --help,显示帮助信息
     redis-cli -h 192.168.99.68 -p 6477

86 linux下 telnet、redis 退出方式
    quit 回车
    
87  history 显示时间
   # HISTTIMEFORMAT=%F %T: ;history

88 删除文件大小为零的文件的多种方式
  # rm -i `find ./ -size 0`
  # find ./ -size 0 -exec rm {} \;
  # find ./ -size 0 | xargs rm -f &
   
89 查看机器内存大小和交换分区大小
  # grep MemTotal /proc/meminfo
  # grep SwapTotal /proc/meminfo
   
90 rpm 
   #rpm -q binutils make glibc  查看已安装的文件包
   #rpm -e 软件名  卸载  
   #rpm -ivh 软件包名   安装   例如 #rpm –ivh sudo-1.7.0pl-5.el5.i386.rpm //安装 sudo
   #rpm -Uvh 软件包名   升级   例如 #rpm –Uvh sudo-1.8.0pl-5.el5.i386.rpm //升级 sudo
   #rpm -ql 包名 一个rpm包中的文件安装到那里去了? 注意这里的是不包括.rpm后缀的软件包的名称
91 查看系统信息
    cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
        cat /proc/interrupts - 中断
        cat /proc/ioports - 设备IO端口
        cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
        cat /proc/partitions - 所有设备的所有分区
        cat /proc/pci - PCI设备的信息
        cat /proc/swaps - 所有Swap分区的信息
        cat /proc/version - Linux的版本号相当于 uname -r
        uname -a - 看系统内核等信息
        
92 ctrl+s与ctrl+q
   ctrl-s用来暂停向终端发送数据的,屏幕就象死了一样,可以用ctrl-q来恢复
   
93 pwd  --print working directory
    pwd -P  显示正式路径 而不显示外链路径
    
94 硬盘分区 fdisk
    #fdisk -l  查看硬盘个数及分区情况
    #fdisk -l  /dev/sda 查看单个硬盘情况
    #fdisk /dev/sda  分区操作
    
95 对分区进行格式化 用 mkfs.bfs mkfs.ext2 mkfs.jfs mkfs.msdos mkfs.vfatmkfs.cramfs mkfs.ext3 mkfs.minix mkfs.reiserfs mkfs.xfs 等命令来格式化分区
    # mkfs.ext3 /dev/sda6 格式化 sda6为ext3文件系统
    
96 挂载目录 mount
  # mkdir /mnt/sda6
  # mount /dev/sda6 /mnt/sda6
    # df -lh
        Filesystem 容量 已用 可用 已用% 挂载点
        /dev/hda8 11G 8.4G 2.0G 81% /
        /dev/shm 236M 0 236M 0% /dev/shm
        /dev/hda10 16G 6.9G 8.3G 46% /mnt/hda10
        /dev/sda6 191M 5.6M 176M 4% /mnt/sda6
        这样我们就能进入 /mnt/sda6目录,然后存取文件了
        
97 如何重启后保存mount结果
   #vi /etc/fstab 输入以下
     文件系统(可以是卷标)  挂载点                  文件系统类型  文件系统类型    挂载参数(一般俩零就行了)
     /dev/sdb3               /mnt/sdb                ext3          defaults        0 0

98 开机启动可执行的文件
    /etc/rc.local (常用)  
    /etc/rc.init
        /etc/rc.sysinit
        /etc/inittab
        /etc/profile
        
99 chkconfig  如何增加一个服务:
        1.服务脚本必须存放在/etc/ini.d/目录下;
        2.chkconfig --add servicename
            在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
        3.chkconfig --level 35 mysqld on
            修改服务的默认启动等级。
        4.#chkconfig --list  查看所有
    
101 service 用于对系统服务进行管理
   #service mysqld status   查看运行状态
   #service mysqld stop     停止服务
   #service mysqld start    启动服务
   #service mysqld restart  重启服务
   
100 lsof -i:80     查看端口对应的进程和程序
   #lsof -i:3306
   COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
    mysqld  3706 mysql  10u  IPv4   9581      TCP  *:mysql (LISTEN)
    
101 lsmod——显示已载入系统的模块

102 tree 树形结构显示文件夹 Linux的目录进行遍历

103 查看Linux的启动信息 dmesg

104 硬盘命名:
            IDE硬盘:hd hda hdb hdc hda1 hda2 hda3
            SCSI硬盘(SATA硬盘、USB移动硬盘):sd    sda sda2
            
105 改变字符集
    #vi /etc/sysconfig/i18n
    LANG="en_US.UTF-8"
    
106 /bin /usr/bin  /usr/local/bin 所有用户可执行命令 binary
    /sbin /usr/sbin 只有 root可以使用命令 (super binary)
    
107 #umask 查看默认权限
    0022
    0-代表特殊权限,默认为空
    022-代表默认权限掩码 (777-022=755 rwxr-xr-x)
    
108 #which  //显示系统命令所在的目录(同 whereis【whatis】)
109 查看用户名是否被禁用
    #passwd -S 用户名 
            Password set,MD5 crypt.
            Empty password.
            Password locked.
            
110 查看用户隶属于哪些用户组
    #id  dianjianlu
       uid=10007(dianjianlu) gid=10007(dianjianlu) groups=10007(dianjianlu)
111 kill
        kill PID 关闭进程 (默认信号 15kill -9 PID 强行关闭进程
            kill -1 PID 重启
            xkill 关闭图形程序 点击左键,取消右键
            killall 进程名 //关闭的有进程
            pkill 进程名 关闭进程

112 pgrep 查看进程 PID
      pgrep mysql
      
113 查看日志中出现最多次数 uniq -c
 #tail -n 1000 apitest-access.log|awk {print $1}|sort|uniq -c
 #awk {print $1} apitest-access.log|sort|uniq -c|sort -n -r -k 1|head  #查看日志中出现最多次数的ip
 
114 hosts.deny  hosts.allow  用于允许和禁止指定ip访问服务
   /etc/hosts.allow  
     加入 
     sshd:192.168.1.2
     sshd:192.168.9.51
  /etc/hosts.deny
     加入  sshd:all
  表示 只允许 ip为 192.168.1.2192.168.9.51 登陆到sshd

115 /etc/sysconfig/iptables 

    #iptables -I INPUT -s 192.168.38.174 -j DROP //屏蔽单个ip禁用指定ip
    #iptables -I INPUT -s 192.168.38.0/100 -j DROP //屏蔽某段ip
    
    
    # iptables -F        清除预设表filter中的所有规则链的规则
    # iptables -X        清除预设表filter中使用者自定链中的规则
    
    删除所有的 INPUT FORWARD OUTPUT
    #iptables -P INPUT DROP
        #iptables -P FORWARD DROP
        #iptables -P OUTPUT DROP
        
        删除指定规则
         iptables -L -n --line-number  //获取规则号
         iptables -D INPUT 2  通过规则号删除规则
         
        只打开22端口
        #iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    #iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
    
    
    查看端口是否添加成功
     iptables -L -n 
     
        保存更改 
        service iptables save 
        
116 解决主机不能访问虚拟机CentOS中的web站点 
    虚拟机上装好了centos5.5,并配好了nginx+php+mysql,但是本机就是无法访问。
        具体情况如下
        1.本机能ping通虚拟机
        2.虚拟机也能ping通本机
        3.虚拟机能访问自己的web
        4.本机无法访问虚拟己的web
        
        后来发现是防火墙将80端口屏蔽了的缘故。
        
        检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试。
        
        解决方法如下:
        /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
        然后保存:
        service iptables save
        重启防火墙
        service iptables restart
        
117 linux 直接操作mysql 
     mysql -udianjianlu -pnopass.2 -e "use el_agency;select username from tbl_user limit 1"
     
118 ` ` 使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数
    例如:
    # rm -i `find ./ -size 0` 删除为空的文件
    #tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` 把过去24小时变化了的文件打包
    
119 在Linux中1代表标准输出,2代表标准错误
    #ls -al 1> list.txt 2> /dev/null  将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃!  /dev/null 黑洞

120 &&
       命令1 && 命令2:如果这个命令执行成功&&那么执行这个命令
       例如:$mv /apps/bin /apps/dev/bin && rm -r /apps/bin
    ||
       命令1 || 命令2:如果这个命令执行失败了 || 那么执行这个命令
       例如:$cp test.sql test.bak || echo "errors occured during coping file"
       
121 strace 调试跟踪
    strace -o output.txt -T -tt -e trace=all -p 28979
    strace -o output.txt httpd
    
122 获取时间戳   date +%s
123 调试 shell
    #sh [-nvx] script.sh
    -n 不要执行脚本  仅检查语法
    -v 执行脚本前将脚本输出到屏幕
    -x 将使用的脚本输出到屏幕(很有用)
    
124 sudo su  将普通用户提升到拥有root权限(需要在/etc/sudoers 文件中添加上该用户)
   例如:
    #vi /etc/sudoers  
    添加 dianjianlu  ALL=(ALL)       ALL   //将dianjianlu设置为完全可用

   先用dianjianlu的账号密码登陆  然后执行  #sudo su  即可

125 /etc/nologin
  禁止普通用户登陆 /etc/nologin 文件中的内容将会显示给用户,会一闪而过。例如,按如下方式创建 nologin 文件:
    disable login by admin temperarily!当用户试图登陆时,将会给用户显示"disable login by admin temperarily!",当系统维护结束以后,再删除/etc/nologin文件,其他用户就又可以恢复登陆了
    
126 fuser
    fuser能识别出正在对某个文件或端口访问的进程,它会把正在使用当前文件的进程id列出
    fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程
    [root@localhost lhd]# fuser /
      /:                       1rc     2rc     3rc     4rc     5rc     6rc     7rc    80rc    82rc    84rc    85rc   153rc   157rc   158rc
                               1788rc  1806r  1808r  1810rc  1811rc  1812rc  1813rc  1814rc  1815rc  1848rc  1886rc  1899rc  1900rc  2001rc 
                               ......太多不一一列出

      说明:
      这些进程号后面的rc是什么意思?
      
      c 将此文件作为当前目录使用。 
      e 将此文件作为程序的可执行对象使用。 
      r 将此文件作为根目录使用。 
      s 将此文件作为共享库(或其他可装载对象)使用
      
127 tee
    tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中
    我们可以把输出重定向到文件中,比如 ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了
    [root@web ~]# cat 1.txt | tee 3.txt 5.txt #将1.txt中的内容输出到显示器并同时写入3.txt 5.txt
            1
            2
            3
            4
            5
            
128 find中的-print0和xargs中-0的奥妙
    让 find 在打印出一个文件名之后接着输出一个 NULL 字符 (‘‘) 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符. 这就是 find 的 -print0 和 xargs 的 -0 的来历
    例如
    #find /root -print0
    返回 /root/pengtest/CRBT/wang.txt/root/pengtest/CRBT/su.txt/root/pengtest/CRBT/new.txt
    #du -sb /root/pengtest/CRBT/wang.txt/root/pengtest/CRBT/su.txt/root/pengtest/CRBT/new.txt  #报错
    #du -sb /root/pengtest/CRBT/wang.txt /root/pengtest/CRBT/su.txt /root/pengtest/CRBT/new.txt #以空格分隔多个文件运行成功 
     返回
    123 /root/pengtest/CRBT/wang.txt
    345 /root/pengtest/CRBT/su.txt
    56  /root/pengtest/CRBT/new.txt
    
    同理 使用 -print0和xargs中-0
    #find /root -print0 |xargs -0 du -sb
    返回
    123 /root/pengtest/CRBT/wang.txt
    345 /root/pengtest/CRBT/su.txt
    56  /root/pengtest/CRBT/new.txt
    
129  发送邮件sendEmail
    1. 安装sendEmail
        # cd /u01/software/nagios
        # wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
        # tar -zxvf sendEmail-v1.56.tar.gz && cd sendEmail-v1.56
        # cp sendEmail /usr/local/bin
        # chmod 0755 /usr/local/bin/sendEmail
        2 发送测试
        #sendEmail -f wangxusummer@163.com -t xu.wang@corp.elong.com -s mta1.corp.elong.com -u "nagios" -m "nagios test"
        
130 iostat  磁盘IO
   iostat工具查看进程IO请求下发的数量、系统处理IO请求的耗时
   iostat -x 1 10
   avg-cpu:  %user   %nice    %sys %iowait   %idle
  0.00       0.00     0.25    33.46    66.29
  Device:    rrqm/s  wrqm/s   r/s    w/s     rsec/s   wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
  sda          0.00    0.00      0.00   0.00    0.00    0.00         0.00     0.00     0.00           0.00    0.00    0.00   0.00
  sdb          0.00   1122  17.00  9.00  192.00 9216.00    96.00  4608.00   123.79   137.23 1033.43  13.17 100.10
  sdc          0.00    0.00     0.00   0.00     0.00     0.00      0.00     0.00     0.00             0.00    0.00      0.00   0.00

   %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
  idle小于70% IO压力就较大了,一般读取速度有较多的wait
   
131 redis 大量数据的插入处理
      #vi data.txt  输入:
          SET Key0 Value0
          SET Key1 Value1
           ...
          SET KeyN ValueN
      #cat data.txt | redis-cli --pipe
      
132 yum命令执行报错(python升级导致)
    解决方案:
    [root@localhost ~]# which yum
        /usr/bin/yum
        [root@localhost ~]# vi /usr/bin/yum
        
        将
        #!/usr/bin/python
        改为:
        #!/usr/bin/python2.4(原老版本)

133 查看TCP并发连接数
   # netstat -an | awk /^tcp/{ A[$NF]++} END{ for (a in A) print a, A[a]}
   解析:
            CLOSED  //无连接是活动的或正在进行
            LISTEN  //服务器在等待进入呼叫
            SYN_RECV //一个连接请求已经到达,等待确认
            SYN_SENT //应用已经开始,打开一个连接
            ESTABLISHED //正常数据传输状态/当前并发连接数
            FIN_WAIT1 //应用说它已经完成
            FIN_WAIT2 //另一边已同意释放
            ITMED_WAIT //等待所有分组死掉
            CLOSING //两边同时尝试关闭
            TIME_WAIT //另一边已初始化一个释放
            LAST_ACK //等待所有分组死掉
            
134 dig  查看域名解析情况
    #dig  api.elong.com
    
135 修改DNS
    #vi /etc/resolv.conf
    
136 diff
    # diff -ruNa dirc1 dirc2   //比较文件夹中的不同文件
       -r  比较子目录中的文件
       -u   以合并的方式来显示文件内容的不同
       -N   在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
       -a   逐行比较文本文件
       -y   以并列的方式显示文件的异同之处
    #diff file1 file2  -y   //比较两个文件中得内容不同处
    
137 通过进程名查端口
    #ps aux |grep "svn"   获取到进程号pid  比如4939
    root      4939  0.0  0.1 165052  1076 ?        Ss   14:56   0:00 svnserve -d -r /opt/svn/repos

    #netstat -nap |grep 4939  通过pid 查找端口
    tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      4939/svnserve

138 相反 通过 端口查进程 
    #lsof -i:3690
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    svnserve 4939 root   3u   IPv4  21988      0t0  TCP *:svn (LISTEN)
    
139 Linux下查看连接数    用以下命令可以看到对方的连接数
    #netstat -ntu | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -n
    
140 跟踪进程 strace -p 10747
141 #echo *  以串行顺序打印当前整个目录列表
142 在防火墙级限制每个IP的连接数
        下面的例子会阻止来自一个IP的60秒钟内超过15个连接端口80的连接数。
        
        #/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –set
        #/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60  –hitcount 15 -j DROP
        #service iptables save
        
143 vi强制退出  :q!
144 查看crontab执行情况
    tail -f /var/log/cron
145 crontab 执行顺序
            cmd1;cmd2 :不管cmd1执行的结果如何,都执行cmd2
            cmd1 && cmd2:只有cmd1执行返回的结果是成功的,才执行cmd2
            cmd1 || cmd2 表示 cmd1 返回结果为假时就执行 cmd2
146 重启crontab
        $/sbin/service crond restart
        
147 查看内存使用情况
    ps -aux
    top
    free 
    
148 当前网络流量--需安装sysstat 一般会自带
    # sar -n DEV -u 1 10 每秒1次 连续10次
    04:02:30 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
        04:02:35 PM       all     41.46      0.00      4.90      0.00      0.00     53.65
        
        04:02:30 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
        04:02:35 PM        lo    339.48    339.48  58370.14  58370.14      0.00      0.00      0.00
        04:02:35 PM      eth0    257.52    210.22  37945.29 112858.12      0.00      0.00      0.00
        04:02:35 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
        04:02:35 PM      eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00
        04:02:35 PM      eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
        04:02:35 PM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
        
   结论:在所有的显示中,我们应主要注意%iowait和%idle,
   %iowait的值过高,表示硬盘存在I/O瓶颈,
   %idle值高,表示CPU较空闲,
   如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
   %idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU
   
149 md5sum 
    -b 以二进制模式读入内容
    -t 以文本模式读入文件内容进行校验
    
150 进程 端口互查
    #netstat -anp|grep XXX  XXX可以是端口,也可以是进程名称
    
151 添加自定义脚本到开机自启动
     写一个脚本auto_coreseek.sh
     放到/etc/init.d/auto_coreseek.sh
       然后chmod +x /etc/init.d/auto_coreseek.sh
       然后加到开机启动中:hkconfig --add auto_coreseek.sh
       ok
       
152 shell中如何注释一段代码 使用:<<BLOCK
    :<<BLOCK
        BINARY_MYSQL_PATH="$ROOT_PATH"/binary/mysql
        if [ ! -d "$BINARY_MYSQL_PATH" ]
        then
             mkdir -p $BINARY_MYSQL_PATH
        fi
        BLOCK
        
153 安装软件报错 :/lib/ld-linux.so.2: bad ELF interpreter安装软件:/lib/ld-linux.so.2: bad ELF interpreter
    原因:是因为64位系统中安装了32位程序
    
154 python -m SimpleHTTPServer 8001  
    以http方式共享当前文件夹的文件 可实现跨平台文件传输
    浏览器中输入 http://ip:8001  显示所有文件列表 下载即可 
    
155 sudo !!  
    以 root 帐户执行上一条命令。
    
156 ^foo^bar
    将上一条命令中的 foo 替换为 bar,并执行。
    
157 cp filename{,.bak}
    快速备份或复制文件。
    
158 ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
    把 Linux 桌面录制为视频
    
159  ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问
      在192.168.42.142机器上
            1)运行:#ssh-keygen -t rsa
            2)然后拍两下回车(均选择默认)
            3)运行: #ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.42.163
            4)再输入163机器上的root密码
            此时,再ssh 到163机器,则不需要密码了。相互之间scp,也不需要密码
            
169 alias 永久保存 ~/.bashrc
    #vi ~/.bashrc     加入alias 
    #source ~/.bashrc 立即生效
    
170 .sh文件总是提示permission denied
            chmod 777 *.sh
             or
            chmod +x  *.sh
            
171 traceroute  计算机到互联网另一端的主机是走的什么路径 追踪数据包所经过的网关 Windows系统下是执行tracert的命令

    [root@localhost ~]# traceroute www.baidu.com
            traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
             1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
             2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
             3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
             4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
             5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
             6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
             7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
             8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms
             9  * * *
            30  * * *
            [root@localhost ~]# 
            
172 nohup 如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令
    #nohup /usr/www/gopro/gopath_1/bin/ihotel --port 9999 >>/usr/www/gopro/gopath_1/bin/log.file 2>&1 & 
    标准错误(2) 重定向到标准输出中(1),而标准输出又追加导入文件log.file里面 所以结果是标准错误和标准输出都导入文件log.file里面了


173 $? 上一次命令执行完成之后的状态返回值,位0表示成功,不为0表示失败
tar czvf  all.gz /etc/*.conf 
if [ $? -eq 0 ];then
  action
fi

174 unzip  -o:不提示的情况下覆盖文件
175 svn 客户端处理
   1 新建文件夹 #mkdir /data
   2 #cd /data
   3 添加用户wheel组权限 #sudo chown -R user:wheel .  
   4 svn up —username xu.wang

176 shell获取命令行参数的方法 内部参数 :
$0 ----- 当前程序的名称,实际上是一个内部参数,不同于$1,$2....因为它必须有!
$# ---- 传递给程序的总的参数数目,也就是那个传说中的数组大小
$? ---- 上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ---- 传递给程序的所有参数组成的字符串。
$@---- 以"参数1" "参数2" ... 形式保存所有参数
$$ ---- 本程序的(进程id号)pid
$! ---- 上一个命令的pid


177 查看每个IP多少个连接数
    #netstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n
      5 192.168.79.17
      6 121.40.142.3
     13 194.153.190.139
     68 127.0.0.1
    109 192.168.79.25
    348 172.21.20.75

178 tar exclude 
    #tar -czf  des.tar.gz  a  –exclude a/b –exclude a/c  有目录a, 下面多个文件并有目录b和c,只打包文件而不想打包两目录

179 Centos Linux安装Apache Benchmark, AB压力测试工具
     #yum install httpd-tools

180 Comm 该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件
    选项1、2或3抑制相应的列显示。例如
    $comm - 12就只显示在两个文件中都存在的行;
    $comm - 23只显示在第一个文件中出现而未在第二个文件中出现的行;
    $comm - 123则什么也不显示。
    
181 taskset 使用taskset命令来限制进程的CPU
     taskset -cp 1,2  25718 #将进程id 25718 分配到1和2号cpu上
     taskset -cp 3  25720   #将进程id 25720 分配到3号cpu上

182 tcpdump linux抓包命令
    #tcpdump tcp port 5302
    #tcpdump tcp host 102.168.1.100  //截获来自和发往主机102.168.1.100的所有报文数据。
    #tcpdump src host 102.168.1.100   //截获来自主机 102.168.1.100的所有报文数据
    #tcpdump -i eth0 -A -s 3000 port 3306  抓取发送到服务器端的sql
    # tcpdump -i eth0 -s 3000 port 3306 -w ~/sql.pcap     //可用wireshark 打开sql.pcap 分析
    
   
    -A 以ASCII格式打印出所有分组,并将链路层的头最小化。向mysql服务端传输的sql语句就是以ASCII码形式进行传输。我们就可以使用-A参数查看传输的具体sql语句。
    -i 指定监听的网络接口。
    -s 设置读取数据包的长度,而不是默认的68个字节
    
183 将stdout和stderr合并:&>             如果你想将正确信息和错误信息合并,且输出到同一个文件,可以使用&>符号
       将stdout和stderr分离:         >和2>      stderr表示标准错误输出,代码为2

184 系统环境配置文件
      /etc/profile           是系统整体的设置,每个用户共享,最好不要修改
      ~/.bash_profile    属于单个用户的设置,每个用户设置后,互不影响和共享
      
185 pstree -p 显示进程树
init(1)─┬─atd(1361)
        ├─auditd(1039)───{auditd}(1040)
        ├─crond(1345)
        ├─cupsd(1102)
        ├─dbus-daemon(1086)
        ├─dhclient(976)
        ├─mingetty(1374)
        ├─mingetty(1376)
        ├─mingetty(1378)
        ├─mingetty(1380)
        ├─mingetty(1385)
        ├─mingetty(1387)
        ├─mysqld_safe(1166)───mysqld(1355)─┬─{mysqld}(1389)
        │                                  ├─{mysqld}(1390)
        │                                  ├─{mysqld}(1391)
        │                                  ├─{mysqld}(1392)
        │                                  ├─{mysqld}(1393)
        │                                  ├─{mysqld}(1394)
        │                                  ├─{mysqld}(1395)
        │                                  ├─{mysqld}(1396)
        │                                  ├─{mysqld}(1397)
        │                                  ├─{mysqld}(1398)
        │                                  ├─{mysqld}(1400)
        │                                  ├─{mysqld}(1401)
        │                                  ├─{mysqld}(1402)
        │                                  ├─{mysqld}(1403)
        │                                  └─{mysqld}(1404)
        ├─nginx(1140)───nginx(1145)
        ├─php-fpm(1130)─┬─php-fpm(1131)
        │               └─php-fpm(1132)
        ├─rsyslogd(1064)─┬─{rsyslogd}(1065)
        │                ├─{rsyslogd}(1067)
        │                └─{rsyslogd}(1068)
        ├─sendmail(1309)
        ├─sendmail(1317)
        ├─sshd(1152)─┬─sshd(6415)───bash(6417)───redis-server(23173)─┬─{redis-s+
        │            │                                               └─{redis-s+
        │            ├─sshd(6458)───bash(6460)
        │            ├─sshd(23762)───bash(23764)───pstree(23925)
        │            └─sshd(23837)───bash(23839)
        └─udevd(384)─┬─udevd(1383)
                     └─udevd(1384)

186 su root  切换用户
    su wangxu
    
187 输出带颜色的字体
    echo -e " \e[0;32mHelloWorld\e[0m"
    
    输出绿色的HelloWorld  32 表示颜色

188 linux 自带  time   粗糙测速
    $time php action.php
    
    real    0m8.741s
    user    0m0.021s
    sys     0m0.005s

189 rsync  增量备份
         $rsync -av  ./aa/ ./bb/  
           -a 归档模式,表示以递归方式传输文件,并保持所有文件属性  
           -v详细模式输出
        Rsync的命令格式可以为以下六种: 
  rsync [OPTION]... SRC DEST 
  rsync [OPTION]... SRC [USER@]HOST:DEST 
  rsync [OPTION]... [USER@]HOST:SRC DEST 
  rsync [OPTION]... [USER@]HOST::SRC DEST 
  rsync [OPTION]... SRC [USER@]HOST::DEST 
  rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 
  对应于以上六种命令格式,rsync有六种不同的工作模式: 
  1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -av /data /backup 
  2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src 
  3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data 
  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack 
  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www 
  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www 

190 tar.xz 解压方式
         $xz -d ***.tar.xz
         $tar -xvf  ***.tar
         
191 当前用户的执行级别
        $who -r
        $runlevel
        
192 curl ifconfig.me  查看外网ip
193 查看使用最多的前10条命令
[root@localhost ~]# history | awk ‘{D[$2]++;count++;} END { for (i in D )print D[i] " " D[i]/count*100 "% " i }‘ | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10       

194 error: command ‘gcc‘ failed with exit status 1 的解决办法
yum install gcc python-devel

195 Linux系统改变ls文件和文件夹颜色方法  
[root@localhost www]# vi /etc/DIR_COLORS

件内设定的“DIR 01;34”,为ls命令的目录的颜色设置,01表示粗体,34表示字体蓝色。
改成“DIR 01;37;44”,37是字体白色,44是字背景蓝色。

31 = red
32 = green
33 = orange
34 = blue
35 = purple
36 = cyan
37 = grey
40 = black background
41 = red background
42 = green background
43 = orange background
44 = blue background
45 = purple background
46 = cyan background
47 = grey background
90 = dark grey
91 = light red
92 = light green
93 = yellow
94 = light blue
95 = light purple
96 = turquoise
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background

之后执行:
[root@localhost www]# eval `dircolors /etc/DIR_COLORS`


196 CentOS更改yum源与更新系统
    备份/etc/yum.repos.d/CentOS-Base.repo
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    
    进入yum源配置文件所在文件夹
    [root@localhost yum.repos.d]# cd /etc/yum.repos.d/
    
    下载163的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份)
    [root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
    
     运行yum makecache生成缓存
    [root@localhost yum.repos.d]# yum clean all
    [root@localhost yum.repos.d]# yum makecache
    
    更新系统
    [root@localhost yum.repos.d]# yum -y update

197 ps_mem 查看进程对应的个数及内存

    [root@localhost ~]# ps_mem
     Private  +   Shared  =  RAM used       Program
    
    212.0 KiB +  36.5 KiB = 248.5 KiB       atd
    348.0 KiB +  44.5 KiB = 392.5 KiB       auditd
    284.0 KiB + 160.5 KiB = 444.5 KiB       mysqld_safe
    492.0 KiB +  39.5 KiB = 531.5 KiB       dbus-daemon
    612.0 KiB +  19.5 KiB = 631.5 KiB       dhclient
    488.0 KiB + 165.0 KiB = 653.0 KiB       mingetty (6)
    648.0 KiB +  51.5 KiB = 699.5 KiB       crond
    700.0 KiB +  83.0 KiB = 783.0 KiB       init
    996.0 KiB +  67.5 KiB =   1.0 MiB       rsyslogd
    292.0 KiB + 772.5 KiB =   1.0 MiB       udevd (3)
      1.8 MiB + 254.5 KiB =   2.0 MiB       cupsd
      1.8 MiB + 878.0 KiB =   2.7 MiB       bash (4)
      3.1 MiB + 436.0 KiB =   3.5 MiB       sendmail.sendmail (2)
      6.8 MiB +  71.5 KiB =   6.9 MiB       redis-server
      4.7 MiB +   2.7 MiB =   7.4 MiB       sshd (5)
      4.3 MiB +   5.0 MiB =   9.2 MiB       php-fpm (3)
     12.7 MiB + 919.5 KiB =  13.6 MiB       python
     32.6 MiB + 746.5 KiB =  33.3 MiB       nginx (2)
     38.1 MiB + 115.5 KiB =  38.2 MiB       mysqld
    ---------------------------------
                            123.3 MiB
    =================================
    

198 监控网卡流量 
    方法1
    [root@localhost ~]#watch more /proc/net/dev
    /proc/net/dev
    ::::::::::::::
    Inter-|   Receive                                                |  Transmit
     face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
        lo: 1907572    2830    0    0    0     0          0         0  1907572    2830    0    0    0     0       0          0
      eth0:50138007  414754    0    0    0     0          0         0  9751350   25608    0    0    0     0       0          0
      
      
    [root@localhost ~]#cat /proc/net/dev | grep eth0 | tr : " " | awk ‘{print "RX-" $2}‘
    RX-51884897
    [root@localhost ~]#cat /proc/net/dev | grep eth0 | tr : " " | awk ‘{print "TX-" $10}‘
    TX-10072495

    方法2
    [root@localhost ~]# watch ifconfig
    Every 2.0s: ifconfig                                                                                                      Wed Sep 23 01:13:23 2015
    
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:8D:FD:FF
              inet addr:192.168.11.201  Bcast:192.168.11.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe8d:fdff/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:415308 errors:0 dropped:0 overruns:0 frame:0
              TX packets:25623 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:50190845 (47.8 MiB)  TX bytes:9754292 (9.3 MiB)
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:2830 errors:0 dropped:0 overruns:0 frame:0
              TX packets:2830 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:1907572 (1.8 MiB)  TX bytes:1907572 (1.8 MiB)
    主要观察 RX 接收 TX发送 (packets数据包数|bytes字节数)
    方法3 ifstat
    方法4 sar
    方法5 iftop
    方法6 iptraf

199 redis模糊批量删除
     [root@localhost ~]# redis-cli -h 192.168.11.12 -n 1 keys "*city*" |xargs -n 1 redis-cli -n 1 -h 192.168.11.12 DEL
     
200  echo  -e 处理特殊字符  echo -n 不换行输出
[root@localhost ~]# echo  -e  "\t RX `date +%k:%M:%S`"
         RX  1:40:54
[root@localhost ~]# echo   "\t RX `date +%k:%M:%S`"
\t RX  1:40:45

200 tee - 重定向输出到多个文件
[root@localhost ~]# php test.php |tee ./aa.txt |tee -a ./bb.txt >./cc.txt   # -a 追加到文件

201 mkpasswd 系统自带的密码生成器 
[root@centos6 game-dir]# 

zas4Ery+5K8l

-l  #      (length of password, default = 7)指定密码的长度,默认是7位数
-d #      (min # of digits, default = 2)指定密码中数字最少位数,默认是2位
-c #      (min # of lowercase chars, default = 2)指定密码中小写字母最少位数,默认是2位
-C #      (min # of uppercase chars, default = 2)指定密码中大写字母最少位数,默认是2位
-s #      (min # of special chars, default = 1)指定密码中特殊字符最少位数,默认是1位


202 flock 加锁
flock -xn ./test.lock -c "sh /root/test.sh"  #-n 非阻塞模式
 #test.lock 是随便建立的锁文件  加上锁后 执行后面 -c中的命令 在执行过程中 再次运行flock -xn ./test.lock -c "sh /root/test.sh"  获取锁失败 返回 直到上一个命令运行完毕解锁后才能运行
 可用于 crontab
 
flock命令防止crontab重复执行
* * * * * (flock -xn ./test.lock -c "sh /root/test.sh")

 

linux常用

标签:

原文地址:http://www.cnblogs.com/wangxusummer/p/4955316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!