工程师(程序员)必会技能:后台运行程序并杀死程序(Nohup)

简介: 必会技能在工程师(程序员)的学习和工作中,天天都在和程序打交道,然后依然有蛮多同学,竟然不知道如何去后台运行程序,并在需要的时候杀死它。

必会技能

在工程师(程序员)的学习和工作中,天天都在和程序打交道,然后依然有蛮多同学,竟然不知道如何去后台运行程序,并在需要的时候杀死它。


一、Nohup

如果要实现程序的后台运行,现在用的比较多的一种方案就是Nohup。
那么来看看这个到底是什么
Nohup维基百科
nohup是忽略HUP(挂断)信号的POSIX命令。按照惯例,HUP信号是终端警告注销相关过程的方式。
如果输出没有被重定向,那么通常会去往终端的输出会转到名为nohup.out的文件。

二、使用

下面的第一个命令abcd在后台启动程序,以便后续注销不会停止它。

$ nohup abcd &

请注意,这些方法可防止进程在注销时发送“停止”信号,但如果正在接收这些标准I / O文件(标准输入,标准输出或标准错误)的输入/输出,它们仍会挂起终端。
nohup通常与nice命令结合使用,以低优先级运行进程。

nohup nice abcd &

三、案例分析

1.以我电脑中的MongoDB程序为例

传统的启动方式:mongod

$ mongod
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] MongoDB starting : pid=4065 port=27017 dbpath=/data/db 64-bit host=wdMac.local
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] db version v3.6.5
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] git version: a20ecd3e3a174162052ff99913bc2ca9a839d618
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] allocator: system
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] modules: none
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten] build environment:
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten]     distarch: x86_64
2018-06-08T16:22:28.560+0800 I CONTROL  [initandlisten]     target_arch: x86_64
....
should be at least 1000
2018-06-08T16:22:29.415+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2018-06-08T16:22:29.415+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

传统的有个弊端,就是我命令窗口不能关,我一关,这个程序就停止了,如果是连接到远程的服务器上,有时候,程序会自动停止。

2.后台启动MongoDB

$ nohup nice mongod &
[1] 4075
appending output to nohup.out

4075:端口
mongod:程序的启动命令

3.查看nohup正在运行的后台程序

~ ⌚ 16:27:33
$ jobs -l
[1]  + 4075 running    nohup nice mongod

4.杀死这个程序

~ ⌚ 16:29:07
$ kill -9 4075
[1]  + 4075 killed     nohup nice mongod                                        

~ ⌚ 16:29:52
$ 

四、如果你的程序的启动命令是./ run

类似于:

root@ubuntu:~/develop/nexus/nexus-3.12.1-01/bin# nohup nice ./nexus run &
[1] 9458

查看下是否启动成功:

root@ubuntu:~/develop/nexus/nexus-3.12.1-01/bin# jobs -l
[1]+  9458 Running                 nohup nice ./nexus run &

出现下面的标志就说明启动成功了:

root@ubuntu:~/develop/nexus/nexus-3.12.1-01/bin# netstat -anp|grep 8081
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      9458/java       
tcp        0      0 192.168.33.125:8081     192.168.33.251:58066    TIME_WAIT   -               
tcp        0      0 192.168.33.125:8081     192.168.33.251:58067    ESTABLISHED 9458/java  

好啦,这是每个工程师必会的技能,祝大家学习进步!

目录
相关文章
|
29天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
4月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
47 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
14天前
|
Linux Shell
工作中常用的一些Linux指令,简单易记还实用
工作中常用的一些Linux指令,简单易记还实用
12 2
|
14天前
|
NoSQL Linux 数据库
工作中常用的一些Linux指令,简单易记还实用(二)
工作中,离不开Linux系统,很多刚步入职场的小白,往往对于Linux操作系统的使用都显得生疏,最主要的就是对一些常用的指令记忆不熟练,下面就罗列一些使用度比较高的一些Linux指令,一起来巩固学习一下。这一部分的指令就稍微偏一点了,是接着上一篇博客后面写的,感兴趣的朋友可以回头看看前一篇,再回来看这个。
6 1
|
14天前
|
算法 Linux
工作中常用的一些Linux指令,简单易记还实用(三)
工作中,离不开Linux系统,很多刚步入职场的小白,往往对于Linux操作系统的使用都显得生疏,最主要的就是对一些常用的指令记忆不熟练,下面就罗列一些使用度比较高的一些Linux指令,一起来巩固学习一下。这一部分的指令就稍微偏一点了,是接着上一篇博客后面写的,感兴趣的朋友可以回头看看前一篇,再回来看这个。
19 1
|
4月前
|
关系型数据库 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)
在当今的数字化时代,Linux已成为服务器、云计算、物联网等众多领域的核心操作系统。对于技术从业者、开发者以及系统管理员来说,掌握Linux指令不仅是一项基本技能,更是打开专业领域大门的关键。
50 3
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)
|
4月前
|
存储 Shell Linux
工具技能学习(二):前置技能-shell
工具技能学习(二):前置技能-shell
54 0
|
6月前
|
人工智能 Cloud Native Devops
也许是时候停止编写详细的操作手册了
也许是时候停止编写详细的操作手册了
44 0
kill 进程时遇到的一件有意思的事情
kill 进程时遇到的一件有意思的事情
|
缓存 移动开发 Oracle
常用的Linux命令(面试/工作必备)
常用的Linux命令(面试/工作必备)
119 0
常用的Linux命令(面试/工作必备)