1、鳥哥:http://vbird.dic.ksu.edu.tw/linux_basic/0430cron.php
2、Ubuntu官方:https://help.ubuntu.com/community/CronHowto
一、shell命令
1、>和>>都是重定向輸出
1> 指標準信息輸出路徑(也就是默認的輸出方式)
2> 指錯誤信息輸出路徑
2>&1 指將標準信息輸出路徑指定爲錯誤信息輸出路徑(也就是都輸出在一起)
2、標準輸入(standard input)的文件描述符是 0
標準輸出(standard output)是 1
標準錯誤(standard error)是 2
二、crond
1、crond是一個服務,一個守護進程。crond 是linux用來定期執行程序的命令,crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
2、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。
總結,就是crond會根據crontab中設置的命令,然後執行自己想做的事情。
按照網上查找的資料執行時經常會碰到這種錯誤:
crontab: chdir(/var/spool/cron/crontabs): No such file or directory
所以首先創建這樣一個目錄吧!
#mkdir -p /var/spool/cron/crontabs
然後編輯要執行的任務
#crontabs -e
0 */1 * * * /sbin/ntpdate 192.168.1.67 >/dev/null 2>&1 每隔一個小時更新下時間,不打印任何信息
最後,執行下
#crond
此時你會發現/var/spool/cron/crontabs下有一個跟用戶名相同的文件,保存着要執行的任務。
ps下會發現cron進程已經啓動!
三、若在寫入shell,然後做一個重啓的動作:
可以在rcS中先讓crond執行,即在rcS中寫入此行。
然後在shell中寫入:mkdir -p /var/spool/cron/crontabs,創建一個目錄。
假如我的用戶名爲Linux,然後在shell裏寫入:echo "0 0 * * * /bin/myrestart" >/var/spool/cron/crontabs/linux。
最後更改一下權限。
這樣就好了, 機器就睡會到凌晨重啓。
四、【問題】
實踐中發現問題如下:
在主機端開發板NFS目錄下var裏新建的文件夾在開發板的/var下面查看,並未找到文件夾,同樣在開發板端/var目錄下新建的文件夾或者文件,在主機端也沒有出現,最後感謝王師傅,得到了解決方案與原因:
【原因】
var下面很多文件一直在刷新,電腦硬盤無所謂,嵌入式存儲用的flash,擦寫多了嚴重影響壽命,所以var目錄下的內容實際爲內存虛擬的,並不存在與flash之中。
【解決方案】
在開發板/etc/crontabs/下建立crontab的配置文件root:
* * * * * /myupdate/update
每分鐘執行update一次
然後在/etc/init.d/rcS修改,讓開發板每次啓動之後自動執行:
mkdir -p /var/spool/cron/crontabs#guoshufanADD
cp -p /etc/crontabs/root /var/spool/cron/crontabs#guoshufanADD
chmod 777 /var/spool/cron/crontabs/root#guoshufanADD
crond#guoshufanADD
echo "cp cron config file to /var/spool/cron/crontabs"#guohufanADD
即新建crontab配置文件目錄,然後將配置文件按拷貝至新建目錄下,完美解決問題,不過要記得執行chmod命令,以後只需要修改root中的內容就可以改變crontab配置,不過臨時修改配置還是需要去/var/spool/cron/crontabs內的rooot文件,永久修改是修改/etc/crontabs/root,重啓生效。