• linux笔记


     tar zcvf xxx.tar.gz  ./*  把当前目录下所有文件打包,也可以指定具体打包哪些文件
    
     du -h  查看当前文件夹的大小,也可以查看指定文件大小
    
    ip a 当前 ip
    
    
     rwx  r-x  r-x
    
    r     read     可读     4
    
    w    write    可写     2
    
    x     excute  执行     1
    
    -      没有权限         0
    ------------------
     find
    
    find / -name*文件名*             按文件名模糊查找
    
    find / -size +10M          按文件大小查找
    
    find / -size +100M |xargs ls -sh     按文件大小查找,可显示查找结果文件的大小单位
    
    其中|args是管道符,作用是把前面命令的执行结果交给后面的命令执行,把前面的结果作为后面命令的输入
    
    top     查看系统进程、CPU使用情况
    ------------------
    ========
    查找占用磁盘空间的大:(查找大文件)
    
    find / -type f -size +800M
    
    查看磁盘空间:
    
    df -hl :
    
    ======================================
    退出:q 或 ctrl + c
    
    ======
    
    服务脚本开机启动
    
    chkconfig aaa on
    
    关闭随开机启动
    
    chkconfig aaa off
    
    服务脚本:
    
    etc/rc[0~6].d其实是/etc/rc.d/rc[0~6].d的软连,主长度要是为长度了保持和Unix的兼容性才做此策
    
    =================
    
    if [ "$a" = "" ] 
    
    必须都有空格,注意:
    
    ==============脚本研究
    
    #!/bin/sh
    #chkconfig:2345 80 05if
    #description:aaa
    nohup java -jar /usr/local/ihr-services/service_onsiteresumedeal_jar/ihr-onsitemessdeal.jar >/guo/service.log 2>&1 &
    app_command="nohup java -jar /usr/local/java/serviceTest/ResumeTransmit_jar/ResumeTransmit.jar >/guo/service.log 2>&1 &"
    app_command="nohup java -jar /usr/local/ihr-services/service_resumemessdeal_jar/ihr-resumemessdeal.jar > /dev/null 2>&1 &"
    app_pidname="ResumeTransmit.jar"s
    
    pidlist=""
    
    start(){
    
      echo "$app_pidname 服务准备启动"
    
      su - root -c "$app_command"
    
    
      pidlist=`ps -ef|grep $app_pidname|grep -v "grep"|awk '{print $2}'`
    
      if ["$pidlist" = ""]
         then
            echo "$qpp_pidname 服务启动失败"
         else
            echo "$qpp_pidname 服务启动成功"
      fi
    }
    
    case $1 in
    
    start)
        cd /usr/local/java/serviceTest/ResumeTransmit_jar
        # nohup java -jar ResumeTransmit.jar >/guo/service.log 2>&1 &
        # java -jar ResumeTransmit.jar
         su - root -c "nohup java -jar /usr/local/java/serviceTest/ResumeTransmit_jar/ResumeTransmit.jar >/guo/service.log 2>&1 &"
        # su - root -c "java -jar /usr/local/java/serviceTest/ResumeTransmit_jar/ResumeTransmit.jar"
        echo "start";
    stop)
        pkill -9 ResumeTransmit
        echo "stop";;
    restart)
        echo "restart";
    *);
    esac
    
    ================for:
    author:zefeng.guo
    servicelist=`chkconfig --list |grep '^ihr-' |awk '{print $1}'`
    printf "33[33m%-26s %-9s %-10s  %-30s %-20s33[0m
    " 服务名  状态  进程ID 描述  服务路径
    for sl in $servicelist
      do
       sta=`service $sl status`
       des=`service $sl description`
       pat=`service $sl path`
       pidn=`service $sl pidnum`
       if [ "$sta" = "空命令" ]
         then
           printf "33[44m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sl $sta $pidn $des $pat
         elif [ "$pidn" = "" ]
         then
          printf "33[45m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sl $sta $pidn $des $pat
         else
           printf "33[32m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sl ${sta} $pidn $des $pat 
       fi 
     done
    
    =========
    
    ==创建linux服务脚本:/etc/rc.d/init.d添加 aaa
    
    #!/bin/sh
    
    #chkconfig:2345 80 05
    
    #description:aaa
    case $1 in
    start)
        echo "start";;
    stop)
        echo "stop";;
    restart)
        echo "restart";;
    *);;
    esac
    
    -----------------------------
    2.chmod u+x aaa
    3.chkconfig --add aaa
    4.chkconfig --list
    5.service aaa start
    6.service aaa stop
    
    =============================
    
    ========================配置服务随开机启动
    
    服务在打开之前配置
    
    service 服务名 on
    
    ================取消随开机启动
    
    service 服务名 off
    
    ================删除服务
    
    chkconfig --del 服务名:
    
    ==========linux tomcat随开机启动,tomcat自动启动,tomcat启动
    
    ================
    vi /etc/rc.local
    
    添加如下:
    touch /var/lock/subsys/local
    export JAVA_HOME=/usr/local/java/jdk1.8.0_51
    /usr/local/java/tomcat/tomcat8/bin/startup.sh start
    
    查看进程;
    ----------ps -aux;
    ps -aux;
    ----------查看进程所在目录:
    
    pwdx pid;
    
    类似物理的黑洞
    不产生日志:/dev/null 为虚拟存储,类似物理的黑洞:
    nohup java -jar /xxx/xxx/xxx.jar >/dev/null 2>&1 &
    ---指定其他目录:
    nohup java -jar /xxx/xxx/xxx.jar >/etc/a.log 2>&1 &
    后台运行:
    nohup java -jar  /usr/local/java/serviceTest/ResumeTransmit_jar/ResumeTransmit.jar &
    nohup java -jar  /usr/local/pangu/ResumeTransmit_jar2/ResumeTransmit.jar &
    /usr/local/java/serviceTest/ResumeTransmit_jar
    安装 nohup:
    yum install coreutils
    
    uname -a 查看linux环境:
    Linux QA-5-23 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
    
    
    重命名:mv a b;  
    
    即可;
    
    kibana多个条件搜索:AND
    
    -------catalina.out日志查找内容脚本
    
    tail -10000 catalina.out | grep 'job'
    tail -10000 catalina.out | grep '类别' --color=auto
    
    ---------------------------------------------------
    
    ps:将某个进程显示出来:
    -A  显示所有程序。 
    -e  此参数的效果和指定"A"参数相同。
    -f  显示UID,PPIP,C与STIME栏位。
    
    grep命令是查找
    中间的|是管道命令 是指ps命令与grep同时执行
    这条命令的意思是显示有关Apachejetspeed有关的进程
    UID PID PPID C STIME TTY TIME CMD
    各相关信息的意义。
    
    ----------------。
    
    linux修改本机别名/etc/hosts的hostName后经常不生效,此时有2种方案。
    
    1.查看linux机器名:hostname;
    2.修改linux名称;vi /etc/sysconfig/network
    3.reboot重启;
    
    重启,这是最直接最可靠稳定的一种方法,如果有些时候不方便重启,则可以使用第二种方法。
    
    修改/etc/sysconfig/network文件,将HOSTNAME修改成对应的别名,如下:
    
    
    NETWORKING=yes
    HOSTNAME=host1
        修改后重启网络服务
    
    service network  restart
    
    =====linux发送请求:
    curl -i -X HEAD "http://outofmemory.cn/"
    
    curl:使…卷曲:使卷起来
    
    -------
    
    -------
    
    curl http://www.baidu.com
    
    -------
    
    ====创建文件,一定要touch,或vi;别用ssh工具建立,可能编码有问题。尽量通过命令修改文本;
    
    ====远程copy文件到本地(需要输入密码)
    
    scp root@172.17.5.23:/usr/local/gzf/test /usr/local/gzftests
    
    sshpass -p 'zhaopin@123' scp  -o StrictHostKeyChecking=no -P22 root@172.17.5.23:/usr/local/gzf/ccc /usr/local/gzftest/ccc
    
    ====本地传递到远程:
    
    scp /usr/local/gzftest/ccc root@172.17.5.23:/usr/local/gzf/
    
    sshpass -p 'zhaopin@123' scp  -o StrictHostKeyChecking=no -P22 /usr/local/gzftest/ccc  root@172.17.5.23:/usr/local/gzf/
    
    =======================================
    
    =======================================
    
    shell命令拼接:
    
    #!/bin/sh
    
    
    #kill tomcat pid:
    
    
    
    guo="/usr/local/java/"
    
    touch ${guo}guo.txt
    
    ==========
    sshpass -p 'zhaopin@123' ssh -o StrictHostKeyChecking=no root@172.17.5.23 "sh /usr/local/gzf/test"
    sshpass -p 'zhaopin@123' ssh -o StrictHostKeyChecking=no root@172.17.5.23 "sh /usr/local/tomcat7/bin/shutdown.sh sh /usr/local/tomcat7/bin/startup.sh"
    
    sshpass -p 'e9c4a38f85' ssh -o StrictHostKeyChecking=no ftp15m@192.168.11.108 ""
    
    sshpass -p 'zhaopin@123' scp  -o StrictHostKeyChecking=no -P22 admin/build/libs/admin.war root@172.17.5.23:/usr/local/tomcat7/webapps/admin.war
    sshpass -p 'zhaopin@123' scp  -o StrictHostKeyChecking=no -P22 b-end/build/libs/b-end.war root@172.17.5.23:/usr/local/tomcat7/webapps/npin.war
    
    ==========jar包
    ==========-----------------------------
    创建空文件:
    
    touch /usr/local/tomcat7/gzf/guo.txt
    
    =======================================
    
    测试结果集:
    
    ===
    
    测试项目等:
    
    =========
    #!/bin/sh 
    pidlist=`ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'`
    tomcatDir="/usr/local/java/tomcat/tomcat8/"
    if [ "$pidlist" = "" ]
       then
           echo "no tomcat pid alive!"
    else
      echo "tomcat Id list :$pidlist"!
      kill -9 $pidlist
      echo "KILL $pidlist:"
      echo "service stop success"
    fi
    echo "start tomcat" 
    sh ${tomcatDir}bin/startup.sh
    tail -f ${tomcatDir}logs/catalina.out
    
    =============================查看tomcat线程ID:
    
    
     ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'
    
     =====kill tomcat
    
     ps -ef|grep tomcat
    
     kill -9 1234
    
    ===================================================================
    
    --sshpass远程连接主:
    
    $ sshpass -p password ssh -o StrictHostKeychecking=no username@host
    sshpass -p 'gzf' ssh root@192.168.44.129 "sh /usr/local/java/test.sh"
    sshpass -p 'gzf' ssh -o StrictHostKeyChecking=no root@192.168.44.129 "sh /usr/local/java/test.sh"
    sshpass -p 'zhaopin@123' scp  -o StrictHostKeyChecking=no -P22 admin/build/libs/admin.war root@172.17.5.23:
    sshpass -p 'zhaopin@123' ssh -o StrictHostKeyChecking=nojava/test.sh"
     root@172.17.5.23 "sh /usr/local/tomcat7/gzf/test"
    sshpass -p 'gzf' ssh root@192.168.44.129 "sh /usr/local/
    
    
    --远程执行shell脚本
    ssh -p22 root@192.168.44.129 'sh /ccc'
    ====查看tomcat进程:
    ps -ef |grep tomcat
    ====重启tomcat的脚本--------------------------------------------------
    #!/bin/sh
    #kill tomcat pid
    pidlist=`ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'`
    if [ "$pidlist" = "" ]
       then
           echo "no tomcat pid alive!"
    else
      echo "tomcat Id list :$pidlist"
      kill -9 $pidlist:
      echo "KILL $pidlist:"
      echo "service stop success"
    fi
    
    echo "start tomcat"
    cd /usr/local/tomcat/bin
    ./startup.sh;   tail -f ../logs/catalina.out
    ~                                                                                                                                   
    ~
    ========---------------------------------------------
    ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}
    
    ====编写shell脚:
    
    1.新建文件aa
    ------------------------
    #! / bin/sh
    echo "gzf"
    chmod +x aa
    ------
    chmod u+x aa
    或---------
    chmod +x aa
    -----------------有空格:
    . /aa执行即可;
    =============
    tomcat:
    cd /usr/local/java/tomcat/tomcat8/bin
    防火墙:
    vi /etc/sysconfig/iptables
    ===============================
    1.
    虚拟机 ctrl+alt释放光标:
    ifconfig -a
    cenos7中改为:查看ip:
    ip addr
    --查看当前目录
    
    --返回上级
    cd ..
    ----根目录:
    cd /
    ----:
    点击 键盘的 “Esc”  如果保存退出文件 就是 :wq  不保存退出 :q   不保存强制退出 :q!
    --开始编辑文件:
    vi 文件名;insert;进行编辑,换行,只能撤到行尾:
    --------------修改host:
    /etc vi hosts
    按esc结束编辑,u撤s销编辑;   (**)
    --------------修改网络:
     vi /etc/sysconfig/network
     -------------设置代理:
     vi /etc/profile
     ---使profile生效:(.后面有空格)
    . /etc/profile
     ------------------------------
    代理方式    变量名
    http代理    http_proxy
    https安全代理    https_proxy
    ftp代理    ftp_proxy
    不使用代理的IP    no_proxy
    ----重启网络
    service network restart
    ---------------安装wget命令:
     sudo yum -y install wget
    ---------------
    ctrl+c :wq保存
    pwd
    ----
    结束当前指令:ctrl+z;
    恢复到之前指令:fg (**)
    -----
    cd ~user1 进入个人的主目录 
    -------------------------------
    
    -------------------------------
    --安装tree:
    
    yum install tree
    :w 保存:
    :w filename 另存为filename:(**)
    :wq! 保存退出:
    :wq! filename 注:以filename为文件名保存后退出:
    :q! 不保存退出;
    :x 应该是保存并退出,功能和:wq!相同
    ---
    wget www.baidu.com
    --目录中查找某个文件:
    ls 文件名,ls *文件名*,名字中包含的文件:
    vi 文件名 #编辑方式查看,可修改
    cat 文件名 #显示全部文件内容
    文件和目录:
    cd /home 进入 '/ home' 目录' 
    cd .. 返回上一级目录 
    cd ../.. 返回上两级目录 
    cd ~user进入个人的主目录 
    cd - 返回上次所在的目录 
    pwd 显示工作路径
    ls 查看目录中的文件 
    ls -F 查看目录中的文件 
    ls -l 显示文件和目录的详细资料 
    ls -a 显示隐藏文件:
    ls *[0-9]* 显示包含数字的文件名和目录名 (***)
    tree 显示文件和目录由根目录开始的树形结构(1) 
    lstree 显示文件和目录由根目录开始的树形结构(2);
    mkdir dir1 创建一个叫做 'dir1' 的目录'
    mkdir dir1 dir2 同时创建两个目录 
    mkdir -p /tmp/dir1/dir2 创建一个目录树 (*************8)
    创建一个文件
    vi gzf.txt
    rm -f file1 删除一个叫做 'file1' 的文件' (**)
    rmdir dir1 删除一个叫做 'dir1' 的目录'   (**)(gzf:只能删除空目录)
    rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 ----------------***************移除目录:gzf,(目录里面有文件,是rm不是rmdir)
    rm -rf dir1 dir2 同时删除两个目录及它们的内容 
    mv dir1 new_dir 重命名/移动 一个目录 
    cp file1 file2 复制一个文件
    cp dir/* . 复制一个目录下的所有文件到当前工作目录 (.前面有空格gzf)  (gzf:不包含目录)
    cp -a /tmp/dir1 . 复制一个目录到当前工作目录 
    cp -a dir1 dir2 复制一个目录 ---------(所有的目录和文件)
    ln -s file1 lnk1 创建一个指向文件或目录的软链接(创建快捷方式)
    ln file1 lnk1 创建一个指向文件或目录的物理链接 
    touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) 
    file file1 outputs the mime type of the file as text 
    iconv -l 列出已知的编码 
    iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. 
    find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 
    
    --查询linux操作系统位数:
     getconf LONG_BIT
    linux包:包含:bin(需要手动配置),rpm、deb(自动配置)。gz
    RPM 是 Red Hat Package Manager 的缩写,软件包管理工具;
    移动一个文件到指定目录:
    mv /usr/local/java/jdk-8u51-linux-x64.gz /usr/local/mysoft
    
    Ubuntu:乌班图:Ubuntu
    
    -----linux安装jdk:
    http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html
    解压命令:tar xvf  jdk-7u71-linux-x64.tar.gz
    ==============jsp打压war包: (打包)
    找到应用目录:jar -cvf MyApp.war
    教程:
    1、解压缩刚才下载的: jdk-7u71-linux-x64.tar.gz包,命令如下:
    tar xvf  jdk-7u71-linux-x64.tar.gz:
    2、解压完成后,进入到解压目录
    [root@localhost~]# cd /etc
    [root@localhost etc]# vi profile
    在profile文件的末尾加入如下命令:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_51
    export JAVA_BIN=/usr/local/java/jdk1.8.0_51/bin
    export JRE_HOME=/usr/local/java/jdk1.8.0_51/jre
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    --不用加
    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    3、重新启动系统后,输入:java -version,如果看到如下截图说明jdk已经安装成功了。
    ---使profile生效:(.后面有空格)
    . /etc/profile
    -----卸载jdk:
    1.查看jdk版本
    rpm -qa|grep java  
    2.
    rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
    
    --查看当前系统语言版本:
    echo $LANG
    --安装中文语言包:
    yum groupinstall chinese-support
    --查看linux语言包
    locale
    --Another app is currently holding the yum lock
    rm -f /var/run/yum.pid
    --清除yum缓存:
    yum clean all:
    --清屏 clear:
    
    --w:查看连接用户:
    --查看linux版本:rpm -q centos-release
    --
    查看、卸载已安装的yum包
    查看已安装的yum包
    #rpm –qa|grep yum
    卸载软件包
    #rpm –e –nodeps yum
    
    --解压:
     1、*.tar 用 tar –xvf 解压 
     2、*.gz 用 gzip -d或者gunzip 解压 
     3、*.tar.gz和*.tgz 用 tar –xzf 解压 
     4、*.bz2 用 bzip2 -d或者用bunzip2 解压 
     5、*.tar.bz2用tar –xjf 解压
     6、*.Z 用 uncompress 解压
     7、*.tar.Z 用tar –xZf 解压 
     8、*.rar 用 unrar e解压 
     9、*.zip 用 unzip 解压
     /etc/bashrc
     --安装unzip 安装解压
     yum install -y unzip zip
     --执行sh没有权限
     chmod u+x *.sh
     ---时区:
     1. 查看当前时区
      date -R
      2. 修改设置时区
      方法(1)
      tzselect
      方法(2) 仅限于RedHat Linux 和 CentOS
      timeconfig
      方法(3) 适用于Debian
      dpkg-reconfigure tzdata
      3. 复制相应的时区文件,替换系统时区文件;或者创建链接文件
      cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
      在中国可以使用:
      cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
         系统默认: cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
    
    /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
     2.设置时间:(修改系统时间,修改时间)
     例如:将系统日期设定成2009年11月3日的命令
    
    命令 : "date -s 11/03/2009"
    
    将系统时间设定成下午5点55分55秒的命令
    
    命令 : "date -s 17:55:55"
    
    3.将当前时间和日期写入BIOS,避免重启后失效
    命令 : "hwclock -w"
    --查看日历:
     cal
    --查看tomcat日志:
    
    tail -f catalina.out 防火墙,cenos7默认:
    
    --linux查看tomcat无法访问,检查:
    
    配置防火墙并设置端口:
    
    一、配置防火墙,开启80端口、3306端口
    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
    1、关闭firewall:
    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    
    2.安装iptables防火墙
    yum install iptables-services #安装s
    vi /etc/sysconfig/iptables #编辑防火墙配置文件 Linux学习,http:// linux.it.net.cn
    # Firewall configuration written by system-config-firewall
    # Manual customization of this file is not recommended.
    *filter IT网,http://www.it.net.cn
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT
    :wq! #保存退出
    systemctl restart iptables.service #最后重启防火墙使配置生效
    systemctl enable iptables.service #设置防火墙开机启动
    --关闭防火墙
    systemctl disable iptables.service
    1) 永久性生效,重启后不会复原
    
    开启: chkconfig iptables on
    
    关闭: chkconfig iptables off
    
    2) 即时生效,重启后复原
    
    开启: service iptables start
    
    关闭: service iptables stop
    
    注:防火墙的基本操作命令:
    查询防火墙状态:
    
    [root@localhost ~]# service   iptables status<回车>
     
    停止防火墙:
    [root@localhost ~]# service   iptables stop <回车>
     
    启动防火墙:
    [root@localhost ~]# service   iptables start <回车>
     
    重启防火墙:
    [root@localhost ~]# service   iptables restart <回车>
     
    永久关闭防火墙:
    [root@localhost ~]# chkconfig iptables off<回车>
     
    永久关闭后启用:
    [root@localhost ~]# chkconfig   iptables on<回车>
    
    yum设置代理:yum代理:
    
    vi /etc/yum.conf
    
    --
    proxy=http://192.168.20.6:3128
    
    proxy=ftp://192.168.20.6:3128
    
    =================================
    
    ====安装wget;
     sudo yum -y install wget
     ==make安装gcc
     yum -y install gcc
     ====安装ifconfig,netstat
     yum install net-tools
     ====
    
     ====
    #检测后台进程是否存在
    ps -ef |grep redis
    --查看端口占用进程:
     lsof -i|grep :6379
    --结束进程(-9:信号量):kill -9 pid
    kill -9 2070
    kill -9 29884
    --这样关掉ssh也没问题的:
    #加上`&`号使redis以后台程序方式运行
    ./redis-server &
    ----列出所有keys:
    keys *
    -------------------------------
    #检测6379端口是否在监听
    netstat -lntp | grep 6379
    -------------------------------安装sshpass
    
    shell 中使用 ssh 连接  
    
    2010-03-30 22:09:05|  分类:shell脚本|字号 订阅
    
    【整理人:张子萌 2010-03】
    
    ssh服务是不能用非交互的方式传递密码
    下载地址:
    http://sourceforge.net/projects/sshpass/
    
    具体安装步骤如下:
    # wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.04/sshpass-1.04.tar.gz?use_mirror=cdnetworks-kr-1
    # tar zxvf sshpass-1.04.tar.gz 
    # cd sshpass-1.04
    # ./configure 
    # make && make install
    
    sshpass为C编写的一个小程序使用比较简单,用法如下
    
      sshpass  -p 密码 ssh 用户名@目标IP 要执行的命令
    
    此处密码为明文。sshpass也可以使用密码文件。具体可以通过‘sshpass -h’看看帮助。
    
          对于密码安全问题,如使用密码文件可以将文件权限修改为600。如果直接写在shell中,可以使用加密脚本的
    
    工具,缺点是每次修改都要编译脚本。
    -------或者这样安装:
    tar zxvf sshpass-1.05.tar.gz
    
    cd sshpass-1.05
    
    ./configure --prefix=/opt/sshpass
    
    make
    
    make install
    
    ---------------ps 
    ps -A 显示所有进程
    
    -----------------------------------------
    Linux中的ps命令是Process Status的缩写
    --查看tomcat的路径(查看安装目录)
    find / -name startup.sh
    -----------------------------------------
    1.文字设定法
    
      chmod [who] [+ | - | =] [mode] 文件名¼
    
      命令中各选项的含义为:
    
      操作对象who可是下述字母中的任一个或者它们的组合:
    
      u 表示“用户(user)”,即文件或目录的所有者。
    
      g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
    
      o 表示“其他(others)用户”。
    
      a 表示“所有(all)用户”。它是系统默认值。
    
      操作符号可以是:
    
      + 添加某个权限。
    
      - 取消某个权限。
    
      = 赋予给定权限并取消其他所有权限(如果有的话)。
    
      设置mode所表示的权限可用下述字母的任意组合:
    
      r 可读。
    
      w 可写。
    
      x 可执行。
    
      X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
    
      s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
    
      t 保存程序的文本到交换设备上。
    
      u 与文件属主拥有一样的权限。
    
      g 与和文件属主同组的用户拥有一样的权限。
    
      o 与其他用户拥有一样的权限。
    
      文件名:以空格分开的要改变权限的文件列表,支持通配符。
    
      在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example
    
      使同组和其他用户对文件example 有读权限。
    
    ===========================================================================
    ============================================================================
    ============================================================================
    ============================================================================
    ============================================================================
    ============================================================================
    ============================================================================
    =============================================================================over
    1.安装telnet:检查是否安装过了;
      安装之前先检测是否这些软件包已安装,方法如下:
    [root@localhost ~]# rpm -q telnet
    telnet-0.17-38.el5
    telnet客户端一般默认情况是已安装
    [root@localhost ~]# rpm -q telnet-server
    
    --安装t
        yum install telnet
    
        yum install telnet-server
    --安装lsof
    yum install lsof
    ----
    
    
    查询TCP连接情况:
    
     netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    
    查询端口占用情况:
    
     netstat   -anp   |   grep  portno(例如:netstat –apn | grep 80)
    
    
    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
    
    默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢?
    (1)sudo 命令  
    这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。
    (2)sudo -i
    通过这种方法输入当前管理员用户的密码就可以进到root用户。
    (3)如果想一直使用root权限,要通过su切换到root用户。
    那我们首先要重设置root用户的密码:
    sudo passwd root
    这样就可以设置root用户的密码了。
    
    ===
    
    之后就可以自由的切换到root用户了
    su
    输入root用户的密码即可。
    
    ----
    
    HWADDR="00:0C:29:93:F4:73"
    IPV6INIT="yes"
    NM_CONTROLLED="yes"
    ONBOOT="yes"
    TYPE="Ethernet"
    UUID="132723c0-d7e0-4a93-b916-de695b75c68f"
    
    DEVICE=eth0
    BOOTPROTO=static
    
    NAME="System etho0"
    BROADCAST=192.168.7.2
    HWADDR=08:00:27:24:F8:9B
    IPADDR=192.168.7.149
    NETMASK=255.255.255.0
    NETWORK=192.168.7.0
    
    
    service network restart
    DEVICE=eth0:0 //设备名称,不要修改
    BOOTPROTO=static //不要修改
    BROADCAST=10.10.33.255 //广播地址,一般为本网段的最后一个IP
    IPADDR=10.10.33.145 //ip地址
    NETMASK=255.255.255.0 //子网掩码
    NETWORK=10.10.33.0 //网段地址
    ONBOOT=yes //不要修改
    TYPE=Ethernet //不要修改
    ---
    1.可以直接在命令行里输入netconfig进行配置
    2.一:可以到vi /etc/ysyconfig/network-scripts/ifcfg-eth0 修
        DEVICE=eth0
        ONBOOT=yes
        BOOTPROTO=none
        IPADDR=10.0.2.173
        NETMASK=255.255.255.0
        GATEWAY=10.0.2.1
        TYPE=Ethernet
    二:还要看一下有没有开网络要 vi /etc/sysyconfig/network
        NETWORKING=yes
    还有一个谁都要做的就是设DNS啦 vi /etc/resolv.conf  在里边写上
    nameserver 202.96.128.68
    
    ---
    还有一个谁都要做的就是设DNS啦 vi /etc/resolv.conf  在里边写上
     nameserver 202.96.128.68
    
    系统信息 
    arch 显示机器的处理器架构(1) 
    uname -m 显示机器的处理器架构(2) 
    uname -r 显示正在使用的内核版本 
    dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) 
    hdparm -i /dev/hda 罗列一个磁盘的架构特性 
    hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 
    cat /proc/cpuinfo 显示CPU info的信息 
    cat /proc/interrupts 显示中断 
    cat /proc/meminfo 校验内存使用 
    cat /proc/swaps 显示哪些swap被使用 
    cat /proc/version 显示内核的版本 
    cat /proc/net/dev 显示网络适配器及统计 
    cat /proc/mounts 显示已加载的文件系统 
    lspci -tv 罗列 PCI 设备 
    lsusb -tv 显示 USB 设备 
    date 显示系统日期 
    cal 2007 显示2007年的日历表 
    date 041217002007.00 设置日期和时间 - 月日时分年.秒 
    clock -w 将时间修改保存到 BIOS 
    
    关机 (系统的关机、重启以及登出 ) 
    shutdown -h now 关闭系统(1) 
    init 0 关闭系统(2) 
    telinit 0 关闭系统(3) 
    shutdown -h hours:minutes & 按预定时间关闭系统 
    shutdown -c 取消按预定时间关闭系统 
    shutdown -r now 重启(1) 
    reboot 重启(2) 
    logout 注销 
    =======================
    shutdown -r now
    --------
    shutdown -r now
    =======================
    
    文件和目录 
    cd /home 进入 '/ home' 目录' 
    cd .. 返回上一级目录 
    cd ../.. 返回上两级目录 
    cd 进入个人的主目录 
    cd - 返回上次所在的目录 
    pwd 显示工作路径 
    ls 查看目录中的文件 
    ls -F 查看目录中的文件 
    ls -l 显示文件和目录的详细资料 
    ls -a 显示隐藏文件 
    ls *[0-9]* 显示包含数字的文件名和目录名 
    tree 显示文件和目录由根目录开始的树形结构(1) 
    lstree 显示文件和目录由根目录开始的树形结构(2) 
    mkdir dir1 创建一个叫做 'dir1' 的目录' 
    mkdir dir1 dir2 同时创建两个目录 
    mkdir -p /tmp/dir1/dir2 创建一个目录树 
    rm -f file1 删除一个叫做 'file1' 的文件' 
    rmdir dir1 删除一个叫做 'dir1' 的目录' 
    rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 
    rm -rf dir1 dir2 同时删除两个目录及它们的内容 
    mv dir1 new_dir 重命名/移动 一个目录 
    cp file1 file2 复制一个文件 
    cp dir/* . 复制一个目录下的所有文件到当前工作目录 
    cp -a /tmp/dir1 . 复制一个目录到当前工作目录 
    cp -a dir1 dir2 复制一个目录 
    ln -s file1 lnk1 创建一个指向文件或目录的软链接 
    ln file1 lnk1 创建一个指向文件或目录的物理链接 
    touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) 
    file file1 outputs the mime type of the file as text 
    iconv -l 列出已知的编码 
    iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. 
    find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 
    
    
    
    文件搜索 
    find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 
    find / -user user1 搜索属于用户 'user1' 的文件和目录 
    find /home/user1 -name *.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 
    find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
    find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
    find / -name *.rpm -exec chmod 755 '{}' ; 搜索以 '.rpm' 结尾的文件并定义其权限 
    find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 
    locate *.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 
    whereis halt 显示一个二进制文件、源码或man的位置 
    which halt 显示一个二进制文件或可执行文件的完整路径 
    
    
    
    挂载一个文件系统 
    mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 
    umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出 
    fuser -km /mnt/hda2 当设备繁忙时强制卸载 
    umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 
    mount /dev/fd0 /mnt/floppy 挂载一个软盘 
    mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom 
    mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 
    mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 
    mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 
    mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享 
    
    磁盘空间 
    df -h 显示已经挂载的分区列表 
    ls -lSr |more 以尺寸大小排列文件和目录 
    du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' 
    du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小 
    rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统) 
    dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统) 
    
    返回顶部索引 ^
    groups 查看当前登录用户的组内成员
    groups gliethttp 查看gliethttp用户所在的组,以及组内成员
    whoami 查看当前登录用户名;
    .其实只需要查看 /etc/passwd文件就行了.;
    用户和群组 
    groupadd group_name 创建一个新用户组 
    groupdel group_name 删除一个用户组 
    groupmod -n new_group_name old_group_name 重命名一个用户组 
    useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户 
    useradd user1 创建一个新用户 
    userdel -r user1 删除一个用户 ( '-r' 排除主目录) 
    usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 
    passwd 修改口令 
    passwd user1 修改一个用户的口令 (只允许root执行) 
    chage -E 2005-12-31 user1 设置用户口令的失效期限 
    pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 
    grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 
    newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 
    
    返回顶部索引 ^
    
    文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消 
    ls -lh 显示权限 
    ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 
    chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 
    chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 
    chown user1 file1 改变一个文件的所有人属性 
    chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 
    chgrp group1 file1 改变文件的群组 
    chown user1:group1 file1 改变一个文件的所有人和群组属性 
    find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 
    chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋
    予和所有者同样的权限 
    chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 
    chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 
    chmod g-s /home/public 禁用一个目录的 SGID 位 
    chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 
    chmod o-t /home/public 禁用一个目录的 STIKY 位 
    
    
    
    返回顶部索引 ^
    
    文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 
    chattr +a file1 只允许以追加方式读写文件 
    chattr +c file1 允许这个文件能被内核自动压缩/解压 
    chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 
    chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 
    chattr +s file1 允许一个文件被安全地删除 
    chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 
    chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 
    lsattr 显示特殊的属性 
    
    返回顶部索引 ^
    
    打包和压缩文件 
    bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 
    bzip2 file1 压缩一个叫做 'file1' 的文件 
    gunzip file1.gz 解压一个叫做 'file1.gz'的文件 
    gzip file1 压缩一个叫做 'file1'的文件 
    gzip -9 file1 最大程度压缩 
    rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包 
    rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1' 
    rar x file1.rar 解压rar包 
    unrar x file1.rar 解压rar包 
    tar -cvf archive.tar file1 创建一个非压缩的 tarball 
    tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 
    tar -tf archive.tar 显示一个包中的内容 
    tar -xvf archive.tar 释放一个包 
    tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 
    tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 
    tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 
    tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 
    tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 
    zip file1.zip file1 创建一个zip格式的压缩包 
    zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 
    unzip file1.zip 解压一个zip格式压缩包 
    
    返回顶部索引 ^
    
    RPM 包 - (Fedora, Redhat及类似系统) 
    rpm -ivh package.rpm 安装一个rpm包 
    rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 
    rpm -U package.rpm 更新一个rpm包但不改变其配置文件 
    rpm -F package.rpm 更新一个确定已经安装的rpm包 
    rpm -e package_name.rpm 删除一个rpm包 
    rpm -qa 显示系统中所有已经安装的rpm包 
    rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包 
    rpm -qi package_name 获取一个已安装包的特殊信息 
    rpm -qg "System Environment/Daemons" 显示一个组件的rpm包 
    rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 
    rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表 
    rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表 
    rpm -q package_name --whatprovides 显示一个rpm包所占的体积 
    rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l 
    rpm -q package_name --changelog 显示一个rpm包的修改历史 
    rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供 
    rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表 
    rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书 
    rpm --checksig package.rpm 确认一个rpm包的完整性 
    rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性 
    rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 
    rpm -Va 检查系统中所有已安装的rpm包- 小心使用 
    rpm -Vp package.rpm 确认一个rpm包还未安装 
    rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件 
    rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包 
    rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包 
    
    返回顶部索引 ^
    
    YUM 软件包升级器 - (Fedora, RedHat及类似系统) 
    yum install package_name 下载并安装一个rpm包 
    yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 
    yum update package_name.rpm 更新当前系统中所有安装的rpm包 
    yum update package_name 更新一个rpm包 
    yum remove package_name 删除一个rpm包 
    yum list 列出当前系统中安装的所有包 
    yum search package_name 在rpm仓库中搜寻软件包 
    yum clean packages 清理rpm缓存删除下载的包 
    yum clean headers 删除所有头文件 
    yum clean all 删除所有缓存的包和头文件 
    
    返回顶部索引 ^
    
    DEB 包 (Debian, Ubuntu 以及类似系统) 
    dpkg -i package.deb 安装/更新一个 deb 包 
    dpkg -r package_name 从系统删除一个 deb 包 
    dpkg -l 显示系统中所有已经安装的 deb 包 
    dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包 
    dpkg -s package_name 获得已经安装在系统中一个特殊包的信息 
    dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表 
    dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表 
    dpkg -S /bin/ping 确认所给的文件由哪个deb包提供 
    
    返回顶部索引 ^
    
    APT 软件工具 (Debian, Ubuntu 以及类似系统) 
    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 返回包含所要搜索字符串的软件包名称 
    
    返回顶部索引 ^
    
    查看文件内容 
    cat file1 从第一个字节开始正向查看文件的内容 
    tac file1 从最后一行开始反向查看一个文件的内容 
    more file1 查看一个长文件的内容 
    less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 
    head -2 file1 查看一个文件的前两行 
    tail -2 file1 查看一个文件的最后两行 
    tail -f /var/log/messages 实时查看被添加到一个文件中的内容 
    
    返回顶部索引 ^
    
    文本处理 
    cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT 
    cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中 
    cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中 
    grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug" 
    grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇 
    grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行 
    grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug" 
    sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2" 
    sed '/^$/d' example.txt 从example.txt文件中删除所有空白行 
    sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行 
    echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容 
    sed -e '1d' result.txt 从文件example.txt 中排除第一行 
    sed -n '/stringa1/p' 查看只包含词汇 "string1"的行 
    sed -e 's/ *$//' example.txt 删除每一行最后的空白字符 
    sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部 
    sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容 
    sed -n '5p;5q' example.txt 查看第5行 
    sed -e 's/00*/0/g' example.txt 用单个零替换多个零 
    cat -n file1 标示文件的行数 
    cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行 
    echo a b c | awk '{print $1}' 查看一行第一栏 
    echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏 
    paste file1 file2 合并两个文件或两栏的内容 
    paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分 
    sort file1 file2 排序两个文件的内容 
    sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) 
    sort file1 file2 | uniq -u 删除交集,留下其他的行 
    sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) 
    comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容 
    comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 
    comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 
    
    返回顶部索引 ^
    
    
    字符设置和文件格式转换 
    dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX 
    unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS 
    recode ..HTML < page.txt > page.html 将一个文本文件转换成html 
    recode -l | more 显示所有允许的转换格式 
    
    返回顶部索引 ^
    
    文件系统分析 
    badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块 
    fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性 
    fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 
    e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 
    e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 
    fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 
    fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性 
    fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 
    dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 
    
    返回顶部索引 ^
    
    初始化一个文件系统 
    mkfs /dev/hda1 在hda1分区创建一个文件系统 
    mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统 
    mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统 
    mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统 
    fdformat -n /dev/fd0 格式化一个软盘 
    mkswap /dev/hda3 创建一个swap文件系统 
    
    返回顶部索引 ^
    
    SWAP文件系统 
    mkswap /dev/hda3 创建一个swap文件系统 
    swapon /dev/hda3 启用一个新的swap文件系统 
    swapon /dev/hda2 /dev/hdb3 启用两个swap分区 
    
    返回顶部索引 ^
    
    备份 
    dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份 
    dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份 
    restore -if /tmp/home0.bak 还原一个交互式备份 
    rsync -rogpav --delete /home /tmp 同步两边的目录 
    rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync 
    rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录 
    rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录 
    dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作 
    dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件 
    tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作 
    ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容 
    ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录 
    tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接 
    find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录 
    find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包 
    dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作 
    dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容 
    
    返回顶部索引 ^
    
    光盘 
    cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容 
    mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件 
    mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件 
    mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件 
    cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件 
    gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件 
    mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件 
    cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中 
    cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3) 
    cdrecord --scanbus 扫描总线以识别scsi通道 
    dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD 
    
    返回顶部索引 ^
    
    网络 - (以太网和WIFI无线) 
    ifconfig eth0 显示一个以太网卡的配置 
    ifup eth0 启用一个 'eth0' 网络设备 
    ifdown eth0 禁用一个 'eth0' 网络设备 
    ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址 
    ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing) 
    dhclient eth0 以dhcp模式启用 'eth0' 
    route -n show routing table 
    route add -net 0/0 gw IP_Gateway configura default gateway 
    route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16' 
    route del 0/0 gw IP_gateway remove static route 
    echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing 
    hostname show hostname of system 
    host www.example.com lookup hostname to resolve name to ip address and viceversa(1) 
    nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2) 
    ip link show show link status of all interfaces 
    mii-tool eth0 show link status of 'eth0' 
    ethtool eth0 show statistics of network card 'eth0' 
    netstat -tup show all active network connections and their PID 
    netstat -tupl show all network services listening on the system and their PID 
    tcpdump tcp port 80 show all HTTP traffic 
    iwlist scan show wireless networks 
    iwconfig eth1 show configuration of a wireless network card 
    hostname show hostname 
    host www.example.com lookup hostname to resolve name to ip address and viceversa 
    nslookup www.example.com lookup hostname to resolve name to ip address and viceversa 
    whois www.example.com lookup on Whois database 
    
    GO TOP INDEX ^ 
    Microsoft Windows networks (SAMBA) 
    nbtscan ip_addr netbios name resolution 
    nmblookup -A ip_addr netbios name resolution 
    smbclient -L ip_addr/hostname show remote shares of a windows host 
    smbget -Rr smb://ip_addr/share like wget can download files from a host windows via smb 
    mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share
    
    ===============cenos7.0;
    df -h  :配置
    cd  /etc/sysconfig/network-scripts/  #进入网络配置文件目录
    vi  ifcfg-eno16777736  #编辑配置文件,添加修改以下内容
    vi  ifcfg-eno16777736  #编辑配置文件,添加修改以下内容
    TYPE="Ethernet"
    
    BOOTPROTO="static"  #启用静态IP地址
    
    DEFROUTE="yes"
    
    IPV4_FAILURE_FATAL="no"
    
    IPV6INIT="yes"
    
    IPV6_AUTOCONF="yes"
    
    IPV6_DEFROUTE="yes"
    
    IPV6_FAILURE_FATAL="no"
    
    NAME="eno16777736"
    
    UUID="8071cc7b-d407-4dea-a41e-16f7d2e75ee9"
    
    ONBOOT="yes"  #开启自动启用网络连接
    
    IPADDR0="192.168.21.128"  #设置IP地址
    
    PREFIX0="24"  #设置子网掩码
    
    GATEWAY0="192.168.21.2"  #设置网关
    
    DNS1="8.8.8.8"  #设置主DNS
    
    DNS2="8.8.4.4"  #设置备DNS
    
    HWADDR="00:0C:29:EB:F2:B3"
    
    IPV6_PEERDNS="yes"
    
    IPV6_PEERROUTES="yes"
    
    :wq!  #保存退出
    
    service network restart   #重启网络
    
    ping www.baidu.com  #测试网络是否正常
    -----
    ping www.baidu.com  #测试网络是否正常
    ---
    ip addr  #查看IP地址
    ===========================================================
    sudo yum install gcc
    sudo yum install automake
    sudo yum install libtool
    
    curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src
    cd /usr/local/src/libuv-1.4.2
    sh autogen.sh
    ./configure
    make 
    make install
    rm -rf /usr/local/src/libuv-1.4.2 && cd ~/
    ldconfig
    
    
    yum install -y openssl-devel
    
    
    curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
    dnvm update-self
    
    
    ======查看文件内容:
    vi 文件名 #编辑方式查看,可修改
    cat 文件名 #显示全部文件内容
    more 文件名 #分页显示文件内容
    tail 文件名 #仅查看尾部,还可以指定行数
    head 文件名 #仅查看头部,还可以指定行数
    sed '1,$'p 文件名 #这个可以指定起始行和结束行的,把1和$换了就可以
    ===========
    点击 键盘的 “Esc”  如果保存退出文件 就是 :wq  不保存退出 :q   不保存强制退出 :q!
    --开始编辑文件:
    vi 文件名; insert;
    ctrl+c :wq保存;
    
    
    ====:
    ====:
    ====:
    jobresumeid     relationtype     modifieddate 
    5768601    2    2015/12/21 14:28:14
    5774601    2    2015/12/21 10:52:15
    5777201    2    2015/12/21 11:02:14
    5795901    2    2015/12/21 12:05:04
    5797401    1    2015/12/21 12:11:56
    5790801    1    2015/12/21 12:14:42
    5810701    2    2015/12/21 13:09:00
    ===
    
    linux grep命令
    1.作用
    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
    
    2.格式
    grep [options]
    
    3.主要参数
    [options]主要参数:
    -c:只输出匹配行的计数。
    -I:不区分大 小写(只适用于单字符)。
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及 行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。
    pattern正则表达式主要参数:
    : 忽略正则表达式中特殊字符的原有含义。
    ^:匹配正则表达式的开始行。
    $: 匹配正则表达式的结束行。
    <:从匹配正则表达 式的行开始。
    >:到匹配正则表达式的行结束。
    [ ]:单个字符,如[A]即A符合要求 。
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    。:所有的单个字符。
    * :有字符,长度可以为0。
    
    4.grep命令使用简单实例
    $ grep ‘test’ d*
    显示所有以d开头的文件中包含 test的行。
    $ grep ‘test’ aa bb cc
    显示在aa,bb,cc文件中匹配test的行。
    $ grep ‘[a-z]{5}’ aa
    显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
    $ grep ‘w(es)t.*1′ aa
    如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(1),找到就显示该行。如果用egrep或grep -E,就不用””号进行转义,直接写成’w(es)t.*1′就可以了。
    
    5.grep命令使用复杂实例
    假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:
    $ grep magic /usr/src/Linux/Doc/*
    sysrq.txt:* How do I enable the magic SysRQ key?
    sysrq.txt:* How do I use the magic SysRQ key?
    其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
    默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出:
    grep: sound: Is a directory
    这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法:
    明确要求搜索子目录:grep -r
    或忽略子目录:grep -d skip
    如果有很多 输出时,您可以通过管道将其转到’less’上阅读:
    $ grep magic /usr/src/Linux/Documentation/* | less
    这样,您就可以更方便地阅读。
    
    有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。
    
    下面还有一些有意思的命令行参数:
    grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
    grep -l pattern files :只列出匹配的文件名,
    grep -L pattern files :列出不匹配的文件名,
    grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
    grep -C number pattern files :匹配的上下文分别显示[number]行,
    grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
    grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
    
    grep -n pattern files  即可显示行号信息
    
    grep -c pattern files  即可查找总行数
    
    这里还有些用于搜索的特殊符号:
    < 和 > 分别标注单词的开始与结尾。
    例如:
    grep man * 会匹配 ‘Batman’、’manic’、’man’等,
    grep ‘<man’ * 匹配’manic’和’man’,但不是’Batman’,
    grep ‘<man>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
    ‘^’:指匹配的字符串在行首,
    ‘$’:指匹配的字符串在行 尾,
    =========
    
    =====================================================================================2.4】服务的自启动
    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
    使用语法:
    chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
    参数用法:
    --add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
    --del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
    --level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
    等级0表示:表示关机
    等级1表示:单用户模式
    等级2表示:无网络连接的多用户命令行模式
    等级3表示:有网络连接的多用户命令行模式
    等级4表示:不可用
    等级5表示:带图形界面的多用户模式
    等级6表示:重新启动
    
    ==
    chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
    chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。
    使用范例:
    chkconfig --list #列出所有的系统服务
    chkconfig --add httpd #增加httpd服务
    chkconfig --del httpd #删除httpd服务
    chkconfig --list #列出系统所有的服务启动情况
    chkconfig --list mysqld #列出mysqld服务设置情况
    chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
    chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
    
    ==打印第一个字段;
     chkconfig --list |grep 'aaa' |awk '{print $1}'
    --aaa开头的
      chkconfig --list |grep '^aaa' |awk '{print $1}'
    
    
    
    -----切记 if then fi不能在同一行;否则会报错;
      if list 
      then 
              do something here 
          elif list 
          then 
              do another thing here 
          else 
             do something else here 
          fi  
    
    -------
    1、字符串判断
    str1 = str2      当两个串有相同内容、长度时为真 
    str1 != str2      当串str1和str2不等时为真 
    -n str1        当串的长度大于0时为真(串非空) 
    -z str1        当串的长度为0时为真(空串) 
    str1           当串str1为非空时为真
    ---------echo
    -n    不输出末尾的换行符。
    -e    启用反斜线转义。
        退格
    \    反斜线
    
        新行
    
        回车
    	    水平制表符
    v    垂直制表符
    
    ==================================linux安装vim
    yum install apt-get
    sudo apt-get install vim
    yum install apt-get
    
    ----------------------------------------linu服务标准:
    #!/bin/sh
    #chkconfig:2345 80 05
    #description:aaa
    description_txt="服务abc服务abc服务ab"
    path_txt="ResumeTransmit_jar/ResumeTransmit.jar"
    app_command="nohup java -jar $path_txt >/guo/service.log 2>&1 &"
    app_pidname="ResumeTransmit.jar"
    pidlist=""
    checkpid(){
       pidlist=`ps -ef|grep $app_pidname|grep -v "grep"|awk '{print $2}'`
    }
    start(){
      echo "$app_pidname 服务准备启动"
      checkpid
      if [ "$pidlist" = "" ]
         then
           su - root -c "$app_command"
           checkpid
           if [ "$pidlist" = "" ]
             then
               echo "$app_pidname 服务启动失败"
             else
               echo "$app_pidname 服务启动成功"
           fi
         else
           echo "$app_pidname 已存在并运行中"
      fi
    }
    stop(){
       checkpid
       if [ "$pidlist" = "" ]
          then
           echo "$app_pidname 服务不存在,或已停止运行"
          else 
            kill -9 $pidlist
            checkpid
            if [ "$pidlist" = "" ]
               then 
                 echo "$app_pidname 服务停止成功"
               else
                 echo "$app_pidname 服务停止失败,请重新操作"
            fi
       fi
    }
    restart(){
       stop
       start
    }
    status(){
       checkpid
       if [ "$pidlist" = "" ]
          then 
             echo "$app_name 已停止"
          else
            echo "$app_name 运行中"
       fi
    }
    description(){
       echo "$description_txt"
    }
    path(){
      echo "$path_txt"
    }
    pidnum(){
       checkpid
       echo "$pidlist"
    }
    
    case $1 in
    start)
        start;;
    stop)
        stop;;
    restart)
        restart;;
    status)
        status;;
    description)
        description;;
    path)
        path;;
    pidnum)
        pidnum;;
    *);;
    esac
    
    --------------
    #!/bin/sh
    #chkconfig:2345 80 05
    #description:aaa
    description_txt="ihr服务管理"
    path_txt="ResumeTransmit_jar/aa.sh"
    app_pidname="ResumeTransmit.jar"
    pidlist=""
    start(){
      sh /usr/local/gzftest/ihrm.sh
    }
    stop(){
      echo "空命令"
    }
    restart(){
      echo "空命令"
    }
    status(){
      echo "空命令"
    }
    description(){
       echo "$description_txt"
    }
    path(){
      echo "$path_txt"
    }
    pidnum(){
       echo "$pidlist"
    }
    
    case $1 in
    start)
        start;;
    stop)
        stop;;
    restart)
        restart;;
    status)
        status;;
    description)
        description;;
    path)
        path;;
    pidnum)
        pidnum;;
    *);;
    esac
    
    ------------
    #!/bin/sh
    #author:zefeng.guo
    aa=`chkconfig --list |grep '^aaa' |awk '{print $1}'`
    printf "33[33m%-26s %-9s %-10s  %-30s %-20s33[0m
    " 服务名  状态  进程ID 描述  服务路径
    for a in $aa
      do
       bb=`service $a status`
       cc=`service $a description`
       dd=`service $a path`
       ee=`service $a pidnum`
       if [ "$ee" != "" ]
         then
           printf "33[32m%-23s %-10s %-10s %-30s %-20s33[0m
    " $a ${bb} $ee $cc $dd 
         elif [ "$bb" = "空命令" ]
     then
           printf "33[44m%-23s %-10s %-10s %-30s %-20s33[0m
    " $a ${bb}$cc $dd
     else
           printf "33[45m%-23s %-10s %-10s %-30s %-20s33[0m
    " $a ${bb}$cc $dd
       fi 
     done
    ----------------------
    -------------
    ----------------------
    #!/bin/sh
    #author:zefeng.guo
    snames=`chkconfig --list |grep '^ihr-' |awk '{print $1}'`
    printf "33[33m%-26s %-9s %-10s  %-30s %-20s33[0m
    " 服务名  状态  进程ID 描述  服务路径
    for sn in $snames
      do
       sts=`service $sn status`
       des=`service $sn description`
       path=`service $sn path`
       pidnum=`service $sn pidnum`
       if [ "$pidnum" != "" ]
         then
           printf "33[32m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sn ${sts} $pidnum $des $path
         elif [ "$bb" = "空命令" ]
     then
           printf "33[44m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sn ${sts}$des $path
     else
           printf "33[45m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sn ${sts}$des $path
       fi 
     done
    
    
    ===========linux读取json文件:
    
    jq官网 : http://stedolan.github.io/jq/
    下载binary之后可以直接调用,详细安装见:http://stedolan.github.io/jq/download/
    
    =======
    jq使用:
    
    
    ======安装:(安装失败)
    yum install apt-get
    $ sudo yum install jq
    
    ===========  jq服务:
    cd /home/gzf/tools/jq
    jqpath="/jq"
    testpath="/home/gzf/tools/jq/test.json"
    servicenames=`cat $testpath | .$jqpath .[] | .$jqpath .index`
    printf "33[33m%-26s %-9s %-10s  %-30s %-20s33[0m
    " 服务名  状态  进程ID 描述  服务路径
    sl="ihr-"
    for sc in $servicenames
      do
         sl=`cat $testpath | .$jqpath .[$sc] | .$jqpath .name`
         sl=${sl//"/}
         pidn=`ps -ef | grep $sl | grep -v "grep"| awk '{print $2}'`
         des=`cat $testpath | .$jqpath .[$sc] | .$jqpath .desc`
         pat=`cat $testpath | .$jqpath .[$sc] | .$jqpath .dir`
              sta="运行"     
          if [ "$pidn" = "空命令" ]
         then
           printf "33[44m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sl $sta $pidn $des $pat
         elif [ "$pidn" = "" ]
         then
          sta="停止"
          pidn=""
          printf "33[45m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sl $sta $pidn $des $pat
         else
           printf "33[32m%-23s %-10s %-10s %-30s %-20s33[0m
    " $sl ${sta} $pidn $des $pat 
       fi 
     done
    ===========linux字符串操作:
    
    表达式    含义
    ${#string}    $string的长度
          
    ${string:position}    在$string中, 从位置$position开始提取子串
    ${string:position:length}    在$string中, 从位置$position开始提取长度为$length的子串
          
    ${string#substring}    从变量$string的开头, 删除最短匹配$substring的子串
    ${string##substring}    从变量$string的开头, 删除最长匹配$substring的子串
    ${string%substring}    从变量$string的结尾, 删除最短匹配$substring的子串
    ${string%%substring}    从变量$string的结尾, 删除最长匹配$substring的子串
          
    ${string/substring/replacement}    使用$replacement, 来代替第一个匹配的$substring
    ${string//substring/replacement}    使用$replacement, 代替所有匹配的$substring
    ${string/#substring/replacement}    如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
    ${string/%substring/replacement}    如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
    
    ==========jq 使用:
    1.执行jq: ./jq 
    1.获取单个key:.key eg:cat test.json | ./jq .[]
    2. cat test.json | ./jq .[0]|./jq .name
    3.获取json长度:cat test.json | ./jq length
    4.获取json所有键值:cat test.json | ./jq keys
    5.获取多个:cat test.json | ./jq .[0] |./jq .name,.dir
    
    =========
    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
    
    简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
  • 相关阅读:
    suse linux 下MYSQL 修改默认字符集
    检查oracle表空间使用情况
    SQL递归查询(SqlServer/ORACLE递归查询)[语法差异分析]
    ORA12519错误解决方案
    全表行转列——动态SQL
    MYSQL 远程连接错误ERROR 2013 (HY000): Lost connection to MySQL server at
    MYSQL根据字段名查询所属表
    ORA12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程错误解决方案
    suse linux 下取消mysql大小写敏感
    ORACLE根据字段名字查询所属表
  • 原文地址:https://www.cnblogs.com/guozefeng/p/5748958.html
Copyright © 2020-2023  润新知