linux程序不依赖shell终端

场景分析

这两天遇到一个让程序后台运行的问题,因为基础知识薄弱,出现问题后发现自己没有找到问题所存在的根本原因,通过终端adb连接开发板,然后运行c程序连接服务器,然后让开发板休眠,断开usb后使其进入休眠模式.但是发现一拔出来usb,服务器就会提示掉线,我理解成了因为休眠导致的断开服务器.然后经过师傅的解答以及自己做了个实验,发现问题并不是休眠的问题,而是因为终端关闭,导致程序结束,然后导致的与服务器连接断开.发现问题以后就开始网上查找相应的解决方案.

还有一种应用场景是ssh连接到服务器以后,需要执行长时间的任务,也可以用这种方法.

解决方法

运行命令后面加&

./yuanban &
然后可以通过jobs查看所有的后台运行的任务
kill %n
可以杀死某个任务.注:n是通过jobs查看的编号,不是PID号.
fg %n
后台的程序继续返回到前台(当前的终端)来.

笔记

ctrl+z 是暂停任务,并没有结束,仍然在进程中,只是维持挂起的一个状态,通过fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.
ctrl+c 是终止任务,强制中断结束.

参考

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
https://www.cnblogs.com/itech/archive/2012/04/19/2457499.html

猜你喜欢

转载自blog.csdn.net/arunboy/article/details/78984177