1. 程式人生 > 實用技巧 >讓Linux關閉終端(關閉SSH等)後,程式繼續執行

讓Linux關閉終端(關閉SSH等)後,程式繼續執行

讓Linux關閉終端(關閉SSH等)後,程式繼續執行

2018-05-25 22:11:377125收藏1 分類專欄:ubuntu使用中遇到的問題文章標籤:nohupscreenlinux終端關閉終端程式仍然執行 版權

關於為什麼關閉終端後,程式會終止,可以檢視這篇博文:https://blog.csdn.net/gatieme/article/details/52777721

參考2,linux後臺執行命令:&和nohup:https://blog.csdn.net/liuyanfeier/article/details/62422742

大概就是,終端關閉後,系統會發送一個SIGHUP(結束通話訊號),自動地終止在當前會話中執行的程式。

解決方法:

1 . 使用nohup命令

nohup command > myout.file 2>&1 &  # 將日誌輸出到myout.file檔案中
nohup command & # 會在當前目錄下建立一個nohup.out檔案,記錄程式執行時在終端產生的輸出
  • 1
  • 2

2 . 使用 screen命令

step1:按screen,回車進入子介面
step2:./single_model_train_val.sh  執行程式
step3:按ctrl+a再按d,程式會在關閉終端後繼續執行
這樣暫停了子介面,會顯示[detached]的字樣,這時候 我回到了父介面;
[detached from 26454.pts-1.A01-R04-I231-16-7280278]
step4:screen -ls  檢視子頁面資訊,.pts前面數字為子頁面序號。

(pytorch-v0.3) [root@A01-R04-I231-16-7280278 Consumer]# screen -ls
There are screens on:
        26454.pts-1.A01-R04-I231-16-7280278     (Detached)
        769.pts-1.A01-R04-I231-16-7280278       (Detached)
2 Sockets in /var/run/screen/S-root.
26454是主介面的序號,769是子介面的序號。

step5:screen –r 子頁面序號,這時候就回到之前程式執行的序號。

# 但是實際中我遇到一個問題,在子介面中啟用我自己建立的conda環境,環境變數和主介面不一樣