天天看点

记一次shell脚本推后台stopped的问题

我们知道linux 下shell可以被分为交互式脚本和非交互式脚本。

交互式脚本即 输入命令之后shell会等待你的输入,当你输入之后命令会被立即提交从而执行。这个时候我们常见的终端bash,以及login提示等都是交互式命令。

非交互式脚本即shell解释器不需要等待终端的输入,自己去执行脚本中的命令,当遇到脚本中的EOF则结束。

交互式脚本因为需要等待终端命令的输入,与终端进行交互,当将交互式脚本推后台;此时后台程序视图读取终端,此时终端驱动程序将检测这种情况,并向后台作业发送一个特定信号SIGTTIN,该信号会停止此后台程序,并向用户发送通知。最终推后台的进程会出现​

​stopped​

​​状态。

交互式脚本的退后台使用​​

​./camSvr < /dev/null &​

​使用null作为输入设备,此时脚本可以正常执行。

继续阅读