簡體   English   中英

如何從Pycharm分離運行python腳本以便它繼續附加到文件?

[英]How do I detach python script run from Pycharm so it keeps appending to files?

我正在使用遠程系統,我使用Pycharm遠程窗口來編輯和運行我的腳本。

我登錄使用

ssh -Y myName@myMachine

然后我從終端運行Pycharm。

我想以這樣的方式從Pycharm運行我的腳本,如果我關閉它(甚至可能從ssh會話注銷),進程仍然會運行。

我試圖使用選項“分離而不終止進程”退出Pycharm。 這導致python進程顯示在以下列表中:

ps -all

但是,它會停止寫入文件。 當pycharm打開時,進程通常每隔幾秒就寫入一個文件。 當從pycharm分離時,它會在進程列表中顯示(在注銷和再次登錄之后它會在ps -x中顯示未知的tty),但是它會停止工作,因為它不再將任何輸出附加到它通常應該的文件。

可能導致什么呢? 我怎樣才能解決這個問題?

有幾種方法:

  1. 使用終端仿真器作為tmuxscreen

    1. tmux - tmux是一個終端多路復用器,可以從一個屏幕創建,訪問和控制多個終端。 tmux會話可以從屏幕上分離並繼續在后台運行,然后重新連接。 與屏幕工具類似,您也可以使用tmux從SSH會話中分離而不退出遠程作業。

      安裝tmux后,使用以下命令啟動tmux會話:

      $ tmux

      現在,開始你的任務或工作。 然后通過按“CTRL-b”,然后按“d”,安全地從tmux會話中分離而不退出遠程作業。 這將分離你的tmux會話,但會讓你在后台運行該會話。 這意味着即使您與會話斷開連接,所有遙控器也將運行。

      要列出可用會話,請運行:

      $ tmux ls

      您可以使用相應的會話ID重新連接到tmux會話,如下所示:

      $ tmux attach -t <會話ID>

      有關更多詳細信息,請參閱手冊頁。

      $ man tmux

    2. screen - 屏幕工具,帶有VT100 / ANSI終端仿真的全屏窗口管理器,允許您在不退出遠程作業的情況下安全地從SSH會話中分離。 對於使用多個遠程服務器的人來說,它會很有幫助。

      在遠程系統上安裝屏幕后,啟動屏幕會話:

      $ screen

      屏幕會話現已開始。 現在運行您想要在遠程系統上執行的任何工作或任務,然后按“Ctrl-A”,然后按“d”退出屏幕會話,從屏幕會話中分離后,您可以從遠程系統注銷系統。 遠程作業將繼續在服務器中運行。

      要列出屏幕會話,請運行:

      $ screen -ls

      您可以使用相應的會話ID重新連接到屏幕會話,如下所示:

      $ screen -r <會話ID>

      有關更多詳細信息,請參閱手冊頁。

      $ man screen

  2. 使用在后台執行的分離命令([read also] [6]):

    1. nohup - 代表No h ang up ,是另一個命令行實用程序,即使在您斷開SSH會話后也可以幫助您運行Linux命令。

      用法非常簡單。 登錄遠程系統后,您所要做的就是:

      $ nohup <command>&

      現在,您可以退出SSH會話。 遠程作業將繼續運行。

      要列出正在運行的作業,請運行:

      $ jobs -l

      有關更多詳細信息,請參閱手冊頁。

      $ man nohup

    2. disown - Disown,從系統的進程作業列表中刪除作業,這樣可以防止進程在會話斷開連接時被終止,因為當你注銷時shell不會收到SIGHUP。

      登錄到遠程系統后,使用“&”運行命令:

      $ <command>&

      然后列出正在運行的作業,使用:

      $ jobs -l

      然后使用進程ID運行disown,如下所示:

      $ disown -h <PID>

      您現在可以斷開與服務器的連接

      有關更多詳細信息,請參閱手冊頁。

      $ man nohup

    3. setsid - setsid為正在執行的進程分配一個新的進程組,因此,創建的進程完全在新分配的進程組中,可以安全地執行,而不用擔心即使在會話注銷后也會被殺死。

      登錄遠程系統后,運行:

      $ setsid <command>

      有關更多詳細信息,請參閱手冊頁。

      $ man nohup

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM