一、關於nohup:
1.
[~]$ appending output to nohup.out
證明運行成功,同時把程序運行的輸出信息放到當前目錄的 nohup.out 文件中去。
解釋:nohup 命令運行由 Command參數和任何相關的 Arg參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup 命令,添加 & ( 表示“and”的符號)到命令的尾部。 如果不將 nohup 命令的輸出重定向,輸出將附加到當前目錄的 nohup.out 文件中。如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。
0:標准輸入流 stdin
1:標准輸出流 stdout
2:標准錯誤流 stderr
二、定時任務可用兩種方案實現:
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字段,表示每十分鍾執行一次。