Mat*_*der 12 bash job-control background-process
这是我正在运行的:
alexandma@ALEXANDMA-1-MBP ./command.sh &
[2] 30374
alexandma@ALEXANDMA-1-MBP
[2] + suspended (tty output) ./command.sh
Run Code Online (Sandbox Code Playgroud)
我不希望它开始暂停,我希望它继续在后台运行。我将在一个循环中运行一堆这些,所以我需要一些可以这样工作的东西。
我怎样才能让它继续运行?
Hau*_*ing 14
在 Anthon 的解释中添加一个细节:
停止写入后台进程的情况并非总是如此。这取决于终端设置tostop
。
stty tostop
stty -tostop
Run Code Online (Sandbox Code Playgroud)
可用于切换此设置。因此,如果您希望后台进程写入“另一个进程的”终端,那么您可以保持它运行但不需要tmux
,screen
或类似的。
它因为给出的原因而停止:它试图输出到 tty。您可以尝试将输出重定向,如果./command.sh
是,或者在运行命令支持tmux
或者screen
它的窗口是自己的。例如
tmux new-window -n "window name" ./command.sh
Run Code Online (Sandbox Code Playgroud)
然后查看与创建的窗口的列表tmux list-windows
,并重视tmux
与tmux attach
。
这样,程序仍将等待输入/输出发生,但是一旦进入适当的窗口,您就可以轻松提供输入,并且输出将在没有任何活动的情况下被捕获。
最简单的方法是执行如下命令:
nohup ./command.sh </dev/null &
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 SH 变体(不是 CSH 变体)并且将终止您的会话,我会将 nohup 包括在内。
归档时间: |
|
查看次数: |
13899 次 |
最近记录: |