前言:最近在做一個前端監控系統,用到分表分庫的功能,由於代碼上無法做到實時新建表,所以只能夠曲線救國,使用linux系統的定時任務來完成。
=====================================================================
安利一下我的開源項目: 前端監控系統
=====================================================================
一、如何創建一個腳本
先寫一個簡單的shell命令:
1. 使用pwd命令查看當前路徑為/root目錄:
2. 使用vi編輯器 可以直接輸入命令$: vim hello.sh 編寫第一個shell文件 hello.sh, 請以.sh結尾
以“#”開頭的為注釋行,不會被執行。
[ #!/bin/bash ] 作為shell腳本文件的開頭,
[ echo "你好, www.webfunny.cn !" ] 表示打印這句話。
[ node -v ] 表示查看node版本號
3. 執行命令$:chmod 755 hello.sh,通過chmod命令賦予該腳本的執行權限,否則沒有執行權限。
執行命令$:/root/hello.sh 表示在全路徑下執行該shell腳本。
到此,第一個簡單的腳本就完成了。
下邊我們就開始創建定時任務了。
crontab命令常見於Unix和Linux的操作系統之中,用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於“crontab”文件中,以供之后讀取和執行。通常,crontab儲存的指令被守護進程激活。crond 常常在后台運行,定時檢查是否有預定的作業需要執行。
二、安裝crontab
1)Ubantu系統下安裝crontab(看清操作系統)
正常情況下需要先執行$:apt-get upgrade 進行升級
安裝:apt-get install cron
啟動:service cron start
重啟:service cron restart
停止:service cron stop
檢查狀態:service cron status
查詢cron可用的命令:service cron
檢查Cronta工具是否安裝:crontab -l
2)CentOS系統下安裝cron(看清操作系統)
1)vixie-cron 軟件包是 cron 的主程序;
2)crontabs 軟件包是用來安裝、卸裝、或列舉用來驅動 cron 守護進程的表格的程序。
安裝:yum install vixie-cron 安裝:yum install crontabs
基本命令:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
service crond status //查看crontab服務狀態
三、開啟crontab服務
可以參考第二步驟的命令。
四、設置需要執行的腳本
直接編輯 vim /etc/crontab ,默認的文件形式如下:
前四行是有關設置cron任務運行的環境變量。SHELL變量的值指定系統使用的SHELL環境(該樣例為bash shell),PATH變量定義了執行命令的路徑。
文件/etc/crontab中每行任務的描述格式如下,其實就是cron表達式:
定時打印結果如下:
五、nodejs如何調用shell腳本
這點本不屬於這個篇文章的主題,但也是在解決問題中遇到的方法,所以一同放在這里。
linux下定時執行shell腳本完成了,但是再執行命令的時候卻不盡如人意。所以轉而使用nodejs來調用shell腳本,反倒可以成功。
var callFile = require('child_process'); callFile.execFile('./create_table.sh', [], null, function (err, stdout, stderr) { console.log(err, stdout, stderr); });
參考博文:https://blog.csdn.net/longgeaisisi/article/details/90477975