美文网首页LinuxLinux 学习
Linux常用命令之--系统进程(PS,kill)及前后台操作(

Linux常用命令之--系统进程(PS,kill)及前后台操作(

作者: 逗儿比的日常 | 来源:发表于2020-12-21 17:04 被阅读0次

    进程概述

    具有某种选定任务的程序在一个数据集合上的一次具体执行过程
    每一个进程都有一个独立的进程号(Process ID,PID),系统通过调用进程号来调度操控进程
    系统的原始进程是systemd 。PID总是1,是系统中第一个启动的进程
    一个进程可以产生另一个进程。除了systemd 以外,所有的进程都有父进程

    查看进程PS

    ps [option] 前面不加-的就是不加
    • a 显示所有包括所有终端的进程
    • x 显示所有包括不连接终端的进程(如守护进程)
    • u 显示进程所有者的信息
    • p 显示指定进程ID的信息 后面跟PID
    • -e 显示所有进程
    • -f 显示进程的父进程
    因为-e包含-f,所以-e和-f连用分不清哪个是父进程,所以如果想看父进程,就单独用-f
    • -l 以长列表的方式显示信息
    • -o 属性,… 显示定制的信息(ps -o tty,pid或者是ps -o tty -o pid)这就是显示顺序
    • pid、comm、%cpu、%mem、state、tty…
    • pstree可以用来以树状的方式表现进程的父子关系
    ps的一般用法是ps aux | grep <包含的字符>

    搜索进程ps aux | grep XXX

    按预定的模式:pgrep
    • pgrep –U root 查看用户root运行的进程的进程号
    • pgrep –G redhat 查看组redhat运行的进程的进程号
    按确切的程序名称:pidof
    • pidof bash
    通过管道来搜索(上面的按预定和按确切程序的不常用)
    • ps aux | grep XXX 最重要的
    ps aux | grep root

    控制进程

    kill

    用于向指定进程号发送特定信号
    语法:kill [-signal] <PID>
    • kill -l:列出所有可以由kill传递的讯号
    • man 7 signal:显示信号的详细列表
    • -15,TERM(默认)-整洁终止
    默认为15(终结),把这个进程要做的事儿做完再死
    • -9,KILL-立即终止

    killall

    根据进程名来发送选定信号
    语法:killall [-signal] <进程名>
    比如我yum安装一个软件包的时候给它通过ctrl+z打断了,如果我再敲同样的命令的时候会有如下的提示,告诉我有安装还没退出,当前安装无法开始。需要等它退出才能继续

     Another app is currently holding the yum lock; waiting for it to exit...
     The other application is: yum
     Memory : 97 M RSS (457 MB VSZ)
     Started: Sat Jul 6 13:55:48 2019 - 01:44 ago
     State : Traced/Stopped, **pid: 13041**
    

    这时可以通过kill掉这个进程来解决这个问题
    ps aux | grep yum 可以看到关于yum的进程,我记住一个进程号,比如为15177,
    我通过kill -15 15177 杀不死。但是通过kill -9 15177可以杀死。像yum中断这种,它已经中断了,无法再继续完成它的任务后再被杀死,所以-15是杀不死它的,必须要通过-9
    ❉killall后面还是加-9或-15。但是killall后面加的不是pid,而是进程名
    如果有一个进程A,它依赖于B,那么即使杀死B,A还会重新生成B。但一般都不会平白无故杀死一个进程,都是在一个进程严重占用系统资源的时候杀死它
    ★killall -9 systemd 执行不了,因为执行这个权限是systemd给的,所以不能杀掉这个进程

    前台进程与后台进程

    进程描述:
    默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之,则称为后台进程。比如qq,最小化以后就是后台状态。前台的不一定是运行的,也可能是僵尸。后台的不代表不是运行的
    对每一个终端,都允许多个后台进程
    对前台/后台进程的控制与调度,被称为任务控制

    将一个前台进程放入后台

    • <command> & 将一个进程直接丢入后台,在后台还是在运行的
    killall -15能杀死
    想让控制台能正常写别的命令行就ctrl+d
    • ctrl + z:将一个正在运行的前台进程暂时停止,并丢入后台
    killall -15杀不死它,只能用killall -9
    前台运行的时候可以通过ctrl+z打断,但后台运行的通过ctrl+z打断不了,只能通过kill给它发送结束信号才能结束

    后台进程的控制

    • jobs 列出系统作业号和名称
    • fg [%作业号] 将后台中的命令调至前台继续运行
    • bg [%作业号] 将在后台暂停的命令恢复在后台运行
    • kill [%作业号] 给对应的作业发送终止信号
    如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程
    nohup <命令> &

    相关文章

      网友评论

        本文标题:Linux常用命令之--系统进程(PS,kill)及前后台操作(

        本文链接:https://www.haomeiwen.com/subject/atornktx.html