如何在shell关闭后将nohup任务带到前台



我在linux shell中执行了下面的命令:

$ nohup run &

这里run是一个阻塞命令。然后我关闭外壳,开始一个新的。然而,在新的shell中,我不能通过fg将任务带到前台,也不能通过jobs看到它。还有办法把它带到前台吗?

screen代替nohup:

screen -dmS demo bash -c 'while ! read -t 1;do echo $((i++));done'

注:没有&.

然后退出…稍后,您可以:

screen -x demo

Ctrl+a,然后按d使控制台运行

gnome-terminal -e 'screen -x demo'

然后,简单地关闭窗口,使进程继续运行。

据我所知,run是shell的子进程,当shell关闭时,run也关闭。也许使用tmuxscreen可以实现你想要的。

有很多同样的问题。如果你想杀死它,我通常做的是

top | grep {command_name} | grep {user_name}

,如果您等待,后台进程将显示。第一列是pid,所以你可以

kill -9 {pid}

请注意,它还会对包含字符串"run"的所有其他命令和统计信息进行grep,因此您应该仔细检查它是否是您真正想要的。(命令名通常在最后一列)

例如,假设您正在使用AWS AMI,其默认用户名是ec2-user
top | grep run | grep ec2-user

得到类似

的输出
371 ec2-user  20   0  110m 2668 2664 S  0.0  0.0   0:00.00 run-helper.sh                                                                                                                                

run-helper.sh不是"run"命令,所以你不应该杀死371

相关内容

  • 没有找到相关文章