zoukankan      html  css  js  c++  java
  • ③linux 进程管理

    管理进程状态

    当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号。当然除了kill、还有killall,pkill

    1.使用kill -l列出当前系统所支持的信号

    [root@rstx-53 ~]# kill -l
     1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
     6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
    11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
    16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
    21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
    26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
    31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
    38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
    43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
    48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
    53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
    58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
    63) SIGRTMAX-1	64) SIGRTMAX	
    

    虽然linux支持信号很多,但是我们仅列出我们最为常用的3个信号

    数字编号 信号含义 信号翻译
    1 SIGHUP 通常用来重新加载配置文件
    9 SIGKILL 强制杀死进程
    15 SIGTERM 终止进程,默认kill使用该信号

    1.我们使用kill命令杀死指定PID的进程。

    #1.给 vsftpd 进程发送信号 1,15
    [root@xuliangwei ~]# yum -y install vsftpd
    [root@xuliangwei ~]# systemctl start vsftpd
    [root@xuliangwei ~]# ps aux|grep vsftpd
    
    #2.发送重载信号,例如 vsftpd 的配置文件发生改变,希望重新加载
    [root@xuliangwei ~]# kill -1 9160
    
    #3.发送停止信号,当然vsftpd 服务有停止的脚本 systemctl stop vsftpd
    [root@xuliangwei ~]# kill 9160
    
    #4.发送强制停止信号,当无法停止服务时,可强制终止信号
    [root@xuliangwei ~]# kill -9 9160
    

    2.Linux系统中的killall、pkill命令用于杀死指定名字的进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall、pkill把这两个过程合二为一,是一个很好用的命令。

    #例1、通过服务名称杀掉进程
    [root@xuliangwei ~]# pkill nginx
    [root@xuliangwei ~]# killall nginx
    
    #例2、使用pkill踢出从远程登录到本机的用户,终止pts/0上所有进程, 并且bash也结束(用户被强制退出)
    [root@xuliangwei ~]# pkill -9 -t pts/0
    

    管理后台进程

    1.什么是后台进程
    通常进程都会在终端前台运行,一旦关闭终端,进程也会随着结束,那么此时我们就希望进程能在后台运行,就是将在前台运行的进程放入后台运行,这样及时我们关闭了终端也不影响进程的正常运行。

    2.我们为什么要将进程放入后台运行
    比如:我们此前在国内服务器往国外服务器传输大文件时,由于网络的问题需要传输很久,如果在传输的过程中出现网络抖动或者不小心关闭了终端则会导致传输失败,如果能将传输的进程放入后台,是不是就能解决此类问题了。

    3.使用什么工具将进程放入后台
    早期的时候大家都选择使用&符号将进程放入后台,然后在使用jobs、bg、fg等方式查看进程状态,但太麻烦了。也不直观,所以我们推荐使用screen。

    1.jobs、bg、fg的使用(强烈不推荐,了解即可)

    [root@xuliangwei ~]# sleep 3000 & //运行程序(时),让其在后台执行
    [root@xuliangwei ~]# sleep 4000 //^Z,将前台的程序挂起(暂停)到后台
    [2]+ Stopped sleep 4000
    [root@xuliangwei ~]# ps aux |grep sleep
    [root@xuliangwei ~]# jobs //查看后台作业
    [1]- Running sleep 3000 &
    [2]+ Stopped sleep 4000

    [root@xuliangwei ~]# bg %2 //让作业 2 在后台运行
    [root@xuliangwei ~]# fg %1 //将作业 1 调回到前台
    [root@xuliangwei ~]# kill %1 //kill 1,终止 PID 为 1 的进程

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

    2.screen的使用(强烈推荐,生产必用)

    常用 screen 参数 效果
    screen -S session_name # 新建一个叫 session_name 的 session
    screen -ls(或者 screen -list) # 列出当前所有的 session
    screen -r session_name # 回到 session_name 这个 session
    screen -d session_name # 远程 detach 某个 session
    screen -d -r session_name # 结束当前 session 并回到 session_name 这个 session
    #1.安装
    centos安装screen
    [root@oldboy ~]# yum install screen -y
    
    ubuntu/debian
    [root@oldboy ~]# apt-get install screen -y
    
    #2.开启一个screen窗口,指定名称
    [root@oldboy ~]# screen -S wget_mysql
    
    #3.在screen窗口中执行任务即可
    
    #4.平滑的退出screen,但不会终止screen中的任务。注意: 如果使用exit 才算真的关闭screen窗口
    ctrl+a+d
    
    #5.查看当前正在运行的screen有哪些
    [root@oldboy ~]# screen -list
    There is a screen on:
        22058.wget_mysql    (Detached)
    1 Socket in /var/run/screen/S-root.
    
    #6.进入正在运行的screen
    [root@oldboy ~]# screen -r wget_mysql
    [root@oldboy ~]# screen -r 22058
    
  • 相关阅读:
    day-14 模块的使用,循环导入,模块导入路径优先级,项目的目录结构
    day13-三元表达式,生成式,递归函数,匿名函数
    day12-无参装饰器,迭代器和生成器
    day11-函数对象,函数嵌套,名称空间与作用域,闭包函数,以及装饰器的前言
    一周总结(4)
    大道至简读后感
    一周总结(3)
    一周总结(2)
    一周总结(1)
    关于教室派app的使用体验与建议
  • 原文地址:https://www.cnblogs.com/yangtao416/p/14517730.html
Copyright © 2011-2022 走看看