博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原]对Linux环境下任务调度一点认识
阅读量:6981 次
发布时间:2019-06-27

本文共 1838 字,大约阅读时间需要 6 分钟。

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

[xiaoku@localhost workspace]$ lsechoServer  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 NAMEechoServe 2796 xiaoku 3u IPv4 1268175 0t0 TCP *:smc-https (LISTEN)[xiaoku@localhost workspace]$ kill -9 2796    
<强行杀死进程>
[1]+ 已杀死 ./echoServer[xiaoku@localhost workspace]$ ./echoServer &   
<直接后台运行进程>
[1] 2909Listening...[xiaoku@localhost workspace]$ jobs[1]+ 运行中 ./echoServer &[xiaoku@localhost workspace]$  

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

你可能感兴趣的文章
Swift值类型和引用类型的内存储存情况
查看>>
Java入门第五篇:Java集合框架的Collection、List、Set、Map接口
查看>>
反编译想到的代码安全问题
查看>>
第八章 单件模式 singleton
查看>>
冒泡排序
查看>>
管道的概念和一些用法 初步认识三剑客
查看>>
【第一组】第十四次冲刺例会纪要
查看>>
pyhon简单比较文本相似度的方法
查看>>
.NET设计模式(16):模版方法(Template Method)(转)
查看>>
CentOS 7 host-only 设置上网
查看>>
POI读取Word与Excel
查看>>
设计模式-策略模式
查看>>
L3-007. 天梯地图
查看>>
实验吧 围在栅栏中的爱
查看>>
常用git操作
查看>>
[LeetCode]题解(python):142-Linked List Cycle II
查看>>
gcc 与 g++的区别
查看>>
【Jmeter】分布式并发测试
查看>>
php7.2连接Sqlserver2008 r2
查看>>
设计模式(6)--命令模式
查看>>