由于测试ffmpeg推流用flv方法的话没有做手动断流,所以要先用.sh来执行关流,减少CPU和其他资源占用
首先编撰.sh文件
#! /bin/bash echo "kill ffmpeg is start..." killall -9 ffmpeg echo "kill ffmpeg is ok!"
开头是指此使用/bin/bash来解释执行。
接出来是输出执行开始,执行杀害指定名子的所有进程,之后输出执行完成
将.sh文件保存为killffmpeg.sh并保存在linux服务器上linux运维招聘,我这儿的路径为/root/test/,注意,windows下保存脚本可能会有问题linux 脚本定时执行,由于:
Windows下换行符号是“rn”
回车符是CarriageReturn,C语言中是'r'换行符是LineFeed,C语言中是'n'回车换行符实际是两个字符,就是rn;
而linux下是“n”没有”r”;
执行以下
sed -i 's/r$//' ./killffmpeg.sh
但是赋于.sh脚本执行权限,777是最高权限,按照自己的须要来更改,可以使用ll./文件名来查看执行权限
chmod 777 ./killffmpeg
接出来我们尝试执行已下早已编撰好的脚本
可以看见,由于没有正在拉推的流所以输出了未找到进程,这是正常情况
并且我们光有脚本还不行,我们须要定时任务执行器crontab
先检测一下是否安装了crontab
我安装的操作是CentOS8.4所以使用systemctl,有的同学是service这样,注意一下
systemctl status crond.service
可以看见CentOS8.4早已预安装了cron,而且是enable状态
若果没有安装的同学可以参考这篇博客
https://blog.csdn.net/hukai0q/article/details/83380951
可以使用yum来安装
之后就可以配置任务了
更改/etc/crontab之后在最下边一行添加任务也可以嵌入式linux 培训,注意脚本文件的路径是绝对路径,可以用pwd来查看
[root@localhost cron]# vi/etc/crontab =/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts */1 * * * * root /root/test/killffmpeg.sh
文件/etc/crontab中每行任务的描述格式如下:
minutehourdaymonthdayofweekcommand
minute-从0到59的整数
hour-从0到23的整数
day-从1到31的整数(必须是指定月份的有效日期)
month-从1到12的整数(或如Jan或Feb缩写的月份)
dayofweek-从0到7的整数,0或7拿来描述周末(或用Sun或Mon缩写来表示)
command-须要执行的(可用asls/proc>>/tmp/proc或执行自定义脚本的命令)
每一分钟执行*/1****
每小时执行0****
每晚执行00***
每周执行00**0
每月执行001**
每年执行0011*
root表示以root用户身分来运行
run-parts表示前面跟随的是一个文件夹,要执行的是该文件夹下的所有脚本
对于以上各句子,星号(*)表示所有可用的值。诸如*在指代month时表示每月执行(须要符合其他限制条件)该命令。
整数间的连字号(-)表示整数列,比如1-4意思是整数1,2,3,4
指定数值由冒号分开。如:3,4,6,8表示这四个指定整数。
符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3拿来运行每三个月份运行指定任务。
以“#”开头的为注释行,不会被执行。
crontab -l
假如报:nocrontabforroot
主要诱因是因为这个liunx服务器第一次使用crontab,还没有生成对应的文件造成的,执行了编辑(crontab-e)后就生成了这个文件
crontab -e
直接编辑添加一行,注意这儿不须要加root,保存退出即可
*/1 * * * * /root/test/killffmpeg.sh
crontab-e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
crontab-l//列举当前的所有调度任务
crontab-l-ujp//列举用户jp的所有调度任务
crontab-r//删掉所有任务调度工作
通常情况保存退出后就早已存在任务列表了,可以使用crontab-l来进行查看,假如还没有的话可以重新载入或则重启crontab来刷新任务列表
systemctl reload crond.service
systemctl restart crond.service
再度执行crontab-l可以看见刚刚添加的任务早已存在了
crontab的默认日志路径在/var/log/cron
我们使用命令查看
tail -f /var/log/cron
可以看见linux 脚本定时执行,我们的定时任务早已成功执行并输出了执行结果
至此,配置定时执行.sh脚本完成
本文原创地址://lrxjmw.cn/jblzxgljdchq.html编辑:刘遄,审核员:暂无