您好,登錄后才能下訂單哦!
如何分析linux中nohup命令及cron crontab,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
1、nohup命令介紹:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶之后繼續(xù)運行相應(yīng)的進程。nohup就是不掛起的意思(no hang up)
在shell中,文件描述符通常是:STDIN標準輸入,STDOUT標準輸出,STDERR標準錯誤輸出,即:0,1,2,
例子:nohup abc.sh > nohup.log 2>&1 &
其中2>&1 指將STDERR重定向到前面標準輸出定向到的同名文件中,即&1就是nohup.log
那么結(jié)果就是當執(zhí)行的命令發(fā)生標準錯誤,那么這個錯誤也會輸出到你指定的輸出文件中
nohup把abc.sh的輸出重定向到文件nohup.log 同時出現(xiàn)錯誤也輸出到nohup.log ,然后后臺執(zhí)行。
There are two formats for redirecting standard output and standard error:
&>word
and
>&word
Of the two forms, the first is preferred. This is semantically equivalent to
>word 2>&1
2、cron和crontab
cron是系統(tǒng)主要的調(diào)度進程,可以在無需人工干預(yù)的情況下運行作業(yè)。有一個叫做crontab的命令允許用戶提交、編輯或刪除相應(yīng)的作業(yè)。每一個用戶都可以有一個crontab文件來保存調(diào)度信息。可以使用它運行任意一個shell腳本或某個命令,每小時運行一次,或一周三次,這完全取決于你。每一個用戶都可以有自己的crontab文件,但在一個較大的系統(tǒng)中,系統(tǒng)管理員一般會禁止這些文件,而只在整個系統(tǒng)保留一個這樣的文件。系統(tǒng)管理員是通過cron.deny和cron.allow這兩個文件來禁止或允許用戶擁有自己的crontab文件。
3.1、crontab的域
為了能夠在特定的時間運行作業(yè),需要了解crontab文件每個條目中各個域的意義和格式。
下面就是這些域:
第1列分鐘1~5 9
第2列小時1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要運行的命令
下面是c r o n t a b的格式:
分< >時< >日< >月< >星期< >要運行的命令
其中< >表示空格。
crontab文件的一個條目是從左邊讀起的,第一列是分,最后一列是要運行的命令,它位于星期的后面。
在這些域中,可以用橫杠-來表示一個時間范圍,例如你希望星期一至星期五運行某個作業(yè),那么可以在星期域使用1-5來表示。還可以在這些域中使用逗號“,”,例如你希望星期一和星期四運行某個作業(yè),只需要使用1,4來表示??梢杂眯翘?來表示連續(xù)的時間段。如果你對某個表示時間的域沒有特別的限定,也應(yīng)該在該域填入*。該文件的每一個條目必須含有5個時間域,而且每個域之間要用空格分隔。該文件中所有的注釋行要在行首用#來表示。
3.2、crontab條目舉例
這里有crontab文件條目的一些例子:
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:30運行/apps/bin目錄下的cleanup.sh。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、10、22日的4:45運行/apps/bin目錄下的backup.sh。你可能已經(jīng)注意到上面的例子中,每個命令都給出了絕對路徑。當使用crontab運行shell腳本時,要由用戶來給出腳本的絕對路徑,設(shè)置相應(yīng)的環(huán)境變量。記住,既然是用戶向cron提交了這些作業(yè),就要向cron提供所需的全部環(huán)境。不要假定cron知道所需要的特殊環(huán)境,它其實并不知道。所以你要保證在shell腳本中提供所有必要的路徑和環(huán)境變量,除了一些自動設(shè)置的全局變量。如果cron不能運行相應(yīng)的腳本,用戶將會收到一個郵件說明其中的原因。
3.3、crontab命令選項
crontab命令的一般形式為:
crontab [-u user] -e -l -r
其中:
-u 用戶名。
-e 編輯crontab文件。
-l 列出crontab文件中的內(nèi)容。
-r 刪除crontab文件。
如果使用自己的名字登錄,就不用使用- u選項,因為在執(zhí)行crontab命令時,該命令能夠知道當前的用戶。
3.4、創(chuàng)建一個新的contab文件
在考慮向cron進程提交一個crontab文件之前,首先要做的一件事情就是設(shè)置環(huán)境變量EDITOR。cron進程根據(jù)它來確定使用哪個編輯器編輯crontab文件。99 %的UNIX和LINUX用戶都使用vi,如果你也是這樣,那么你就編輯$HOME目錄下的.pro
EDITOR=vi; export EDITOR
然后保存并退出。
不妨創(chuàng)建一個名為<user>cron的文件,其中<user>是用戶名,為了提交你剛剛創(chuàng)建的crontab文件,可以把這個新創(chuàng)建的文件作為cron命令的參數(shù):
$ crontab davecron
現(xiàn)在該文件已經(jīng)提交給cron進程,同時,新創(chuàng)建文件的一個副本已經(jīng)被放在/var/spool/cron目錄中,文件名就是用戶名(即,dave)。
3.5、列出crontab文件
為了列出crontab文件,可以用:
$crontab -l
3.6、編輯crontab文件
如果希望添加、刪除或編輯crontab文件中的條目,而EDITOR環(huán)境變量又設(shè)置為vi,那么就可以用vi來編輯crontab文件,相應(yīng)的命令為:
$ crontab -e
可以像使用vi編輯其他任何文件那樣修改crontab文件并退出。
3.7、刪除crontab文件
為了刪除crontab文件,可以用:
$ crontab -r
3.8、恢復(fù)丟失的crontab文件
如果不小心誤刪了crontab文件,假設(shè)你在自己的$HOME目錄下還有一個備份,那么可以將其拷貝到/var/spool/cron/<username>,其中<username >是用戶名。如果由于權(quán)限問題無法完成拷貝,可以用:
$ crontab <filename>
其中,<filename>是你在$HOME目錄中副本的文件名。
看完上述內(nèi)容,你們掌握如何分析linux中nohup命令及cron crontab的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。