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 "----------------"

Linux系统中配置Cron定时任务是一项常见的系统管理任务,可以用于自动化执行备份、清理日志、运行脚本等操作。以下是详细的配置方法和相关注意事项。 ### 配置Cron定时任务的基本步骤 Cron任务的配置主要通过`crontab`命令完成。每个用户可以拥有自己的`crontab`文件,系统级任务则通常位于`/etc/crontab`或`/etc/cron.d/`目录下。 #### 查看当前用户的Cron任务 可以使用以下命令查看当前用户的所有Cron任务: ```bash crontab -l ``` #### 编辑当前用户的Cron任务 使用以下命令进入编辑模式,添加、修改或删除定时任务: ```bash crontab -e ``` 在编辑器中,每一行代表一个定时任务,格式如下: ``` * * * * * command_to_execute ``` 五个星号分别表示: - 第1个星号:分钟(0-59) - 第2个星号:小时(0-23) - 第3个星号:日期(1-31) - 第4个星号:月份(1-12) - 第5个星号:星期几(0-7,0和7都表示星期日) 例如,以下任务表示每天凌晨1点执行一次备份脚本: ``` 0 1 * * * /path/to/backup_script.sh ``` #### 系统级Cron任务 系统级任务通常由root用户管理,配置文件位于`/etc/crontab`,其格式与用户级`crontab`略有不同,多出一列用于指定执行任务的用户: ``` * * * * * username command_to_execute ``` 此外,`/etc/cron.d/`目录下也可以放置多个独立的Cron任务文件,适用于不同服务或应用。 #### 启动与管理Cron服务 在大多数Linux发行版中,Cron服务由`cron`或`crond`守护进程提供。可以通过以下命令管理服务状态: ```bash # 启动Cron服务 sudo service cron start # 停止Cron服务 sudo service cron stop # 重启Cron服务 sudo service cron restart # 查看Cron服务状态 sudo service cron status ``` #### Cron任务的日志查看 Cron任务的执行日志通常记录在系统日志文件中,如`/var/log/syslog`(Debian/Ubuntu)或`/var/log/cron`(CentOS/RHEL)中。可以通过以下命令查看日志: ```bash tail -f /var/log/syslog | grep CRON ``` 或 ```bash journalctl ``` ### 注意事项 - 在配置Cron任务时,确保脚本路径正确,并且脚本具有可执行权限。 - 如果任务依赖特定环境变量,建议在Cron中显式定义这些变量,避免因环境变量缺失导致任务失败。 - 使用`crontab -e`编辑任务时,务必确保语法正确,否则可能导致整个Cron配置失效。 - 如果系统中存在`/etc/cron.allow`和`/etc/cron.deny`文件,只有在`cron.allow`中的用户可以使用Cron,而`cron.deny`中列出的用户将被禁止使用Cron。如果两个文件都不存在,则只有root用户可以管理Cron任务[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值