linux下定时任务

编辑: /var/spool/cron


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
* */4 * * * /bin/sh /data/www/test/crontab_ffmpeg.sh


linux下输入:crontab -l 


查看任务是否启动


基本格式 :

*  *   *    *   *  command
分 时 日 月 周  命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)

第6列要运行的命令 

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。


ffmpegctrl.sh脚本:


#!/bin/bash


echo "----------------"


#参数帮助文档
help()
{
   echo "this is cmd help."
   echo "1) -start start ffmpegs."
   echo "2) -stop  stop ffmpegs."
   echo "3) -restart  restart ffmpegs."
   echo "4) -delfile delete ts file"


}


# 停止ffmpeg
stopffmpegs()
{
   pids=$( ps -e | grep -w 'ffmpeg' | awk '{print $1}')
   echo ${pids[@]}
   for pid in ${pids[@]}; do
       echo "Killing process[pid = $pid]... ..."
       (kill -9 $pid)
   done
}


# 启动ffmpeg
startffmpegs()
{
   files=("./ahtv.sh" "./bjtv.sh" "./hntv.sh" "./jstv.sh" "./sctv.sh" "./sdtv.sh" "./sxtv.sh" "./zjtv.sh")
   for file in ${files[@]}
   do
   echo "start file:$file"
   chmod +x $file
   (nohup $file &)
   done


}




# 重启ffmpeg
restartffmpegs()
{
   stopffmpegs;
   startffmpegs;
}


#删除目录下ts文件
function deletefiles()
{
    for file in ` ls $1 `
    do
        if [ -d $1"/"$file ]
        then  
             deletefiles $1"/"$file  
        elif [ ${file##*.} == "ts" ]
        then  
             rm -rf  $1"/"$file
             echo "rm file:$1"/"$file"
        fi
    done
}
varloop=0
   
while [ -n "$1" ]
do


if [[ $varloop -gt 10 ]]; then
  exit 0
else
  ((varloop++))
fi


case $1 in
-h) 
       echo "function help is called"
       help;shift;; 
-start)
      echo "-start"
      startffmpegs
      shift;
      ;;
-stop)
      echo "-stop"
      stopffmpegs
      shift;
      ;;
-restart)
      echo "-restart"
      stopffmpegs;
      startffmpegs;
      shift;
      ;;
-delfile)
      deletefiles $2
      echo "delete files1: $2"
      shift 2;
      ;;
-*) 
       echo "error: no such option $1. -h for help";
       exit 1;;
*) 
     break;;
esac
done








echo "----------------"

你可能感兴趣的:(专业知识)