如何在shell启动工作,这将持续存在,即使其启动外壳它将终止(How to launch a jo

2019-08-16 16:59发布

我如何劳克工作在Linux外壳,这样即使其启动它终止外壳,作业将仍然存在?

更具体地讲,我想在一个进程中运行strace的。 如果我在终端做它运行完美。 不过,我想这样做在一个远程shell将尽快所有的命令已被执行停止。 "strace -p pid &"因为当外壳停止,后台作业也就会被杀死没有任何效果。

我应该怎么办呢?

nohup好像是我要找的东西。 然而, ssh user@remote_machine script_name似乎没有任何效果也没有。 在脚本我有"nohup strace -p pid"

非常感谢!

Answer 1:

NohupScreen可用于即使在会话被断开或用户退出运行命令。 我用他们两个,但“屏幕”是更好的。

nohup ./<script_name> &

如何使用屏幕?

创造一个任务:

$ screen -S task

在任务窗口中执行命令,如果你的任务没有完成,使用

$ Ctrl+a+d
to save the task. It will show the following info:
[detached]

如果你的任务已经完成,使用“退出”退出画面:

    $ exit

[screen is terminating]

您可以使用screen -ls找到任何屏幕信息:

$ screen -ls
There is a screen on:
10000.task (Detached)

使用“屏幕-r”恢复任务:

$ screen -r 10000


Answer 2:

你可以使用“屏幕”! 用法:

screen [Enter]
enter your command
[Ctrl] + [A] + [D(Detach)]

你的任务继续运行。 如果你想回去给它只需键入:

screen -r

要么

screen -r -d (to detach old sessions)


Answer 3:

另外其他的答案,你可能需要使用批处理(1)命令(或者远程通ssh ),例如像

  batch << ENDBATCH
    strace -p 1234 -o /tmp/trace.file
  ENDBATCH


文章来源: How to launch a job in a shell which will persist even if the shell which launches it terminates