留下SSH进程/作业?

时间:2011-12-26 08:18:27

标签: php bash ssh

我正在使用PHP库phpseclib0.2.2自动将SSH连接到我的一台服务器中。我把它设置为每5分钟运行一次的cron任务。

在设置之后退出,确保它运行等,我看到以下内容:

$ logout
There are stopped jobs.
$ 

我被迫使用

$ logout

再次注销。是否有一堆SSH进程/作业在我的服务器上运行,我从未关闭如何在终端中使用bash命令(或更好的方法)“检查”?

以下是我使用的代码。

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.com');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('some command');
?>

1 个答案:

答案 0 :(得分:2)

你可能已经开始了一些流程并将它们发送到后台,例如。 G。使用sleep 60 &之类的尾随符号或按^Z

您可以使用jobs命令列出当前shell中的正在运行或已挂起的作业。如果要在关闭shell后让它们保持运行,首先需要disown它们,然后将它们发送到bg的背景中。

$ sleep 1000 &
[1] 2345
$ sleep 2000
^Z
[2]+  Stopped                 sleep 2000
$ jobs
[1]-  Running                 sleep 1000 &
[2]+  Stopped                 sleep 2000
$ kill %2
$ kill %1
[1]-  Terminated              sleep 1000
[2]+  Terminated              sleep 2000

如果要在退出shell之后保持进程运行,并且事先已经知道应该使用nohup来启动这些进程或编写正确的init脚本。