zoukankan      html  css  js  c++  java
  • 测试常用linux命令1

    进程相关:

    1,查看所有进程(包含历史进程):

    ps -ef 各个参数的含义依次是uid,pid,ppid,c(cpu利用率),stime(进程启动时间),tty,time,cmd

    2,动态查看进程top

    top命令的详细用法可以参见:

    http://www.2cto.com/os/201209/157960.html

    注意命令中的相关字段:

    对于cpu,分为us(用户空间占用cpu百分比);sy(系统空间占用cpu百分比);id(空闲cpu百分比);wa(IO等待占用cpu百分比)

    其中的各个字段:PID(进行id);USER(进程所有者);PR(进程优先级); VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR 共享内存大小,单位kb
    S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU 上次更新到现在的CPU时间占用百分比
    %MEM 进程使用的物理内存百分比

     

    3, 后台运行进程

    前台运行有:. ,sh,source

    后台运行进程:再命令后面加一个&,不过这种方法,如果会话退出,那么后台进程也随之退出

    如果需要会话退出的时候,进程不退出,那么方法是nohup。例如nohup ./test &。需要注意,nohup会从终端解除进程的关联,丢掉到stdout和stderror链接,而是将这两部分消息都重定向到nohup.out文件中

    定时运行 at(预设时间运行) ,cron(定期运行);

    开机或用户启动时运行:.bash_profile,bashrc文件位于用户主目录,前者在用户每次登录时运行,后者在每个shell启动时运行

    4,结束进程:

    重温linux信号量,常用的有SIGHUP(挂起进程),SIGINT(终止进程),SIGKILL(无条件终止进程),SIFTSTP(暂停进程,但并不终止)

    a) ctrl+c:产生SIGHUP信号,发送给shell中当前运行的进程

    b) ctrl+z:生成一个SIGTSTP信号,暂停进程,不过该进程继续保留在内存中,能从上次停止的地方继续运行。

    如果想要进一步终止,可以用ps au(STAT字段为S代表被停止或追踪),也可以使用jobs查看后台进程,之后再用kill命令杀死

    如果恢复可以用bg,fg等命令。

    c)kill/killall 发出SIFKILL信号,无条件终止进程,killall可以直接使用进程名字,并可以使用通配符

    2,网络命令

    查看本机ip hostname -i

    查看远程机器ip : ping (机器名称),host等等

    查看进程占用的端口号

    [root@nbatest ~]# netstat -anp | grep 进程名称
    netstat -anp

    查看使用端口号的进程
    lsof
    [root@nbatest ~]# lsof -i:  端口号

    3,监测磁盘空间

    df -h(用户可读的形式):显示某个设备还有多少磁盘空间

    du -sh :显示特定目录下的磁盘使用情况

    4,流程控制语句(if依据的是命令回传码$0,而不是其他语言中常见的true或者false,只不过利用test或者中括号进行判断的时候,类似于达到了true或者false的效果)

    if then fi(then不能省略)

    其中的条件判断分为三类:数值判断,字符串判断,文件判断(test,[]两种方式,推荐使用后者)

    数值判断:-eq,-gt,-lt,-ne,-ge,-le

    字符串判断: =,!=,<,>,-n(长度是否非0),-z(长度是否为0);注意大小写符号必须使用进行转义,否则会被当成重定向命令

    文件判断:-d,-f,-e,-s(判断文件是否存在且非空),-nt,-ot

    if双尖括号(())中可以放置数学表达式;[[]]可以进行正则匹配

    普通的数学运算也可以放置在$[]中

    ${}不能放置$,需要将$符号换成!号

    由此得到遍历命令行参数的两种方法:

    for arg in $@
    do 
        echo $arg
    done 
    
    #方法2
    
    for((i=1;i<=$#;i++))
    do 
        echo ${!i}
    done
    遍历shell脚本命令行参数

    6, vim缩进格式化 gg=G

     

    8,目录覆盖

    cp -r ./test/* ./test/

    9,nohup 用户退出,进程依旧执行

    10, ls | xargs wc -l 是将显示的文件名作为wc -l的参数执行,目录下有多少个文件就执行多少次

    ls | xargs -i mv {} {}.bak 将目录下的所有文件都重命名为xxxx.bak

    11,找到某个程序存放目录,包括bin,source,etc等 where is mysq

    12, 垃圾桶黑洞 /dev/null

    将错误信息忽略 find /home -name .bashrc 2> /dev/null

    将标准输出和错误输出到同一个文件中

    ls . &>list  或者 ls . >list 2 >&1

    13, 命令运行的判断依据 &?(命令回传值)与&&或||

    &?命令回传值,&&正确则执行,否则不执行。||与之相反

    cmd1&&cmd2||cmd3正确执行2,否则执行3

    关于命令行的参数:

    1,$#代表参数个数;$0代表脚本命令(`basename $0`);$1...代表各个参数,如果脚本需要多于9个参数,需要稍微修改一下变量名,如${10};$*将所有的参数作为一个单词保存,然而$@则是作为不同的单词。选取最后一个参数,需要用${!#}而不是${$#}

    2,shift可以用来移动变量,利用它某种程度可以实现可变参数,但要注意一个参数被移除之后,它的值就会被丢掉而且无法恢复。某些时候可以用来分离参数和选项。(不过更常用的是使用getopt方法)

  • 相关阅读:
    Java内存模型与volatile
    Struts2验证框架的注意事项
    利用Java编写简单的WebService实例
    加速Java应用开发速度1——加速spring/hibernate应用调试时启动速度
    Java关键字synchronized详解
    JAVA对象的序列化与反序列化
    加速Java应用开发速度3——单元/集成测试+CI
    java程序性能优化之找出内存溢出元凶
    加速Java应用开发速度2——加速项目调试启动速度
    java实现动态切换上网IP (ADSL拨号上网)
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3685192.html
Copyright © 2011-2022 走看看