Linux自动执行任务

Linux自动执行任务

耗奇害死猫关注

2018.01.04 10:19:45字数 74阅读 142

单次执行用at和batch,周期性任务执行用crontab。任务执行结束后会将结果返回给发起人,通过邮件完成的。
邮件位于:/var/spool/mail/user_name

单次执行任务:at,batch

at

at [OPTION]...TIME

    TIME表示方法:
        HH:MM[YYYY-mm-dd]
        noon(中午十二点),midnight(晚上十二点),teatime(下午四点)
        tomorrow
        now+#
            UNIT:minutes,hours,days,weeks
        at的作业有队列,用单个字母表示,默认都使用a队列;

    -l: 查看作业队列,相当于atq
    -f /path/to/somefile:从指定文件中读取作业任务,而不用交互式输入
    -d:删除指定作业,等于atrm
    -c:查看指定作业的具体内容
    -q QUEUE:指明队列

注意:作业执行结果会发送邮件给用户;
注意:at可以执行脚本,但是执行的工作目录可能不一样,所以脚本中的路径最好用绝对路径表示;

batch:

batch会让系统负载水平允许的时候执行任务;
各个细节和at一样

周期性任务:cron

服务程序:
    cronie:主程序包,提供了crond守护进程及相关辅助工具;
确保crond守护进程(daemon)处于运行状态;
    CentOS 7:
        systemctl status crond.service
            Active:atcive (running)......
    CentOS 6:
        service crond status
            ...is running
向crond提交作业的方式不同于at,需要专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件;而使用crontab命令:

对于系统cron配置的格式:/etc/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
    注意:
        1.每行定义一个周期任务,有七个字段,各字段之间用空格进行分割:
            *  *  *  *  * :指定周期性时间(5)
            user-name  :指定执行用户(1)
            command to be executed:要执行的任务(1)
        2.此处的环境变量不同于用户登录的环境变量,所以命令用绝对路径(whereis 查看命令绝对路径),或者自定义环境变量;
        3.执行结果通过邮件发送给MAILTO指定的用户
用户cron的配置:/var/spool/cron/USER_NAME
    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
    # |  |  |  |  |
    # *  *  *  *  *  command to be executed
    注意:
        1.每行定义一个cron任务,共6个字符;
        2.使用绝对路径或者自定义环境变量
        3.邮件放给当前用户

时间表示:
    1.特定值:
        给定时间点有效取值范围内的值
            day of week和day of mouth一般不同时使用;
    2. * :给定时间点上有效取值范围内的所有值;
    3.离散取值表示:用逗号隔开
    4.连续时间:用 - 表示,#-#
    5.在指定的时间点上,定义步长: /#:#即步长: */3 * * * *:每三分钟执行一次
        注意:
            1.指定的时间点不能被步长整除时,其意义将不复存在;
            2.cron最小单位为分钟,想完成 秒 的任务,需要用其他机制

原文地址:https://www.cnblogs.com/xuanbjut/p/11822817.html

时间: 2024-10-10 02:23:13

Linux自动执行任务的相关文章

使用php作linux自动执行脚本

使用php作linux自动执行脚本 [来源] 达内    [编辑] 达内   [时间]2013-03-21 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户 login或者某一个页面中, 以便在用户登录或访问到该时,触发运行该代码. 这样 一来, 会造成一个问题, 如果该代码教复杂, 明显减慢该页的正常调用速度. 最近在用PHP(PHP培训 php教程 )作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为 shell script直接在服务器上运行. 在作

yii linux 自动执行脚本

今天用yii开发的系统中要配置一个自定执行的脚本 1.配置好product/config/console.php里面需要用到的组件,像数据库连接 'db'=>array(     'connectionString' => 'mysql:host=localhost;dbname=testdrive',     'emulatePrepare' => true,     'username' => 'root',     'password' => '', ), 2.继承CC

Linux自动执行sh脚本

crontab Linux 用户时程表 crontab -l 查看时程表 crontab -e 编辑时程表 crontab -r 删除时程表 一般crontab 服务是自动启用的. service crond status 命令,查看crontab 是否启用 事例:在指定时间执行/opt/start.sh,在指定时间执行/opt/stop.sh crontab -e 进入vi编辑界面 */2 * * * * sh /opt/start.sh #每隔2分钟执行一次start.sh脚本 */4 *

linux系统自动执行任务(转)

开机启动 开机启动应该是我们很经常的需求了,我们常需要在开机时就自动执行某些命令来开启服务,进程等,有了它我们不必再在每次开机时输入同一堆命令. chkconfig命令 使用chkconfig命令可以在设置在不同启动级别下启动特定的服务或是程序. 先说一下linux的运行级别: 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动 chkcon

Linux 开机自动执行脚本设置

1.首先将需要开机自动执行的脚本demoshell复制到/etc/init.d下 2.修改此脚本的权限 chmod 755 /etc/init.d/demoshell 3.设置启动时执行此脚本 cd /etc/init.d update-rc.d demoshell  defaults 95 最后的数字表示执行顺序,是第几个被执行的 这个命令 等价于update-rc.d demoshell start 95 2 3 4 5 . stop 95 0 1 6表示在Linux的运行2,3,4,5的级

如何在linux中执行一个脚本

---恢复内容开始--- 如何在LINUX中在系统启动时自动执行一个执行脚本 如果是开机马上执行的脚本,可以将脚本写到rc.local中: 如果是用户登录后自动执行脚本,可以将脚本写到相应的用户目录下"-/.bash_profile",若脚本"-/.bash_profile"不存在,可以直接拷贝"/etc/profile"命名为"-/.bash_profile": 如果是要任一用户登录后自动执行脚本,可以将脚本写到"

linux 自动发邮件

背景介绍:公司需要运维在工作日内定时给测试部门发邮件通知SVN版本号并且去测试,每天手动发太烦,纯手工重复无效益的活,那就来自动的吧.linux自动发邮件还在zabbix监控通知等方面也可以用到. 关键点:centos7,svn版本号获取,发邮件工具以及设置,定时执行crontab. 一.svn版本号获取: 命令:svn info URL 获取最新版本信息之后通过一些组合命令即可获取SVN版本号. 二.发邮件: 工具:yum安装即可,mailx-12.5-12.el7_0.x86_64,post

Linux自动备份脚本

今天网上一个朋友问了我一个shell的题目,让我帮他做下.下面是题目以及解题思路. 题目: 写作一个备份/etc目录的脚本,要求:将/etc目录下的所有文件cp到/var/backups目录下的以当天的日期命名的目录中例如(/var/backups/etc.20140809).并且判断前一天的目录中的文件与当天的区别,如果无区别,则删除前一天的备份目录. 解答: [[email protected] scripts]# cat auto_bak.sh  #!/bin/bash # # This 

linux怎么执行jar文件 怎么打可执行的jar包

Linux下执行jar文件方法:命令行下进入文件目录,执行java -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:java -jar /file路径/file.jar,这样在桌面双击即可打开该jar文件 创建可执行的 JAR 文件包详解:JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式.JAR 文件非常类似 ZIP 文件--准确的说,它就是 ZIP 文件,所以叫它文件包.JAR 文