如何从Pycharm分离运行python脚本以便它继续附加到文件?

Nat*_*Zoń 6 python ssh process nohup pycharm

我正在使用远程系统,我使用Pycharm远程窗口来编辑和运行我的脚本.

我登录使用

ssh -Y myName@myMachine
Run Code Online (Sandbox Code Playgroud)

然后我从终端运行Pycharm.

我想以这样的方式从Pycharm运行我的脚本,如果我关闭它(甚至可能从ssh会话注销),进程仍然会运行.

我试图使用选项"分离而不终止进程"退出Pycharm.这导致python进程显示在以下列表中:

ps -all
Run Code Online (Sandbox Code Playgroud)

但是,它会停止写入文件.当pycharm打开时,进程通常每隔几秒就写入一个文件.当从pycharm脱离它显示的过程(注销和重新登录它显示与未知TTY PS -x之后)就行了,但它停止在这个意义上工作,它不再追加任何输出文件,它通常应.

可能导致什么呢?我怎样才能解决这个问题?

Yog*_*ann 4

有几种方法:

\n\n
    \n
  1. 使用终端模拟器作为tmuxscreen

    \n\n
      \n
    1. tmux- tmux 是一个终端多路复用器,可以从单个屏幕创建、访问和控制多个终端。tmux 会话可以从屏幕分离并继续在后台运行,然后重新连接。与 Screen 工具一样,您还可以使用 tmux 与 SSH 会话分离,而无需退出远程作业。

      \n\n

      安装 tmux 后,使用以下命令启动 tmux 会话:

      \n\n
      \n

      $ 多路复用器

      \n
      \n\n

      现在,开始你的任务或工作。然后,通过按“CTRL-b”“d”,安全地从 tmux 会话分离,而无需退出远程作业。这将分离您的 tmux 会话,但会让您\xe2\x80\x99 在该会话中在后台运行。这意味着即使您\xe2\x80\x99 与会话断开连接,所有遥控器都将运行。

      \n\n

      要列出可用会话,请运行:

      \n\n
      \n

      $ tmux LS

      \n
      \n\n

      您可以使用相应的会话 ID 重新附加到 tmux 会话,如下所示:

      \n\n
      \n

      $ tmux Attach -t <会话ID>

      \n
      \n\n

      有关更多详细信息,请参阅手册页。

      \n\n
      \n

      $ 人 tmux

      \n
    2. \n
    3. screen- screen 工具是一个带有 VT100/ANSI 终端仿真的全屏窗口管理器,允许您安全地脱离 SSH 会话,而无需退出远程作业。这对于那些使用多个远程服务器的人来说将会很有帮助。

      \n\n

      在远程系统上安装 screen 后,启动 screen 会话:

      \n\n
      \n

      $ 屏幕

      \n
      \n\n

      屏幕会话现已开始。现在运行您想要在远程系统上执行的任何作业或任务,然后您可以通过按\xe2\x80\x9cCtrl-A\xe2\x80\x9d然后按\xe2\x80\x9cd\xe2\退出屏幕会话x80\x9c,脱离屏幕会话后,可以从远程系统注销。远程作业将继续在服务器中运行。

      \n\n

      要列出屏幕会话,请运行:

      \n\n
      \n

      $ 屏幕-ls

      \n
      \n\n

      您可以使用相应的会话 ID 重新附加到屏幕会话,如下所示:

      \n\n
      \n

      $ screen -r <会话ID>

      \n
      \n\n

      有关更多详细信息,请参阅手册页。

      \n\n
      \n

      $ 人屏

      \n
    4. \n
  2. \n
  3. 使用在后台执行的分离命令([另请阅读][6]):

    \n\n
      \n
    1. nohup- 代表No h ang up,是另一个命令行实用程序,即使在您\xe2\x80\x99 与 SSH 会话断开连接后也可以帮助您运行 Linux 命令。

      \n\n

      使用方法绝对简单。登录远程系统后,您所要做的就是:

      \n\n
      \n

      $ nohup <命令> &

      \n
      \n\n

      现在,您可以退出 SSH 会话。远程作业将继续运行。

      \n\n

      要列出正在运行的作业,请运行:

      \n\n
      \n

      $ 工作 -l

      \n
      \n\n

      有关更多详细信息,请参阅手册页。

      \n\n
      \n

      $ 人 nohup

      \n
    2. \n
    3. disown- Disown,从系统的进程作业列表中删除该作业,这样该进程就不会在会话断开期间被杀死,因为当您注销时,它不会\xe2\x80\x99收到shell的SIGHUP。

      \n\n

      登录到远程系统后,使用“&”运行命令:

      \n\n
      \n

      $ <命令> &

      \n
      \n\n

      然后使用以下命令列出正在运行的作业:

      \n\n
      \n

      $ 工作 -l

      \n
      \n\n

      然后使用进程 ID 运行 disown,如下所示:

      \n\n
      \n

      $ 否认 -h <PID>

      \n
      \n\n

      您现在可以断开与服务器的连接

      \n\n

      有关更多详细信息,请参阅手册页。

      \n\n
      \n

      $ 人 nohup

      \n
    4. \n
    5. setsid-setsid 为正在执行的进程分配一个新的进程组,因此创建的进程完全位于新分配的进程组中,并且即使在会话注销后也可以安全地执行而不必担心被杀死。

      \n\n

      登录远程系统后,运行:

      \n\n
      \n

      $setsid<命令>

      \n
      \n\n

      有关更多详细信息,请参阅手册页。

      \n\n
      \n

      $ 人 nohup

      \n
    6. \n
  4. \n
\n