当前位置: 首页 > 编程日记 > 正文

[原]对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]$  

转载于:https://www.cnblogs.com/kuliuheng/p/3988536.html

相关文章:

决策树的C++实现(CART)

关于决策树的介绍可以参考&#xff1a; https://blog.csdn.net/fengbingchun/article/details/78880934 CART算法的决策树的Python实现可以参考&#xff1a; https://blog.csdn.net/fengbingchun/article/details/78881143 这里参考 https://machinelearningmastery.com/impl…

iOS开发-由浅至深学习block

作者&#xff1a;Sindri的小巢&#xff08;简书&#xff09; 关于block 在iOS 4.0之后&#xff0c;block横空出世&#xff0c;它本身封装了一段代码并将这段代码当做变量&#xff0c;通过block()的方式进行回调。这不免让我们想到在C函数中&#xff0c;我们可以定义一个指向函数…

Google和微软分别提出分布式深度学习训练新框架:GPipe PipeDream

【进群了解最新免费公开课、技术沙龙信息】作者 | Jesus Rodriguez译者 | 陆离编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】微软和谷歌一直在致力于开发新的用于训练深度神经网络的模型&#xff0c;最近&#xff0c;谷歌和微软分别…

fragment 横竖屏 不重建

2019独角兽企业重金招聘Python工程师标准>>> android:configChanges"screenSize|orientation" 这样设置 切屏时都不会重新调用fragment里面的onCreateView了 转载于:https://my.oschina.net/u/1777508/blog/317811

二叉树简介及C++实现

二叉树是每个结点最多有两个子树的树结构&#xff0c;即结点的度最大为2。通常子树被称作”左子树”和”右子树”。二叉树是一个连通的无环图。 二叉树是递归定义的&#xff0c;其结点有左右子树之分&#xff0c;逻辑上二叉树有五种基本形态&#xff1a;(1)、空二叉树&#xf…

swift实现ios类似微信输入框跟随键盘弹出的效果

为什么要做这个效果 在聊天app&#xff0c;例如微信中&#xff0c;你会注意到一个效果&#xff0c;就是在你点击输入框时输入框会跟随键盘一起向上弹出&#xff0c;当你点击其他地方时&#xff0c;输入框又会跟随键盘一起向下收回&#xff0c;二者完全无缝连接&#xff0c;那么…

行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...

作者 | Jiaxu Miao、Yu Wu、Ping Liu、Yuhang Ding、Yi Yang译者 | 刘畅编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】在以人搜人的场景中&#xff0c;行人会经常被各种物体遮挡。之前的行人再识别&#xff08;re-id&#xff09;方法…

WinAPI: Arc - 绘制弧线

为什么80%的码农都做不了架构师&#xff1f;>>> //声明: Arc(DC: HDC; {设备环境句柄}X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer {四个坐标点} ): BOOL;//举例: procedure TForm1.FormPaint(Sender: TObject); constx1 10;y1 10;…

提高C++性能的编程技术笔记:跟踪实例+测试代码

当提高性能时,我们必须记住以下几点&#xff1a; (1). 内存不是无限大的。虚拟内存系统使得内存看起来是无限的&#xff0c;而事实上并非如此。 (2). 内存访问开销不是均衡的。对缓存、主内存和磁盘的访问开销不在同一个数量级之上。 (3). 我们的程序没有专用的CPU&#xff…

2019年不可错过的45个AI开源工具,你想要的都在这里

整理 | Jane 出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100)一个好工具&#xff0c;能提高开发效率&#xff0c;优化项目研发过程&#xff0c;无论是企业还是开发者个人都在寻求适合自己的开发工具。但是&#xff0c;选择正确的工具并不容易&#xff0c;有时这甚至是…

swift中delegate与block的反向传值

swift.jpg入门级 此处只简单举例并不深究&#xff0c;深究我也深究不来。对于初学者来说delegate或block都不是一下子能理解的&#xff0c;所以我的建议和体会就是&#xff0c;理不理解咱先不说&#xff0c;我先把这个格式记住&#xff0c;对就是格式&#xff0c;delegate或blo…

Direct2D (15) : 剪辑

为什么80%的码农都做不了架构师&#xff1f;>>> 绘制在 RenderTarget.PushAxisAlignedClip() 与 RenderTarget.PopAxisAlignedClip() 之间的内容将被指定的矩形剪辑。 uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject); varcvs: TDirect2DCanvas;…

女朋友啥时候怒了?Keras识别面部表情挽救你的膝盖

作者 | 叶圣出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】随着计算机和AI新技术及其涉及自然科学的飞速发展&#xff0c;整个社会上的管理系统高度大大提升&#xff0c;人们对类似人与人之间的交流日渐疲劳而希望有机器的理解。计算机系统和机械人如果需要…

提高C++性能的编程技术笔记:构造函数和析构函数+测试代码

对象的创建和销毁往往会造成性能的损失。在继承层次中&#xff0c;对象的创建将引起其先辈的创建。对象的销毁也是如此。其次&#xff0c;对象相关的开销与对象本身的派生链的长度和复杂性相关。所创建的对象(以及其后销毁的对象)的数量与派生的复杂度成正比。 并不是说继承根…

swim 中一行代码解决收回键盘

//点击空白收回键盘 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { view.endEditing(true) }

WinAPI: SetRect 及初始化矩形的几种办法

为什么80%的码农都做不了架构师&#xff1f;>>> 本例分别用五种办法初始化了同样的一个矩形, 运行效果图: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 class(TForm)Butto…

Windows10上使用VS2017编译OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.6.2操作步骤

1. 从https://github.com/opencv/opencv/releases 下载opencv-3.4.2.zip并解压缩到D:\soft\OpenCV3.4.2\opencv-3.4.2目录下&#xff1b; 2. 从https://github.com/opencv/opencv_contrib/releases 下载opencv_contrib-3.4.zip并解压缩到D:\soft\OpenCV3.4.2\opencv_contrib-3…

swift 跳转网页写法

var alert : UIAlertView UIAlertView.init(title: "公安出入境网上办事平台", message: "目前您可以使用网页版进行出入境业务预约与查询&#xff0c;是否进入公安出入境办事平台&#xff1f;", delegate: nil, cancelButtonTitle: "取消", o…

智能边缘计算:计算模式的再次轮回

作者 | 刘云新来源 | 微软研究院AI头条&#xff08;ID:MSRAsia&#xff09;【导读】人工智能的蓬勃发展离不开云计算所带来的强大算力&#xff0c;然而随着物联网以及硬件的快速发展&#xff0c;边缘计算正受到越来越多的关注。未来&#xff0c;智能边缘计算将与智能云计算互为…

WinAPI: 钩子回调函数之 SysMsgFilterProc

为什么80%的码农都做不了架构师&#xff1f;>>> SysMsgFilterProc(nCode: Integer; {}wParam: WPARAM; {}lParam: LPARAM {} ): LRESULT; {}//待续...转载于:https://my.oschina.net/hermer/blog/319736

提高C++性能的编程技术笔记:虚函数、返回值优化+测试代码

虚函数&#xff1a;在以下几个方面&#xff0c;虚函数可能会造成性能损失&#xff1a;构造函数必须初始化vptr(虚函数表)&#xff1b;虚函数是通过指针间接调用的&#xff0c;所以必须先得到指向虚函数表的指针&#xff0c;然后再获得正确的函数偏移量&#xff1b;内联是在编译…

ICCV 2019 | 无需数据集的Student Networks

译者 | 李杰 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本文是华为诺亚方舟实验室联合北京大学和悉尼大学在ICCV2019的工作。摘要在计算机视觉任务中&#xff0c;为了将预训练的深度神经网络模型应用到各种移动设备上&#xff0c;学习一个轻便的网络越来越重要。…

oc中特殊字符的判断方法

-(BOOL)isSpacesExists { // NSString *_string [NSString stringWithFormat:"123 456"]; NSRange _range [self rangeOfString:" "]; if (_range.location ! NSNotFound) { //有空格 return YES; }else { //没有空格 return NO; } } -(BOOL)i…

理解 Delphi 的类(十) - 深入方法[23] - 重载

为什么80%的码农都做不了架构师&#xff1f;>>> {下面的函数重名, 但参数不一样, 此类情况必须加 overload 指示字;调用时, 会根据参数的类型和个数来决定调用哪一个;这就是重载. }function MyFun(s: string): string; overload; beginResult : 参数是一个字符串: …

玩转ios友盟远程推送,16年5月图文防坑版

最近有个程序员妹子在做远程推送的时候遇到了困难&#xff0c;求助本帅。尽管本帅也是多彩的绘图工具&#xff0c;从没做过远程推送&#xff0c;但是本着互相帮助&#xff0c;共同进步的原则&#xff0c;本帅还是掩饰了自己的彩笔身份&#xff0c;耗时三天&#xff08;休息时间…

提高C++性能的编程技术笔记:临时对象+测试代码

类型不匹配&#xff1a;一般情况是指当需要X类型的对象时提供的却是其它类型的对象。编译器需要以某种方式将提供的类型转换成要求的X类型。这一过程可能会产生临时对象。 按值传递&#xff1a;创建和销毁临时对象的代价是比较高的。倘若可以&#xff0c;我们应该按指针或者引…

北美欧洲顶级大咖齐聚,在这里读懂 AIoT 未来!

2019 嵌入式智能国际大会即将来袭&#xff01;购票官网&#xff1a;https://dwz.cn/z1jHouwE随着海量移动设备的时代到来&#xff0c;以传统数据中心运行的人工智能计算正在受到前所未有的挑战。在这一背景下&#xff0c;聚焦于在远离数据中心的互联网边缘进行人工智能运算的「…

c# 关闭软件 进程 杀死进程

c# 关闭软件 进程 杀死进程 foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("Server")){p.Kill();} 转载于:https://www.cnblogs.com/lxctboy/p/3999053.html

提高C++性能的编程技术笔记:单线程内存池+测试代码

频繁地分配和回收内存会严重地降低程序的性能。性能降低的原因在于默认的内存管理是通用的。应用程序可能会以某种特定的方式使用内存&#xff0c;并且为不需要的功能付出性能上的代价。通过开发专用的内存管理器可以解决这个问题。对专用内存管理器的设计可以从多个角度考虑。…

【Swift】 GETPOST请求 网络缓存的简单处理

GET & POST 的对比 源码&#xff1a; https://github.com/SpongeBob-GitHub/Get-Post.git 1. URL - GET 所有的参数都包含在 URL 中 1. 如果需要添加参数&#xff0c;脚本后面使用 ? 2. 参数格式&#xff1a;值对 参数名值 3. 如果有多个参数&#xff0c;使用 & 连接 …