Linux讓程式在背景執行


  • 訂閱パトロン即可看到更多文章 https://www.patreon.com/wade3c
  • 會員文章列表 https://coda.io/d/YT-channel_dLrb0LRX0xj/Patreon_supr9#_lu-tL
  • 公開文章列表 https://coda.io/d/YT-channel_dLrb0LRX0xj/Patreon_sucfV#_luJfw
  • Youtube頻道
  • 粉專 https://www.facebook.com/wade3c/
  • デジタルオーシャン推薦連結 https://m.do.co/c/1edcf7d6c08e
  • 讓コマンド在背景跑


    在要跑的指令結尾加上 &
    jupyterlab &
    
    指令和 & 中間通常會空一格

    同時又不會出力


    /path/to/your/script.sh > /dev/null 2>&1 &
    
    1代表螢幕輸出,2代表錯誤輸出

    檢視背景執行的プロセス


    jobs
    

    殺す掉特定背景程式


    kill %1
    
    最後面的數字是取決於仕事給的番号會從1開始)
    [1]-  Running                 sleep 100 &
    [2]+  Running                 sleep 200 &
    

    讓ssh連線デタッチ後程序能繼續跑


    接在已經背景執行的程序後
    disown  -h  %1
    
    或是可以在下背景時同時搭配 nohup
    nohup jupyterlab &
    
    ノット會把原本出力到端末的東西給寫到 nohup.out如果你的指令會一直輸出內容,就有可能讓 nohup.out 這個檔案異常巨大
    可以搭配上面的 > /dev/null 2>&1 會將所有輸出直接丟掉
    nohup /path/to/your/script.sh > /dev/null 2>&1 &
    

    其他套件


    還能用像是スクリーン/tmux來假裝連線一直都在

    リファレンス


    How to run a command in the background and get no output?
    [shell] 2>&1 是什麼意思 @ 痞客興的部落格 :: 痞客邦 ::
    How do I use the nohup command without getting nohup.out?