我可以在后台运行可执行文件并使用以下命令将其与终端分离:
$ nohup ./executable &
或者
$ ./executable &
$ disown
但如果我向可执行文件发送参数,则没有任何效果:
$ nohup ./executable argument &
或者
$ ./executable argument &
$ disown
我尝试将其与 .sh 字符串和管道语法结合使用,但它也不起作用:
$ nohup ./executable <<<$'argument' &
或者
$ ./executable <<<$'argument' &
$ disown
或者
$ nohup echo -e "argument" | ./executable &
或者
$ echo -e "argument" | ./executable &
$ disown
编辑:“./executable”程序接受任意数量的参数,例如“./executable arg1 arg2”等...我认为问题是“&”被“./executable”作为参数吸收。另外,如果有帮助的话,它是用 Go 编写的。
答案1
经过更多测试,结果证明两者都$ nohup ./executable &
适用$ ./executable & $ disown
于此目的。我只是在运行后向下滚动很多次top
才能看到程序正在运行。
作为旁注,$ nohup ./executable &
如果您的程序立即不间断地开始记录会更好,因为运行$ ./executable &
然后$ disown
在程序记录时似乎有点奇怪。