zoukankan      html  css  js  c++  java
  • [RH124] 8-进程

    1.查看系统进程

    图形化界面:系统工具(system tools)---->系统监视器(system monitor)

     

     

    2.进程的概念

    PID:Process id,进程ID。进程的唯一标识。

    子进程:也是一个独立的进程,当创建子进程的时候,子进程是对父进程的一个完整复制。

    信号:父进程要对子进程进行操作,是通过信号来告诉子进程的。

    kill -l:查看所有信号。

    常用信号:

    1.SIGHUP:挂起信号。
    2.SIGHINT:平时执行的Ctrl+C。
    9.SIGKILL:强制杀死进程。
    15.SIGTERM:普通的结束进程,但有时候杀不掉,就要使用9号信号。

    例如:

    我们打开一个终端,终端会启动一个Shell子进程。
    在我们关闭终端时,相应的SHELL子进程也会结束。

    3.查看进程

    ps:使用该名称查看进程信息。如果不加选项,那么查看的只是当前终端的进程。

    ps aux:查看所有进程,UNIX风格。推荐使用,信息更多。a表示所有,u表示显示进程所有者用户,x表示显示运行在终端的进程和所有后台进程,如果不写x,只会显示运行在终端的进程。

    ps -ef:同上,Linux风格。

    第1列:USER,指进程所属用户。
    第2列:PID,进程号。
    第3列:%CPU,CPU占用率。
    第4列:%MEM,内存占用率。
    第5列:VSZ,消耗的线性内存。
    第6列:RSS,消耗的真实的物理内存。
    第7列:TTY,属于哪个终端,如果是"",表示后台进程。
    第8列:STAT,进程的状态。如下图:

    第9列:START,进程启动时间。
    第10列:TIME,进程运行了多少时间。
    第11列:COMMAND,使用什么命令运行的该进程,或者是由什么引起的该进程。

    自定义需要查看的列:

     ps -ex -o user,pid,%cpu,%mem :自定义查看所属用户、pid、CPU占用率、内存占用率。

    查看一个进程运行在哪个CPU上:

     cat /dev/zero > /dev/null :/dev/zero是取之不尽的,写到/dev/null黑洞,形成一个死循环。

     ps mo pid,psr `pgrep cat` :查看cat进程运行在哪个CPU。

    小技巧:

     ps aux | grep -v grep | grep bash :从进程中过滤出bash进程,但是会默认过滤出grep进程,我们使用grep -v grep将grep进程反向过滤掉。

    查询某个进程的PID:

     pgrep cat :查询包含"cat"字符进程的PID。匹配cat字符。

     pidof cat :查询cat进程的PID。完全匹配cat。

    杀死进程:

     kill -9 pid : kill -9 `pgrep cat` 或 kill -9 `pidof cat` 。

     killall -9 cat :通过名字杀死进程。

    pkill:

    当某个用户正在登录状态,我们想使用userdel删除该用户,会提示用户正在登录,无法删除。

    此时,我们可以使用pkill来把该用户踢出登录。

    1) w | grep bob :查看bob状态,假设在终端tty2上登录。

    2) pkill -kill -t tty2 :把终端tty2杀死,就是把在tty2上的bob用户踢掉线。

    3) userdel -r bob :删除bob用户和相关目录文件。

    4) id bob :查询bob,已经不存在了。

    查看进程树状关系图:

    pstree:

    4.后台运行(&符号)

    前台:终端会被占用。

    后台:终端不会被阻塞。使用jobs查看后台程序。

    前台切到后台:

    前台运行程序时,终端被占用,但是我们想执行其他命令:

    1.使用Ctrl+z,可以把前台程序切换到后台运行,但默认会是停止的。

    2.使用jobs,查看后台的程序:

    3.使用"bg 编号"将停止的进程在后台运行起来。

    后台切到前台:

    1.使用jobs查看后台进程编号。

    2.使用"fg 编号"来把后台程序切换到前台,切换后终端会被占用。

     

    直接在后台运行程序:

    在运行命令的最后加上"&"符号,程序就会在后台运行了。

    如果程序出现一切静态、日志类的东西,不用关心,直接回车就可以了。例如:

    杀死后台程序:

    1.先使用jobs查看后台进程编号。

    2.使用 kill -9 %编号 杀死进程。千万注意,%1和1是不一样的,前者是后台程序的编号,后者是PID。

    (注:PID=1的进程是所有进程的父进程, 在RHEL7中叫systemd,在RHEL6中叫init 

    5.nohup

    问题:默认情况下,我们在终端里运行的程序(无论是前台还是后台),都属于该终端的子进程

    这样的话,我们如果关闭该终端,这些子进程都会被结束。

    目的:如果我们使用远程连接(CRT或XSHELL等工具),需要执行一个时间比较长的程序,而我们又不想等待。那么,我们可以使用nohup。

    如何使用: nohup firefox & 默认会把程序的输出放到 nohup.out (运行命令时所在目录中)中,我们可以重定向该日志输出文件。例如 nohup firefox & > output.log 

    在不使用nohup时,用pstree查看:

     |-gnome-terminal--+-bash---su---bash-+-firefox---45*[{firefox}] 

    使用nohup时:

    |-firefox-+-Web Content---19*[{Web Content}]
    
            |         `-43*[{firefox}]

    这样firefox就不属于任何终端了。

    6.动态查看进程

    top命令

    top命令默认3s刷新一次。

     top -d 1 :设置1s刷新一次。

    按数字1:可以显示多个CPU的信息。

     

    ===

  • 相关阅读:
    [Dynamic Language] Python Django: 模板引擎(1)基本使用
    [ASM C/C++] C函数调用分析
    [Linux] Ubuntu: 相关工具及配置
    xml小练习
    饿汉式懒汉式
    给定一个数组,获取数组中的最大值,以及最小值。
    Fighting
    通过API文档查询Math类的方法,打印出近似圆,只要给定不同半径,圆的大小就会随之发生改变
    对给定数组进行选择排序
    对给定数组进行冒泡排序
  • 原文地址:https://www.cnblogs.com/leokale-zz/p/12531598.html
Copyright © 2011-2022 走看看