linux – 如何运行sbt作为守护进程?
发布时间:2020-12-13 19:45:14 所属栏目:Linux 来源:网络整理
导读:我试过nohup“sbt run” 返回:nohup:无法运行命令’sbt run’:没有这样的文件或目录 并试过: nohup sbt run [2] 7897# nohup: ignoring input and appending output to ‘nohup.out’ 当我回车期待进程继续运行时,我收到: [2]+ Stopped nohup sbt run
我试过nohup“sbt run”&
返回:nohup:无法运行命令’sbt run’:没有这样的文件或目录 并试过: nohup sbt run & [2] 7897 # nohup: ignoring input and appending output to ‘nohup.out’ 当我回车期待进程继续运行时,我收到: [2]+ Stopped nohup sbt run 如何将sbt作为守护进程运行? 更新: sbt run </dev/null & [5] 8961 我想cd上一个目录: # cd .. [5]+ Stopped sbt run < /dev/null (wd: /home/sum) (wd now: /home) 所以它作为守护进程启动但是如果我执行任何操作,例如更改dir,它会杀死进程吗?如何让流程继续运行? 解决方法
看起来sbt从您的终端请求输入.如果它确实不需要输入(在后台运行程序时可能就是这种情况),你可以像这样运行它:
sbt run </dev/null >output-file & 有关详情,请参见this answer. 编辑 好的,现在这是一个难题.简短回答:运行如下: setsid nohup sbt run & 理由: sbt停止的原因是SIGTTOU信号的到来.在几种情况下,它被提供给后台进程,包括修改终端配置.这是我们的情况,因为根据strace -f sbt run&,sbt在这样的引擎盖下做了很多黑魔法: [pid 16600] execve("/usr/bin/sh",["sh","-c","stty -g < /dev/tty"],[/* 75 vars */] <unfinished ...> 要解决这个问题,您可以在不同的会话中运行sbt以将其从当前终端分离,这样它就不会打开/ dev / tty并弄乱我们的终端. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |