linux装完程序无进程,Linux nohup + & 程序后台运行

最近用influxdb做测试,Centos服务器只能连内网,用的rpm包本地安装的,安装完启动服务总是失败,但是前台运行是没有问题的。但是前台运行退出ssh登录时程序就停止运行了,所有就用了nohup这个命令了。。。

说明

前提:程序未对信号做特殊处理

nohup:no hang up,字面意思“不挂断”,就是说“SIGHUP”信号对我不好使收到该信号会忽略掉,但是“SIGINT”信号对我好使(ctrl+c)收到信号程序会退出

nohup program arguments

e.g.:nohup test_nohup -t 1

test_nohup:可运行程序

-t:程序参数

1:参数值

当然,程序可能没有参数...是的,这个不是关心的重点

一、图解说说【nohup】

相关:

打印进程信息:ps -ef | grep [要匹配的进程名] | grep -v [不显示匹配的字符串]

(1)用【nohup】启动程序

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

程序启动

启动程序,打印进程信息,进程号为3882,我们先不关心“appending output to nohup.out是什么东东~”

(2)发送中断信号

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

ctrl + c 中断

按ctrl + c中断程序(终端显示^C),再次打印进程信息,可以看到进程已经不在了,输入命令后显示空行~

(3)发送挂起信号

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

发送挂起消息

再次运行该程序,关闭窗口发送"SIGHUP"信号此次的session就结束了,程序收到该信号默认执行exit()退出。

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

打印进程,进程还在

此时要退出只能使用【kill】命令关掉该进程:

kill -9 进程号

-9:表示kill信号,无法抓取,无法忽略,意思是“城管来了,小摊儿必须撤”

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

kill后,进程不存在了

二、图解说说【&】

前台运行程序时,该程序会一直占用着终端如果有屏幕输出的话屏幕会一直打印,这时候我们让程序后台运行(可能会一直打印,但不会占用终端),在程序运行命令最后加上 【&]

(1)后台启动程序

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

后台启动

后台启动一个程序,进程号为“4386”,屏幕每隔2秒打印一个字符串,并且终端未被程序占用,并且多次使用“ctrl + c”程序并未中断退出

(2)发送挂起信号

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

发送SIGHUP

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

打印进程信息

关闭终端窗口,此次session关闭,程序退出后打印进程信息可以看到进程已经不在了

三、最终的组合【nohup】+【&】

命令组合:

nohup test_nohup -t 2 &

这样程序就可以在后台运行且关闭窗口也对其没有影响

(1)启动程序并关闭终端窗口

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

程序启动

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

打印进程

关闭这个集成依然还是使用【kill】命令

写在最后

后台运行,如果不想看到控制台打印日志可以:

./test_nohup -t 2 > ./back_ground.txt 2>&1 &

0:标注输入,1:标准输出,2:标准错误输出

11ad279f6156?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

输出重定向到文件

意思标准输出重定向到文件‘back_ground.txt’中,【2>&1】意思是将标准错误输出重定向到标准输出,因为标准错误输出是没有缓冲区的而标准输出有,并且如果实时输出到文件中要【flush】输出缓冲区,否则未达到缓冲区大小时是不会输出到文件的。

如果不需要输出文件,则可以:

./test_nohup -t 2 > /dev/null 2>&1 &

将所有输出重定向到【/dev/null】这个‘空’设备文件,它会丢弃写入的内容,就感觉任何东西都被“宇宙黑洞”吞噬了一样。。。

嗯,是的,你可以跟【nohup】组合。。。

like this...:nohup ./test_nohup -t 2 > /dev/null 2>&1 & ,这样关闭‘窗口’程序依然在后台运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值