linux脱离终端运行程序

此篇主要针对于本人使用mobaxterm出现的问题,mobaxterm远程操控服务器的时候大多数时候挺方便的,有时候超过6分钟未操作会自动断开,这个小问题只需要在设置里面把SSH保持连接勾选上就好了。

但困扰我的并不是这个问题,当我想让我的项目持久的跑在服务器上的时候,每次一关闭mobaxterm或者我的笔记本断网, 服务器中的程序进程也随之断开了,我就纳闷了,跟我的主机保持状态一致的服务器,我还要你干嘛???

随后查阅资料发现,每次只要断开运行在mobaxterm程序的标签或者是直接关闭mobaxterm都会自动的关掉当前运行的程序。那么只需要把程序脱离终端就好了啊。

操作如下(我原先的运行指令是:./server 80):

  • nohup 你的shell命令 &(如:nohup ./server 80 &)

nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行。这样就可以让你的程序免于被自动关闭了,当然,可千万别忘了关闭,所以结尾的&作用就是运行在后台(这里体现不出,主要为了让其显示进程号),附带显示该进程号。不加&也没关系只是到时候找该进程的时候稍微麻烦一些罢了。

下面是运行结果:

[root@VM-0-16-centos TinyWebServer]# nohup ./server 80 &
[1] 22029
[root@VM-0-16-centos TinyWebServer]# nohup: ignoring input and appending output to ‘nohup.out’

第一行是自己输入的命令,第二行是&输出的进程号(没有&就不会有这一行),第三行是nohup的警告(可以不管)

我们来讲讲nohup,全称no hang up(不挂起),就是专门放在系统后台不停的执行命令,而不管终端是否退出,nohup命令会自动的输出一个名叫nohup.out的文件到该目录下,如果该目录没有此文件或不可写,则会输出到$HOME/nohup.out。所以警告只是没有输出文件而已,问题不大。

现在后台已经开始运行了,那么要关闭进程也很简单,就分为两步,第一步为查找进程:

  • ps -aux | grep "./server 80"

ps查看进程,a(显示所有进程),u(以用户为主的格式来显示),x(不区分终端机)

“|”管道,以前面命令得到的结果作为输入

grep,搜索匹配内容,也就是查找"./server 80"

得到的结果如下:

[root@VM-0-16-centos ~]# ps -aux | grep "./server 80"
root     22029  0.0  0.2 585880  5644 pts/2    Sl   21:10   0:00 ./server 80

得到的PID为22029,然后执行kill -9 22029即可

-9为彻底删除

被这个问题折磨了好久,最后海搜资料终于解决了,写下这篇博客记录一下,也希望可以让其他人不被这种问题给折磨住。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值