nohup 作为后台任务不返回提示

问题描述 投票:0回答:2

我试图在后台运行一个长时间运行的任务,而无需登录并让终端返回提示,但是当我这样做时,该任务似乎进入后台,但我的提示不可用,除非我按下了 Control + C。我想运行任务,然后返回提示。

[staging@php-pos-web ~]$ nohup php test.php > test.txt &
[1] 27251
[staging@php-pos-web ~]$ nohup: ignoring input and redirecting stderr to stdout
nohup
2个回答
32
投票

您应该有可用的提示,因为您的命令将被发送到后台。您可能看不到提示符,因为您的命令仍在向控制台传送 stderr 消息。尝试使用

> test.txt 2>&1 </dev/null &


0
投票

将其添加到 .bashrc

function detach { ( nohup $* </dev/null 2>&1 >/dev/null & disown ; sleep 0 ) >/dev/null ; } ; export -f detach

然后你可以运行:detach 例如分离 gedit .bashrc

您还可以为特定程序制作功能,例如:

function gedit { ( nohup gedit $* </dev/null 2>&1 >/dev/null & disown ; sleep 0 ) >/dev/null ; } ; export -f gedit

当程序在后台结束时,“disown”会阻止输出。

“sleep 0”导致提示返回。

© www.soinside.com 2019 - 2024. All rights reserved.