•  

    熟记以下快捷键,将极大的提高你的命令行操作效率。(LinuxTOY http://linuxtoy.org/archives/bash-shortcuts.html)

     

    编辑命令

    Ctrl + a :移到命令行首
    Ctrl + e :移到命令行尾
    Ctrl + f :按字符前移(右向)
    Ctrl + b :按字符后移(左向...
  • shell经典命令

    日期:2011-06-15 | 分类:shell

     

    查看 apache 的进程数( prefork 模式下 Apache 的并发数)

    ps -ef | grep httpd | wc –l

    找出 cpu 利用率高的 20 个进程

    ps -e -o pcpu,pid,user,sgi_p,cmd |grep -v PID| sort -k 1| tail -20 

    时间同步

    sudo ntpdate ntp.ubuntu.com  或  ntpdate s1a.time.edu.cn  

    快速备份某文件

    cp keepalived.conf{,.bak}  将 keepalived.conf 备份 为 keepalived.conf.bak

    获得 mysql 用户下的进程总数

    ps -ef|awk '{print $1}'|grep "mysql"|grep -v "grep"|wc -l

    列举系统中已经被打开的文件命令 lsof

    #-c 显示 ssh 开头的命令打开的文件  

    lsof -c ssh 

        #-p 显示某进程打开的文件  

        lsof -p 5200 

        #+d 显示某目录下的打开文件 +D 显示某目录下的打开文件,包括子目录。  

        lsof +d /usr/local 

        lsof +D /usr/local 

        #-u 显示某用户打开的文件  

        lsof -u root 

        #-i 显示某协议, ip ,端口上打开的文件  

    lsof -i tcp@0.0.0.0:22 

    快速备份一个文件

    cp filename{,.bak}    快速备份一个文件, filename{,.bak} 这一段会被展开成 filename filename.bak 再传给 cp 。

    清空或创建一个文件

    > file.txt 

    重置终端

    reset    ,如果你试过不小心 cat 了某个二进制文件 , 很可能整个终端就傻掉了 , 可能不会换行 , 没法回显 , 大堆乱码之类的 , 这时候敲入 reset 回车 , 不管命令有没有显示 , 就能回复正常了。

    执行一条命令但不保存到 history 中

    command    空格加要执行的命令,执行一条命令但不保存到 history 中。

    显示当前目录中所有子目录的大小

    du -h --max-depth=1    显示当前目录中所有子目录的大小, max-depth 指目录级别。

    从 A 登陆到 B,登录到内网中方便使用

    ssh -t host_A ssh host_B    如果目标机器 host_B 处于比较复杂的网络环境 , 本机无法直接访问 , 但另外一台 host_A 能够访问到 host_B, 而且也能被本机访问到 , 那上述命令就解决了方便登录 host_B 的问题。

    ssh -p 8888 root@192.168.1.128

     scp 传输文件,从一台主机传输文件到另外一台机器

    scp  /root/bb/api.war root@192.168.1.128:/root/tools

    也可以一次传输多个目标。scp  /root/bb/api.war root@192.168.1.128:/root/tools root@192.168.1.151:/root/tools

    如果 ssh 默认端口修改为了 8888 使用下面

    scp -P 8888 /root/bb/api.war root@192.168.1.128:/root/tools

    将 my.cnf 中前面有 # 的行去掉

    more /etc/my.cnf |sed -n '/^#/!p'>my2.cnf

    ssh 执行远程的程序,并在本地显示

    ssh -p 22 -n -l root 192.168.1.128 "ls /root/tools"

    ssh -p 22 -n -l root 192.168.1.128 "rm -rf /root/tools/dovecot-1.2.16-1_114.el5.i386.rpm"

     

  •  

    插入单条数据
    [root@iknowing-test tools]# vi insertmysql.sh

    #!/bin/bash
    HOSTNAME="192.168.1.153"
    PORT="3306"
    USERNAME="root"
    PASSWORD="password"
    DBNAME="test_rp"
    TABLENAME="see"
    mysql -u$USERNAME -p$PASSWORD -h$HOSTNAME< use $DBNAME;
    insert into see(username) values('ff-bb.cn');
    select * from $TABLENAME;
    EOF


    插入1500条数据。
    通过while循环,插入1500条同样的数据
    [root@iknowing-test tools]# vi insertmanymysql.sh

    HOSTNAME="192.168.1.151"
    PORT="4040"
    USERNAME="root"
    PASSWORD="password"
    DBNAME="test_rp"
    TABLENAME="see"

    n=wname
    i=1
    while [ $i -lt 1500 ]
    do
    #echo "$n$i"
    #mysql -u$USERNAME -p$PASSWORD -h$HOSTNAME -P$PORT< mysql -uroot -p$PASSWORD -h$HOSTNAME -P$PORT -e "insert into test_rp.see(username,date) values('www.ff-bb.cn','1984-8-8');"
    i=`expr $i + 1`
    done