nohup及crontab定時任務


一、關於nohup:

1.

 啟動是:nohup /home/spex/bin_prodDemo/task.sh &                        
 一定要把路徑打全,絕對地址 然就是退出,記得退出用exit退出終端!!千萬不要直接退出.不然還是沒有用的.
出現提示: 
  [~]$ appending output to nohup.out 
  證明運行成功,同時把程序運行的輸出信息放到當前目錄的 nohup.out 文件中去。
可以查看一下 ps aux|grep task
 
2.語法:nohup Command [ Arg ... ] [ & ]

 解釋:nohup 命令運行由 Command參數和任何相關的 Arg參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup 命令,添加 & ( 表示“and”的符號)到命令的尾部。 如果不將 nohup 命令的輸出重定向,輸出將附加到當前目錄的 nohup.out 文件中。如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。

操作系統中有三個常用的流:
  0:標准輸入流 stdin
  1:標准輸出流 stdout
  2:標准錯誤流 stderr
  一般當我們用 > console.txt,實際是 1>console.txt的省略用法;< console.txt ,實際是 0 < console.txt的省略用法。

二、定時任務可用兩種方案實現:

1.shell代碼

不太推薦,可參考https://www.cnblogs.com/linux-wang/p/8142844.html

2.使用crontab來完成定時執行一次可執行任務

1)安裝crontab

  [root@slaver1 hadoop]# yum install crontabs
  [root@slaver1 hadoop]# service crond status          #查看狀態
  [root@slaver1 hadoop]# /sbin/service crond stop     #關閉服務
  [root@slaver1 hadoop]# /sbin/service crond start    #啟動服務
  [root@slaver1 hadoop]# /sbin/service crond restart  #重啟服務
  [root@slaver1 hadoop]# /sbin/service crond reload   #重新載入配置
  [root@slaver1 hadoop]# service crond start          #手動啟動crontab服務
  [root@slaver1 hadoop]# ntsysv                       #查看crontab服務是否已設置為開機啟動,執行命令
  [root@slaver1 hadoop]# chkconfig –level 35 crond on #加入開機自動啟動

2)命令格式

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

3)參數詳情

    -u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用戶來運行。
    file:file是命令文件的名字,表示將file做為crontab的任務列表文件並載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標准輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
    -e:編輯編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。)
    -l:查看顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。)
    -r:刪除(從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。)
    -ir:刪除提示(在刪除用戶的crontab文件時給確認提示。)

 

4)編輯當前用戶的cron配置

crontab -e

#每小時去執行目錄下的shell文件

0*/1 * * * /home/test/test.sh >> /tmp/test.txt

 

linux中>表示生成文件覆蓋原文件內容(文件的日期也會自動更新),>>表示追加內容(會另起一行,文件的日期也會自動更新)。

5)crontab文件格式:

minute   hour    day   month   week   command

分           時        日       月         周       命令

minute: 表示分鍾,可以是從0到59之間的任何整數。

hour:表示小時,可以是從0到23之間的任何整數。

day:表示日期,可以是從1到31之間的任何整數。

month:表示月份,可以是從1到12之間的任何整數。

    week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。

command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。

例如:

    每隔5秒執行一次:0/5 * * * * 

每分鍾執行一次:* * * * * /home/test.sh  

每小時的10,15分鍾各執行一次test.sh腳本:10,15 * * * * /home/test.sh 

每兩小時執行一次:0 */2 * * * /home/test.sh 

每天晚上1點調用:0 1 * * * /home/testuser/test.sh     

每天早上8點15執行一次:15 8 * * * /home/test.sh 

1月1號早上8點15執行一次:15 8 1 jan * /home/test.sh 

每個星期六的早上6點執行一次:0 6 * * 6 /home/test.sh 

在以上各個字段中,還可以使用以下特殊字符:

   星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。
   逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
   中杠(-):用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”
   正斜線(/):正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鍾執行一次。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM