由于测试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
SHELL=/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缩写的月份)

linux 脚本定时执行_linux定时执行sh脚本没执行_linux定时执行shell脚本

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脚本完成

本文原创地址:https://www.linuxprobe.com/jblzxgljdchq.html编辑:刘遄,审核员:暂无