在LINUX中启动bash脚本时,脚本成功并成功,但终端挂起。我必须始终输入CTRL + C来结束程序。我可以输入终端并按Enter键,但脚本没有响应。
我无法更改脚本文件,但是我可以启动它以禁用等待用户吗?有关禁用此行为的任何疑难解答提示吗?
答案 0 :(得分:1)
您可以在最后使用&
执行脚本,这会将控件返回给shell(将脚本作为后台进程执行)。
./script.sh &
如果要停止脚本,则需要获取其进程ID,然后将其终止。要获取进程ID,请执行ps aux | grep script
,其中script
是您的脚本名称,或者在启动脚本后立即执行echo $!
。如果您拥有流程ID,则可以使用kill 1234
取消流程,其中1234
是流程ID。
如果可以估算脚本的执行时间,可以在一段时间后自动终止它:
bash -c '(sleep 5m; kill $$ 2> /dev/null) & exec script' &
在此命令中sleep 5m
是进程被终止后的时间,script
是脚本(或命令)的名称。
例如,如果脚本的执行时间平均为30秒,那么您可以将超时设置为一分钟或两分钟,以便在执行速度比平时慢时给它一些额外的时间。请注意,此命令不保证脚本完成其执行,因此请小心使用它。