cron.deny和cron.allowlinux
cron中有一個crontab命令來對crontab文件進行相關操做:
-l 查看crontab文件內容
-u 用戶名 指定哪一個用戶的crontab文件
-e 編輯crontab文件
-r 刪除crontab文件
crontab filename提交做業文件
1:建立crontab文件
(1)首先肯定一個編輯器,對crontab文件進行編輯,通常是vi
設置以下:在$HOME下的.profile中增長以下:
EDITOR=vi;exportEDITOR
(2)建立一個文件,如test文件(通常是用戶名,不是用戶名也能夠)
如建立的文件內容以下:
cat $HOME/test
0,30 * * * * /bin/echo"test">/dev/console
(3)crontab test
提交的文件會在/var/spool/cron/目錄下一個文件中(這個文件名記爲用戶,那個用戶的crontab記爲那個用戶)
2:通常狀況下,最好不要直接操做/var/spool/cron/目錄下的crontab文件,這樣可能會由於操做問題,形成
更改crontab文件,而影響原來設置的cron任務
那麼怎麼辦呢,通常咱們經過編輯副原本編輯crontab文件
操做以下:
(1)crontab -l >filename
(2)經過編輯filename文件,增長或刪除定時任務
(3)提交filename文件(這樣發現/var/spool/cron/目錄下一個文件已經改變成提交的那個啦,因此切勿更改錯誤哦)
(4)刪除filename文件(或保留這個文件,以便你恢復使用。)
如下是我在使用crontab的一個例子,供你們參考:
crontab -l
# EDITE DO XXXXX
# (/home/test/daemon_crontab_1234 instatll on xxxx)
# version xxxxx
0,30 * * * * /home/test/project/bin/test --start >dev/null 2>&1
因爲每次執行crontab filename均會在上述文件中(linux系統下,其餘不會)增長上述相似的三行註釋來代表我修改的時間,版本信息等
故,我以下的程序作了,對於指定的任務,只有這麼三行代表我修改的時間和版本信息。故作了以下處理.
如下程序是曾經寫過的腳本,如今從新寫了下,但未調試,若是有錯,稍稍調整如下就沒有多大問題了。編輯器
#!/bin/ksh
main()
{
username=$1
type=$2
project=$3 #$3項目的home目錄
crontab_bak=/home/test/daemon_crontab_$$
crontab_cp=/home/test/daemon_crontab_cp_$$
crontab -l >crontab_bak
project_temp=$(echo $project|sed 's/\//\\\//g')unix
#awk -v project_temp=project { gsub(/\//,"\\\/",project_temp) print project_temp}
awk 'BEGIN{
status=0
buff=""
}
index($0,"'$project'/project/bin/test --start") ==0 {
if( status == -1 ){
printf("%s",$0);
}
else if( status == 0 ){
if( $0 ~ /^# EDITE DO XXXXX/ )
{
status =1;
buff=sprintf("%s\n",$0);
}
else
{
status =-1;
buff=sprintf("%s\n",$0);
}
}
else if( status == 1 ){
if( $0 ~ /^# \('$project_temp'\/daemon_crontab_1234 instatll on xxxx\)/ ){
status =2;
buff=sprintf("%s%s\n",buff,$0)
}
else
{
status =-1;
printf("%s%s\n",buff,$0);
}
}else if( status == 2 ){
if( $0 ~ /^# version xxxxx/ ){
status =0;
buff="";
}
else
{
status =-1;
printf("%s\n",$0);
}
}
}' $crontab_bak > $crontab_cp
}
if [ "x$type" = "xadd" ]; then
{
echo "0,30 * * * * /home/test/project/bin/test --start >/dev/null 2>&1" >>$crontab_cp
crontab $crontab_cp
}
if [ "x$type" = "xdelete" ]; then
{
crontab $crontab_cp
}
rm -fr $crontab_cp
rm -fr $crontab_bak
main $@ 2>/dev/null調試