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

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

目录
相关文章
|
16天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
3月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
43 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
3月前
|
关系型数据库 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)
在当今的数字化时代,Linux已成为服务器、云计算、物联网等众多领域的核心操作系统。对于技术从业者、开发者以及系统管理员来说,掌握Linux指令不仅是一项基本技能,更是打开专业领域大门的关键。
50 3
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)
|
3月前
|
存储 Shell Linux
工具技能学习(二):前置技能-shell
工具技能学习(二):前置技能-shell
54 0
|
6月前
|
Shell Linux 网络安全
[笔记]Linux Shell脚本实现自动输入 解放双手 自动测试
[笔记]Linux Shell脚本实现自动输入 解放双手 自动测试
|
小程序 前端开发 关系型数据库
手把手教你将小程序项目跑起来【真自律小程序】
1、下载项目文件 在【猫宁一】公众号中回复【源码】,得到下载链接,将项目下载下来并解压 2、打开项目文件,编辑server/config.js文件 将红框圈出来的地方改成自己的信息
655 0
手把手教你将小程序项目跑起来【真自律小程序】
|
运维 Java 应用服务中间件
技术经理给我安排了一个上古时期的Tomcat项目,Tomcat中的bat批处理脚本源码分析,还好我是练过的,基础的底层知识掌握得妥妥滴
技术经理给我安排了一个上古时期的Tomcat项目,Tomcat中的bat批处理脚本源码分析,还好我是练过的,基础的底层知识掌握得妥妥滴
105 0
技术经理给我安排了一个上古时期的Tomcat项目,Tomcat中的bat批处理脚本源码分析,还好我是练过的,基础的底层知识掌握得妥妥滴
|
存储 架构师 Shell
6条shell小技巧,让脚本显得不再业余(1分钟系列)
本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析。
470 0
6条shell小技巧,让脚本显得不再业余(1分钟系列)