linux定时任务

1.1 添加定时任务

crontab -e

1.2 查看cronteb任务

crontab -l

1.3 查看crontab日志

 cat /var/log/cron
 cat /var/log/cron |tail -n 20  # 查看最后20行日志

1.4 crontab 用户操作 

/sbin/service crond start//启动服务

/sbin/service crond stop //关闭服务 

/sbin/service crond restart //重启服务

/sbin/service crond reload//重新载入配置

systemctl restart crond  # 启动crond服务

systemctl enable crond # 设置开启自动启动

1.5 设置开机启动

vim /etc/rc.d/rc.local

/sbin/service crond start

1.6 设置run.sh文件 

#! /bin/bash

# crontab -e: 每隔6小时执行一次    0 */6 * * * sh /PythonSpiderScrapy/scrapy_venv/NewSpider/news_crontab.sh

# 指定scrapy目录
export PATH=$PATH:/PythonSpiderScrapy/scrapy_venv/bin

# 指定程序所在目录(绝对路径)
cd /PythonSpiderScrapy/scrapy_venv/SHANGSHIYAOPINGMULU


# today=$(date +"%Y-%m-%d")
# nohup scrapy crawlall
nohup scrapy crawl mulu

1.7 设置定时

0 */12 * * * /bin/sh /PythonSpiderScrapy/scrapy_venv/SHANGSHIYAOPINGMULU/run.sh    # 每隔12小时跑一次
分钟,小时,日,月,周

*/1 * * * * rm -rf /home/down/*想要在一个时间周期内执行命令可以这样

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

  

crontab范例
    每分钟执行  * * * * *

    每五分钟执行  */5 * * * *

    每小时执行     0 * * * *

    每天执行        0 0 * * *

    每周执行       0 0 * * 0

    每月执行        0 0 1 * *

    每年执行       0 0 1 1 *

2.crontab 关闭某个程序定时重启

#!/bin/sh

# NAME=$1   # $1 运行时输入参数  为文件名称
NAME="videos"   # 指定进程
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"


export PATH=$PATH://usr/local/python3.6/bin
cd /root/07-shunwangwork/01-steam/steam_video/steam_video
scrapy crawl videos

crontab -e
crontab -l
*/20 * * * * /bin/sh /root/video.sh

chmod +x run_video.sh   # 文件添加执行权限
/sbin/service crond restart

3.检测进程是否存在,不存在就重启

#!/bin/bash
NAME="9000"   # 指定进程
echo $NAME
netstat -anp | grep $NAME &> /dev/null
if [ $? -eq 0 ]
then
  	echo "clickhouse-server service is running"
else
    echo "clickhouse-server service is stopped"
    systemctl restart clickhouse-server
    echo "clickhouse-server service is running"
fi

4.关闭某个进程

#!/bin/sh
 
NAME=$1   # $1 运行时输入参数  为文件名称
#NAME="run_video.py"   # 指定进程
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"

5.windows下写的sh脚本在liunx下运行报错,要转移一下

yum install dos2unix   # 安装创建
dos2unix xxx.sh  # 运行一下就可以

6.定时启动脚本

0 */2 * * * /bin/sh /root/TechXueXi-developing/SourcePackages/start.sh > /root/xxqg.log 2>&1 &
* 18 * * * /bin/bash /home/yscredit/yoyo/sx_zc/jmtional_browser_policy.sh > /home/yscredit/yoyo/sx_zc/logs/jmtional_browser_policy.log 2>&1 &

  

 

 

 

 

  

 

 0 0 * * 6 cd /home/data/Projects/yyzx && /home/data/Projects/Spider/bin/scrapy crawlall

&  表示任务在后台执行,如要在后台运行redis-server,则有  redis-server &

&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'    

| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l

|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"

 

* 8-20/2 * * * rm -rf /home/down/*这个表示在早上8点到晚上8点之间,每两个小时执行一次后面的命令。

* * * * * sleep 20; rm -rf /home/down/*  表示20秒执行一次    

30     6       *           *     0     ls             指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,

0 */12 * * * /bin/sh /PythonSpiderScrapy/scrapy_venv/SHANGSHIYAOPINGMULU/run.sh

* 代表取值范围内的数字

/ 代表"每"

- 代表从某个数字到某个数字

, 代表离散的取值(取值的列表)

rm -rf /var/run/crond.pid 端口占用

which python3 查看命令安装路径

*/1 * * * * /root/kangce/caifu/kangce/bin/python3 /root/kangce/01-python/01-druginfo/druginfo.py

*/30 * * * * /bin/sh /PythonSpiderScrapy/scrapy_venv/NewSpider/news_crontab.sh