工程师(程序员)必会技能:后台运行程序并杀死程序(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  

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

目录
相关文章
|
8月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
95 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
7月前
|
Unix Shell Linux
技术经验分享:Bash脚本命令使用详解
技术经验分享:Bash脚本命令使用详解
57 0
|
Java Shell Linux
适合初学者的Shell核心知识笔记(下)
适合初学者的Shell核心知识笔记(下)
|
8月前
|
存储 运维 Shell
Shell内置命令大全,Linux运维工程师收藏!
Shell内置命令大全,Linux运维工程师收藏!
243 0
Shell内置命令大全,Linux运维工程师收藏!
|
8月前
|
存储 Shell Linux
工具技能学习(二):前置技能-shell
工具技能学习(二):前置技能-shell
79 0
|
机器学习/深度学习 Shell Linux
适合初学者的Shell核心知识笔记(上)
适合初学者的Shell核心知识笔记(上)
105 0
|
小程序 数据挖掘 开发者
走进小程序【一】什么是小程序??
走进小程序【一】什么是小程序?
198 0
走进小程序【一】什么是小程序??
|
缓存 移动开发 Oracle
常用的Linux命令(面试/工作必备)
常用的Linux命令(面试/工作必备)
160 0
常用的Linux命令(面试/工作必备)
|
存储 架构师 Shell
6条shell小技巧,让脚本显得不再业余(1分钟系列)
本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析。
505 0
6条shell小技巧,让脚本显得不再业余(1分钟系列)