相关疑难解决方法(0)

如何在nohup下放置已经运行的进程?

我有一个已经运行了很长时间并且不想结束它的进程.

我怎么把它放在nohup下(也就是说,即使关闭终端,如何让它继续运行?)

shell nohup

907
推荐指数
9
解决办法
42万
查看次数

保持SSH会话存活

ssh -p8520 username@remote_host用来登录远程服务器.

问题:

当我在工作场所时,它始终连接并正常工作.不幸的是,在我从家里连接远程服务器后10到15分钟终端冻结了.

控制台上没有错误/超时报告,但光标不能再移动.

当进入w检查登录用户时,一些僵尸登录用户在那里,我必须手动杀死他们.

这很烦人.谁能帮我?

linux ssh terminal

211
推荐指数
5
解决办法
16万
查看次数

从ssh注销后如何使程序继续运行?

可能重复:
在关闭SSH客户端后阻止后台进程停止

我有一个需要很多时间才能完成的程序.它在ssh上以root身份运行.
我希望它在我退出后继续运行,这是否可能,我将如何实现这一目标?

linux ssh bash

158
推荐指数
5
解决办法
17万
查看次数

在shell中运行命令,并在关闭会话时继续运行该命令

我正在使用Putty连接到远程服务器.我想知道的是,如果有任何方法可以编写我的命令并允许它们在我用Putty关闭会话后继续运行.原因是我不想一直打开电脑.有没有办法做到这一点?

更新解决方案

对于我提出的问题,最好的解决方案是使用提供的命令之一,如nohup,因为您不必安装任何其他软件.但如果您遇到同样的问题,请使用屏幕,安装并使用它.真是太棒了.

我选择了Norman Ramsey的答案作为最爱,因为提出了几个使用命令和屏幕的解决方案.但请特别检查PEZ的其他答案,然后您就可以了解屏幕能够做什么.

linux shell command

34
推荐指数
5
解决办法
4万
查看次数

ssh终止后,保持服务器在EC2实例上运行

目前,我有两个服务器在一个EC2实例(MongoDBbottlepy)上运行.当我连接到实例并启动这两个服务器时,一切正常.但是,当我关闭SSH会话(实例仍在运行)时,我丢失了这两台服务器.退出后有没有办法让服务器保持运行?我Bitvise Tunnelier在Windows 7上使用.我使用的实例是Ubuntu Server 12.04.3 LTS.

ssh amazon-ec2

15
推荐指数
2
解决办法
2万
查看次数

如何在Linux上运行无限脚本?

我有一个带有无限循环的PHP脚本.我需要这个脚本永远运行.所以,我跑了

php /path/to/script.php > /dev/null &
Run Code Online (Sandbox Code Playgroud)

它在我当前用户的安全上下文中在后台运行.但当我关闭终端窗口(注销)时,当然,CentOS Linux会杀死我的程序.

我看到两个猜测:在后台运行不同的用户或制作一个守护进程.我在每种情况下都需要帮助.

非常感谢!

linux infinite-loop

11
推荐指数
2
解决办法
8697
查看次数

如何使用fork()来守护独立于其父进程的子进程?

可能重复:
在Linux中,如何在关闭SSH客户端后阻止后台进程停止

我有一个C程序,我可以通过终端访问和交互(通常来自Linux机器上的SSH).我一直试图找到问题的解决方案,在我关闭终端/注销后,流程以它结束(程序基本上要求一些选项然后进行业务,不需要进一步的交互,所以我想拥有它在我注销SSH之后继续运行).

在Linux中有一些方法可以避免这种情况,例如"屏幕",但我想用C编程,而不依赖于屏幕等已安装的软件包 - 即使这意味着重新发明轮子.

到目前为止,我理解fork()成为守护进程的标准琐碎方法,所以任何人都可以帮助我完成允许上述过程发生的代码吗?

在父母内部:

 main()
{

//Do interactive stuff

signal(SIGCHLD, SIG_IGN); //stops the parent waiting for the child process to end

if(fork())
 exit(0);
// and now the program continues in the child process
Run Code Online (Sandbox Code Playgroud)

我现在可以注销关闭原始shell的SSH了......孩子继续工作!

在孩子内:

//Continue with processing data/whatever the program does (no input/output to terminal required)
exit(0);
Run Code Online (Sandbox Code Playgroud)

c fork

11
推荐指数
1
解决办法
2万
查看次数

如何通过SSH启动进程,以便继续运行?

我有三个文件:monitor.sh,它启动python脚本:

sudo python ./webCheck &
sudo python ./apiCheck &
Run Code Online (Sandbox Code Playgroud)

和其他人,webCheck和apiCheck:它应该在我关闭终端后在后台运行.它以无限循环检查我的其他网站的可用性.

我无法让它工作,我正在尝试nohup,但无法正确使用语法.webCheck必须与sudo一起运行.是否也在sh脚本中包含nohup?我想因为monitor.sh只是应该启动另外两个,所以一个人不需要nohup.

怎么做?

ssh sh amazon-ec2 bitnami

7
推荐指数
1
解决办法
8749
查看次数

如何防止ctrl + c杀死Java中的衍生进程

[NB.这与如何从Java程序启动完全独立的进程有关?但不同]

我希望能够从"管理器"Java进程中生成外部进程(shell脚本),该进程应该在JVM被杀死时继续运行 - 但是当我杀死父Java程序时,孩子也被杀死了(注意,如果JVM自然退出,行为会有所不同).我最简单的测试程序是:

public class Runit {

    public static void main(String args[]) throws IOException, InterruptedException {
        Runtime.getRuntime().exec(args[0]);

        // doesn't work this way either
        // ProcessBuilder pb = new ProcessBuilder(args[0]);
        // pb.start();

        while (true) {
            System.out.println("Kill me");
            Thread.sleep(2000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和外部脚本:

#!/bin/sh

while [ 1 ] ; do 
    ls
    sleep 1
done
Run Code Online (Sandbox Code Playgroud)

跑来跑去

java -classpath jar-with-dependencies.jar temp.exec.Runit runit.sh

如果管理器只是退出(即取出Java程序中的"while"循环),则生成的进程继续运行,但是当我Ctrl+ cJava程序时,外部程序也被杀死,这不是我想要的.

我在Ubuntu上使用OpenJDK 1.6.

Edit1:将exec更改为

Runtime.getRuntime().exec("/usr/bin/nohup " +  args[0]);
Run Code Online (Sandbox Code Playgroud)

没有帮助.

Edit2:如何在Java正常处理SIGKILL信号中所述添加关闭挂钩并不会阻止正在传播给子节点 …

java

7
推荐指数
1
解决办法
1129
查看次数

在SSH客户端(PuTTy)关闭后如何从Rails控制台运行rails命令

我使用PuTTy连接到我们的Ubuntu生产服务器.

我想使用Solr重新索引特定的模型.我想从Rails控制台运行reindex命令,即Modelname.reindex(因为它似乎比rake任务运行得更快.)

但是,我们正在查看大量数据,这种索引预计需要几个小时.

我希望能够在rails控制台中启动此任务,即使退出PuTTy,它也应该继续运行.这该怎么做?

Linux:关闭SSH客户端建议nohup 后阻止后台进程停止,但我不知道是否/如何使用rails控制台.

ubuntu putty solr ruby-on-rails sunspot-solr

6
推荐指数
1
解决办法
2960
查看次数