linux 的计划任务 定时任务

时间:2024-10-22 22:34:14

linux的计划任务,也叫做定时任务

  1. 查看linux本机的定时任务

crontab -l #查看计划任务

  1. 编写自己的计划任务

crontab -e #编辑计划任务

  1. 删除任务调度工作

    crontab -r //删除所有任务调度工作

  2. 学习计划任务的语法格式

    分 时 日 月 周 命令绝对路径

    [root@mrcarzy-pc etc]# vim crontab

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root # For details see man 4 crontabs # Example of job definition:
    # .---------------- minute (0 - 59)
    # | .------------- hour (0 - 23)
    # | | .---------- day of month (1 - 31)
    # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
    # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # | | | | |
    # * * * * * user-name command to be executed

    minute: 表示分钟,可以是从0到59之间的任何整数。

    hour:表示小时,可以是从0到23之间的任何整数。

    day:表示日期,可以是从1到31之间的任何整数。

    month:表示月份,可以是从1到12之间的任何整数。

    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    特殊字符:
    • 星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。

    • 逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。

    • 中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。

    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

  • 每分钟执行一次命令

    分 时 日 月 周 命令绝对路径

    * * * * * 命令

  • 每小时的3,15分组执行命令

    分 时 日 月 周 命令绝对路径

    3,15 * * * * 命令绝对路径

#在下午8-11点的第3和第15分钟执行
分 时 日 月 周 命令绝对路径
3,15 20-23 * * * #每晚21:30执行命令
分 时 日 月 周 命令绝对路径
30 21 * * * #每周六、日的下午1:30执行命令
分 时 日 月 周 命令绝对路径
30 13 * * 6,7 #每周一到周五的凌晨1点整,清空/tmp目录的所有文件
分 时 日 月 周 命令绝对路径
0 1 * * 1-5 /usr/bin/rm -rf /tmp/* #每晚的21:30重启nginx
分 时 日 月 周 命令绝对路径
30 21 * 3 * 命令绝对路径 #每月的1,10,22日的4:45重启nginx
分 时 日 月 周 命令绝对路径
45 4 1,10,22 * * systemctl reload nginx #每个星期一的上午8点到11点的第3和15分钟执行命令
分 时 日 月 周 命令绝对路径
3,15 8-11 * * 1
##每月每天凌晨3点30分和中午12点20分执行test.sh脚本
30 3,12 * * * /home/test.sh ##每月每天每隔6小时的每30分钟执行test.sh脚本
30 */6 * * * /home/test.sh ##每月每天早上8点到下午18点每隔2小时的每30分钟执行test.sh脚本
30 8-18/2 * * * /etc/init.d/network restart ##每月每天晚上21点30分执行test.sh脚本
30 21 * * * /etc/init.d/network restart ##每月1号、10号、22号凌晨4点45分执行test.sh脚本
45 4 1,10,22 * * /etc/init.d/network restart ##8月份周一、周日凌晨1点10分执行test.sh脚本
10 1 * 8 6,0 /etc/init.d/network restart ##每月每天每小时整点执行test.sh脚本
00 */1 * * * /etc/init.d/network restart

linux系统服务管理命令

  • 系统服务(linux安装的软件名)

    只有通过yum安装的软件,才能用这个命令

    systemctl 这是centos7系类的命令

    service 这是centos6系统的服务管理命令

  • 实例:(只有yum安装的才能使用这个命令)

    • 启停管理nginx服务

    systemctl status/start/stop nginx

错误处理:

出现 there are stopped jobs 错误:

在shell中输入命令jobs可以查看停止进程列表

obs -l 显示停止进程的详细列表

可以通过如下命令杀死或者激活停止的进程:

杀死:kill %1(%1是将要被杀死的job的进程号)

激活:fg %1(%1是将要被激活的job的进程号)

​ fg代表foreground(前台),可以唤醒被suspended(挂起)的进程