天天看點

Linux:使用nohup讓程序在背景可靠運作 - WinjayYu

Linux:使用nohup讓程序在背景可靠運作

學習之餘我最大的樂趣是找一部不錯的電影慢慢品味,這也是我緩解壓力的最好方式之一,由于我常去的字幕組網站需要簽到才可以下載下傳字幕,像這種娛樂網站誰有時間天天記得去簽到呢,but作為一個準程式猿應該有更好的辦法。果然我在github上逛了逛,便發現的一個不錯的簽到腳本,看來很多人都着和我一樣的剛需呀,這裡附上位址。

一動手很多問題便接踵而至,我打算把這個腳本運作在我的騰訊雲伺服器上面,并且定一個時間,讓它每天在固定的時間run。可是我用的ssh 登入的遠端Linux 伺服器,如果直接按照那腳步的API執行,有一個緻命的問題,我一旦在ssh終端執行了exit,所有子線程都會終止,腳本程式也是一樣。

去google了一通後,發現有幾個不錯的方法可以解決這個問題,這裡我隻介紹我使用的那個方法。

解決方法:

nohup

首先看看nohup的幫助資訊

NOHUP(1)                        User Commands                        NOHUP(1)

NAME
       nohup - run a command immune to hangups, with output to a non-tty

SYNOPSIS
       nohup COMMAND [ARG]...
       nohup OPTION

DESCRIPTION
       Run COMMAND, ignoring hangup signals.

       --help display this help and exit

       --version
              output version information and exit      

ps:英語不好的同學也要鍛煉着多讀英國文檔,我以前英語差的可憐,聯考就是敗在英語上面。後來為了能看懂英國文檔,同時應考大學英語四級,我花了一年時間啃英語,每天背兩小時單詞,看文法,做模拟試卷,到考試之前我做了大概50套題目,把近幾年的考試題一集各種預測題都做了一遍。功夫不負有心人,昨天(2016年8月19日)我查四級成績,過了可以報考六級的分數線,下半年我準備繼續報英語六級。

回到正題:nohup 的使用隻需在要處理的指令前加上 nohup 即可,一般在結尾加上"&"來将指令同時放入背景運作。

示例:

nohup ./qian-ni-mei-server.sh "larsenlouis" "12345678" "0100" &

檢視背景程序:
           

ubuntu@VM-10-71-ubuntu:~$ ps -ef | grep "qian*"

root 8017 1 49 Aug19 ? 05:09:17 /bin/bash ./qian-ni-mei-s erver.sh username passward 2206

root 8401 1 49 Aug19 ? 05:04:06 /bin/bash ./qian-ni-mei-s erver.sh username passward 2206

我在終端執行exit後再次使用ssh登入,檢視背景程序,輸出和上面的一樣。可見此方法可行。

Linux:使用nohup讓程式在背景可靠運作 - WinjayYu