zoukankan      html  css  js  c++  java
  • linux进程(二)

    信号管理进程
    使用kill命令发送信号与进程通信
    定义守护进程的角色
    结束用户会话的进程
    kill,killall,pgrep,pkill

    对于进程的正常关闭的理解
    正常关闭程序的方法
    systemctl stop
    kill -15/kill
    使用程序自带的关闭方法

    [root@localhost ~]# kill -l //列出所有支持的信号

    //常见信号列表:
    数字信号 信号别名 作用
    1              HUP       挂起信号,往往可以让进程重新配置
    2              INT         中断信号,起到结束进程的作用,和ctrl+c的作用一样
    3              QUIT      让进程退出,结果是进程退出
    9              KILL       直接结束进程,不能被进程捕获
    15            TERM    进程终止,这是默认信号
    18            CONT    被暂停的进程将继续恢复运行
    19            STOP     暂停进程
    20            TSTP     用户停止请求,作用类似于ctrl+z把进程放到后台并暂停

    [root@localhost ~]# ps aux |grep httpd
    root 1417 1.0 0.2 224064 5004 ? Ss 14:30 0:00 /usr/sbin/httpd -DFOREGROUND
    apache 1418 0.0 0.1 224064 2940 ? S 14:30 0:00 /usr/sbin/httpd -DFOREGROUND
    apache 1419 0.0 0.1 224064 2940 ? S 14:30 0:00 /usr/sbin/httpd -DFOREGROUND
    apache 1420 0.0 0.1 224064 2940 ? S 14:30 0:00 /usr/sbin/httpd -DFOREGROUND
    apache 1421 0.0 0.1 224064 2940 ? S 14:30 0:00 /usr/sbin/httpd -DFOREGROUND
    apache 1422 0.0 0.1 224064 2940 ? S 14:30 0:00 /usr/sbin/httpd -DFOREGROUND

    使用kill关闭,后面只能接进程id号
    kill 1418 //关闭子进程,需要一个一个关
    kill 1417 //关闭父进程,一次进行

    使用killall关闭,后面只能接进程名
    killall httpd

    //给vim进程发送信号9,15
    //使用远程终端1打开file1
    [root@localhost ~]# tty
    /dev/pts/0
    [root@localhost ~]# vim file1
    //使用远程终端1打开file2
    [root@localhost ~]# tty
    /dev/pts/1
    [root@localhost ~]# vim file2
    //查看当前pid
    [root@localhost ~]# ps aux | grep vim
    root 1451 0.2 0.2 149460 5092 pts/1 S+ 14:57 0:00 vim file2
    root 1452 0.2 0.2 149460 5088 pts/0 S+ 14:57 0:00 vim file1
    //发送15信号
    [root@localhost ~]# kill 1451
    //发送9信号
    [root@localhost ~]# kill -9 1452
    //还可以同时给所有vim进程发送信号,模糊匹配,同时给多个进程发送信号
    [root@localhost ~]# killall vim

    //使用pkill踢出从远程登录到本机的用户,pkill 类似killall
    [root@localhost ~]# w
    15:21:09 up 1:17, 3 users, load average: 0.00, 0.01, 0.03
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root pts/0 10.0.1.26 14:04 2:45 0.06s 0.06s -bash
    root pts/1 10.0.1.26 14:57 2:53 0.00s 0.00s -bash
    root pts/2 10.0.1.26 14:57 5.00s 0.03s 0.01s w

    //终止ps/0上所有进程,除了bash本身
    [root@localhost ~]# pkill -t pts/0
    //终止pts/0上所有进程,并且bash也结束(用户被强制退出)
    [root@localhost ~]# pkill -9 -t pts/0

    //列出oldboy用户的所有进程,-l输出pid
    [root@localhost ~]# pgrep -l -u oldboy
    1549 sshd
    1550 bash

    使用pkill关闭进程

    关闭某个终端
    pkill -u oldboy
    pkill -9 -t pts/1

    后台进程管理
    作业控制是一个命令行功能,允许一个shell实例来运行和管理多个命令。
    如果没有作业控制,父进程fork()一个子进程后,将sleeping,直到子进程退出。
    使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让shell可以在子进程运行期间返回接收其他命令。

    前台进程,后台进程jobs,bs,fg
    ctrl+z ,ctrl+c , ctrl+B

    [root@localhost ~]# cat hello.sh
    while true
    do
    echo "hello"
    sleep 2
    done

    已知当前运行进程耗时
    cmd&
    未知当前运行进程耗时
    cmd
    ctrl+z //暂停放入后台
    bg //在后台运行(需要通过jobs查看该进程的序号)

    [root@localhost ~]# sleep 3000 & //运行程序(时),让其在后台运行
    [3] 1460
    [root@localhost ~]# sleep 4000 //^Z ,将前台的程序挂起(暂停)到后台
    ^Z
    [4]+ 已停止 sleep 4000
    [root@localhost ~]# ps aux | grep sleep
    root 1460 0.0 0.0 107956 616 pts/1 S 16:13 0:00 sleep 3000
    root 1461 0.0 0.0 107956 612 pts/1 T 16:13 0:00 sleep 4000
    root 1463 0.0 0.0 112728 972 pts/1 R+ 16:14 0:00 grep --color=auto sleep
    [root@localhost ~]# jobs
    [1] 已停止 vim
    [2]- 已停止 vim
    [3] 运行中 sleep 3000 &
    [4]+ 已停止 sleep 4000

    [root@localhost ~]# bg %4 //让作业4在后台运行
    [root@localhost ~]# fg %3 //将作业1调回至前台
    [root@localhost ~]# kill %3 //kill 1,终止pid为1的进程

    [root@localhost ~]# (while :; do date; sleep 2; done) //进程在后台运行,但输出依然在前端
    [root@localhost ~]# (while :;do date ;sleep 2 ;done)& >/dev/null &

  • 相关阅读:
    (十)条件判断
    (九)字符处理命令
    (八)awk命令
    (六)环境变量配置文件
    (七)grep命令行提取符号
    Ⅶ 类模板与STL编程 ②
    Ⅵ 虚函数与多态性
    Ⅴ 运算符重载
    Ⅳ 继承与派生②
    Ⅳ 继承与派生①
  • 原文地址:https://www.cnblogs.com/xmtxh/p/12088823.html
Copyright © 2011-2022 走看看