zoukankan      html  css  js  c++  java
  • [原]对Linux环境下任务调度一点认识

      我一直以来有一个误解,那就是在终端运行某个程序时,按下Ctrl + D时我误以为就是杀死了这个进程,今天才知道原来不是。比如我利用libevent在Linux环境下写了一个网络监听程序,当启动程序之后,就会一直监听本地的6789端口。如果此时按下Ctrl + D,其实这个进程不是结束了,而是暂停并转为后台运行了(Ctrl + C才是终止进程。当再次启动程序的时,就是因为端口被占用而出现“bind error”,请看:

    [xiaoku@localhost workspace]$ ls
    echoServer  main.cpp  tags
    [xiaoku@localhost workspace]$ ./echoServer 
    Listening...
    ^Z
    [1]+  已停止               ./echoServer
    [xiaoku@localhost workspace]$ ./echoServer 
    bind error
    [xiaoku@localhost workspace]

      此时利用jobs可以查看后台状态,并利用fg命令将任务转为前台运行:

    [xiaoku@localhost workspace]$ jobs
    [1]+  已停止               ./echoServer
    [xiaoku@localhost workspace]$ fg 1
    ./echoServer

      利用bg命令可以将后台停止的任务转为后台运行:

    [xiaoku@localhost workspace]$ jobs
    [1]+  已停止               ./echoServer
    [xiaoku@localhost workspace]$ bg
    [1]+ ./echoServer &
    [xiaoku@localhost workspace]$ jobs
    [1]+  运行中               ./echoServer &
    [xiaoku@localhost workspace]$ 

      所以总结起来有以下几点:

    (1)Ctrl + z 停止进程并放入后台运行

    (2) jobs 显示当前后台运行的进程

    (3) bg %N 使第N个任务在后台运行(%前有空格),如果不带%N则表示对最后一个进程操作

    (4) fg %N  使第N个任务在前台运行(%前有空格),如果不带%N则表示对最后一个进程操作

    (5)Ctrl + c 终止进程!

      如果我想停止这个进程怎么办呢?最简单的办法就是先调用fg将任务切换到前台运行,然后按Ctrl + c。不过也可以用暴力手段,下面介绍一下如何查看端口状态和(通过端口号)找到相关进程号,并强行杀死进程:

    [xiaoku@localhost workspace]$ netstat -tln | grep 6789 <使用netstat查看端口状态>
    tcp        0      0 0.0.0.0:6789            0.0.0.0:*               LISTEN     
    [xiaoku@localhost workspace]$ lsof -i:6789        <这里使用lsof查看指定的端口号6789所对应的进程名称、ID等信息>
    COMMAND    PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    echoServe 2796 xiaoku    3u  IPv4 1268175      0t0  TCP *:smc-https (LISTEN)
    [xiaoku@localhost workspace]$ kill -9 2796    <强行杀死进程>
    [1]+  已杀死               ./echoServer
    [xiaoku@localhost workspace]$ ./echoServer &   <直接后台运行进程>
    [1] 2909
    Listening...
    [xiaoku@localhost workspace]$ jobs
    [1]+  运行中               ./echoServer &
    [xiaoku@localhost workspace]$  
  • 相关阅读:
    【资料分享】 OpenCV精华收藏 续
    【收藏+原创】商业网站
    【图像算法】彩色图像分割专题五:提取彩色图像上特定色彩
    【图像算法】彩色图像分割专题四:测试图片的生成
    【My Project】织物疵点检测机器视觉系统 平台二
    【资料收藏】HQU校内免费资源
    七八
    【music】Give me some sunshine
    【图像算法】彩色图像分割专题六:一种基于颜色直方图的图像分割
    【图像算法】彩色图像分割专题二:显示屏幕上任意点颜色值
  • 原文地址:https://www.cnblogs.com/kuliuheng/p/3988536.html
Copyright © 2011-2022 走看看