我一直以来有一个误解,那就是在终端运行某个程序时,按下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
[]+ 已停止 ./echoServer
[xiaoku@localhost workspace]$ ./echoServer
bind error
[xiaoku@localhost workspace]

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

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

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

[xiaoku@localhost workspace]$ jobs
[]+ 已停止 ./echoServer
[xiaoku@localhost workspace]$ bg
[]+ ./echoServer &
[xiaoku@localhost workspace]$ jobs
[]+ 运行中 ./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.0.0:* LISTEN
[xiaoku@localhost workspace]$ lsof -i:6789        <这里使用lsof查看指定的端口号6789所对应的进程名称、ID等信息>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
echoServe xiaoku 3u IPv4 0t0 TCP *:smc-https (LISTEN)
[xiaoku@localhost workspace]$ kill - 2796    <强行杀死进程>
[]+ 已杀死 ./echoServer
[xiaoku@localhost workspace]$ ./echoServer &   <直接后台运行进程>
[]
Listening...
[xiaoku@localhost workspace]$ jobs
[]+ 运行中 ./echoServer &
[xiaoku@localhost workspace]$  

[原]对Linux环境下任务调度一点认识的更多相关文章

  1. Unix/Linux环境下多一点不如少一点

    正如很多人所知道的$PATH环境变量里存着一张目录列表,当用户要执行某一程序时,系统就会按照列表中的内容去查找该程序的位置.当程序名前不带点斜线 . / 时$PATH就会起作用. 对于普通用户和roo ...

  2. 【原】Linux环境下Shell调用MySQL并实现定时任务

    对于一些周期性事务,我们可以在Linux下,使用shell脚本调用mysql数据库存储过程,并设置定时任务. 本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...使用cron ...

  3. [原]Fedora Linux环境下的应用工具总结

    一.办公类软件 1.Office办公:WPS 二.网络通信类软件 1.浏览器:Chrome 2.远程桌面:rdesktop(适用于Windows系列) 三.操作系统设置与优化 1.3D桌面管理:Com ...

  4. 【ARM-Linux开发】Linux环境下使用eclipse开发C++动态链接库程序

    Linux环境下使用eclipse开发C++动态链接库程序 Linux中也有类似windows中DLL的变成方法,只不过名称不同而已.在Linux中,动态链接叫做Standard Object,生成的 ...

  5. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

  6. 多线程编程之Linux环境下的多线程(一)

    一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...

  7. 【转载】linux环境下tcpdump源代码分析

    linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02  CSDN博客 原文链接  http://blog.csdn.net/han_dawei/article/d ...

  8. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  9. linux环境下tcpdump源代码分析

    Linux 环境下tcpdump 源代码分析 韩大卫@吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分 ...

随机推荐

  1. 让UIWebView弹出键盘上的按钮显示中文

    UIWebView是一个很常用的视图,一般用来加载网页,比如百度: 点击文本框输入框后,会弹出一个带有toolbar的键盘,toolbar中有3个辅助按钮 有了这3个按钮,是方便很多,但默认是英文的, ...

  2. dedecms内容页 上下篇 添加文章描述方法

    dedecms5.7修改后 运行正常! 在根目录include文件夹中修改arc.archives.class.php文件,812行左右:为$query添加查询字段arc.description,分别 ...

  3. 使用u32过滤器设置基于mac地址的下载限制

    u32过滤器一般使用ip地址作为匹配规则,但按照其定义,它可以匹配ip包头的任意地址,这里使用mac地址限制局域网的下载速度,避免客户端修改ip后其下载速度得不到控制.tc qdisc del dev ...

  4. 感知机学习算法 python实现

    参考李航<统计学习方法> 一开始的感知机章节,看着不太复杂就实现一下... """ 感知机学习算法的原始形式 例2.1 """ ...

  5. HDU 4497 数论+组合数学

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 解题思路:将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y' ...

  6. c#部分--- 一维数组放到集合中,在从集合中提取输出

    输入班级人数,统计人名,性别,年龄: 建立一维数组,并放到集合中: //Console.Write("请输入班级人数:"); //int a = int.Parse(Console ...

  7. c#部分---输入班级人数,输入语文数学英语成绩,打印语文前两名,数学后两名,英语平均分

    1.开始收集输入项 2.用冒泡排序,统计语文成绩,并附带把语数英三门课全排列 3.数学成绩排序,附带把三门课全排序‘ 4.最后算英语的平均分:

  8. Codeforces Round #142 (Div. 2)

    A. Dragons 按\(x\)排序. B. T-primes \(x\)是平方数,且根\(\sqrt{x}\)是个质数. C. Shifts 枚举列的位置,对于每行来说,最多只会涉及4个列. D. ...

  9. Codeforces Round #125 (Div. 2)

    A. Hexadecimal's theorem 三个数没有限制,直接输出\(0\ 0\ n\). B. Special Olympics 分包含和外离情况,包含分2种情况. C. About Bac ...

  10. 《Java程序设计》第8周学习总结

    学号20145220 <Java程序设计>第8周学习总结 教材学习内容总结 15.1.1日志API简介 java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件 ...