zoukankan      html  css  js  c++  java
  • 进程操作

    查看现有进程

    
    
    $ ps -ef

    或者:

    $ ps -aux
     PID     USER    PR     NI  VIRT    RES    SHR S  %CPU %MEM     TIME+ 
    gpu245 122844 1 0 09:17 ? 00:00:00 /lib/systemd/systemd gpu245 122845 122844 0 09:17 ? 00:00:00 (sd-pam)

    此时如果我想杀了进程(ID:
    122844)就在终端输入:
    $ kill -s 9 122844

    其中-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。

    改进:

    把ps的查询结果通过管道给grep查找包含特定字符串的进程。管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
    $ ps -ef | grep firefox
    #或者!!
    $ pgrep firefox
    使用pidof:
    (pid of xx)也就是 xx的PID。
    $ pidof firefox-bin
    $ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9

    说明:

    “grep firefox”的输出结果是,所有含有关键字“firefox”的进程。

    “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

    “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

    “xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。

    知道pgrep和pidof两个命令,干嘛还要打那么长一串!

    $ pgrep firefox | xargs kill -s 9

    难道每次都要调用xargs把PID传递给kill?答案是否定的:

    $kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`

    pgrep。

    $kill -s 9 `pgrep firefox`

    pkill:

    pkill=pgrep+kill。

    $pkill - firefox

    说明:"-9" 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。之前我一直以为是 "-s 9",结果每次运行都无法终止进程。

    killall:

    killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。

    $killall -9 firefox
     

    参考:https://www.cnblogs.com/liaojie970/p/7131043.html

  • 相关阅读:
    VirtualPathUtility.IsAppRelative的bug?
    textoverflow: ellipsis 在IE8、9下显示问题
    Windows Server 2012 不支持SharePoint Server 2010(KB2724471)
    本地测试网址推荐
    神奇的img
    json三层解析(数组解析)
    json两层解析
    把json数据转化成对象
    Centos7 修改yum源为阿里源
    使用Webdriver刷博客文章评论
  • 原文地址:https://www.cnblogs.com/hozhangel/p/10718863.html
Copyright © 2011-2022 走看看