我试图在后台运行一个长时间运行的任务,而无需登录并让终端返回提示,但是当我这样做时,该任务似乎进入后台,但我的提示不可用,除非我按下了 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
您应该有可用的提示,因为您的命令将被发送到后台。您可能看不到提示符,因为您的命令仍在向控制台传送 stderr 消息。尝试使用
> test.txt 2>&1 </dev/null &
。
将其添加到 .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”导致提示返回。