精华内容
下载资源
问答
  • Linux 执行定时任务 shell脚本

    万次阅读 2017-12-26 11:08:32
    Linux上面执行定时任务,我们可以利用crontab -e直接编辑定时任务 另外我们还可以写好shell脚本,定时去执行shell脚本,这两个方法都可以起到定时执行的作用 下面我详细说一下入如何执行shell脚本 1.声明一下我...

    Linux上面执行定时任务,我们可以利用crontab -e直接编辑定时任务 另外我们还可以写好shell脚本,定时去执行shell脚本,这两个方法都可以起到定时执行的作用

    下面我详细说一下入如何执行shell脚本

    1.声明一下我安装的lnmp环境,shell脚本存放的位置在 /usr/local/sbin路径下面

    新建一个test.sh

    #! /bin/bash  
    echo "yes" >> /home/abc.txt
    
    保存完毕后记得给予权限 chmod 777 test.sh

    Shell脚本通常都是以.sh 为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后您发现了.sh为后缀的文件那么它可能是一个shell脚本了。test.sh中第一行要以 “#! /bin/bash” 开头,它代表的意思是,该文件使用的是bash语法。如果不设置该行,虽然您的shell脚本也可以执行,但是这不符合规范。 # 表示注释,在前面讲过的。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。当然这些注释并非必须的,如果您懒的很,可以省略掉,但是不建议省略。因为随着工作时间的逐渐过渡,您写的shell脚本也会越来越多,如果有一天您回头查看自己写过的某个脚本时,很有可能忘记该脚本是用来干什么的以及什么时候写的。所以写上注释是有必要的。另外系统管理员并非只有您一个,如果是其他管理员查看您的脚本,他看不懂岂不是很郁闷。下面该运行一下这个脚本了:

    2.将shell脚本加入定时任务

    crontab -e

    * * * * * /usr/local/sbin/test.sh
    
    

    参  数:
    -e  编辑该用户的计时器设置。
    -l  列出该用户的计时器设置。
    -r  删除该用户的计时器设置。
    -u<用户名称>  指定要设定计时器的用户名称。

    crontab 格式:

    分钟   小时   日   月   星期   命令

    *        *      *    *     *       *

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列 表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    记住几个特殊符号的含义:
    “*”代表取值范围内的数字,
    “/”代表”每”,
    “-”代表从某个数字到某个数字,
    “,”分开几个离散的数字

    3.查看执行test.sh脚本的结果

    [root@iz2ze2ewt14msyueuiq693z home]# cat abc.txt 
    yes
    yes
    yes
    yes
    
    执行成功  666


    展开全文
  • 最近发现现场每天重启程序的定时任务没有成功执行,在程序的启动日志中并没有打印定时任务执行时间点的日志信息。 查看/var/log/cron 日志,发现定时任务已执行。 查看 /var/spool/mail/root 日志,发现脚本执行...

    最近发现现场每天重启程序的定时任务没有成功执行,在程序的启动日志中并没有打印定时任务执行时间点的日志信息。

    查看 /var/log/cron 日志,发现定时任务已执行。

    查看 /var/spool/mail/root 日志,发现脚本执行报错,没有找到环境变量。

    查询了想关资料,发现crontab执行定时任务时不会缺省的从用户profile文件中读取环境变量参数,导致脚本执行失败。

    解决方法:

           1. 在添加定时任务时,在执行脚本的命令前加上   source /etc/profile  &&   ,先加载环境变量,再执行脚本

           2.修改脚本,在执行逻辑之前执行  source /etc/profile  命令即可

    展开全文
  • 2.添加定时任务 有两种方法 a.修改文件 vim /etc/crontab 然后添加定时任务,注意环境变量和用户信息, 脚本无法执行问题 如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)...

    1.首先查看crontab是否有启动

    service crond status
    

    在这里插入图片描述
    如上图所示则正常运行中

    2.添加定时任务

    有两种方法

    a.修改文件

    vim /etc/crontab
    

    在这里插入图片描述
    然后添加定时任务,注意环境变量和用户信息,
    在这里插入图片描述
    脚本无法执行问题
    如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

    解决方法:

    1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker。

    2、在 shell 脚本开头使用以下代码:

    #!/bin/sh
    
    . /etc/profile
    . ~/.bash_profile
    

    3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,例如:

    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
    

    b.使用命令

    crontab -e
    

    一样如上添加即可

    3.查看定时任务执行情况

    tail -f /var/log/cron
    

    或者

    service crond status -l
    

    ps:定时任务添加语法详解

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8/bin:/usr/local/sbin:/usr/local/bin:/root/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
    

    规则很简单,看注释就能看懂了,从左到右分别是 分钟(0-59)、小时(0-23)、天(1-31)、月(1-12)、星期(0-6)、用户名、要执行的命令或者脚本
    每几分钟或者几小时或者几天 只要在对应*号下添加即可
    如:
    每一分钟执行一次 /bin/ls:

    */1 * * * * /bin/ls
    

    每十分钟执行一次 /bin/ls:

    */10 * * * * /bin/ls
    

    每一小时执行一次 /bin/ls:

    * */1 * * *  /bin/ls
    

    每三小时执行一次 /bin/ls:

    * */3 * * *  /bin/ls
    

    实例

    每一分钟执行一次 /bin/ls:

    * * * * * /bin/ls
    

    在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:

    0 6-12/3 * 12 * /usr/bin/backup
    

    周一到周五每天下午 5:00 寄一封信给 alex@domain.name:

    0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
    

    每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分…执行 echo “haha”:

    20 0-23/2 * * * echo "haha"
    

    下面再看看几个具体的例子:

    0 */2 * * * /sbin/service httpd restart  意思是每两个小时重启一次apache 
    
    50 7 * * * /sbin/service sshd start  意思是每天7:50开启ssh服务 
    
    50 22 * * * /sbin/service sshd stop  意思是每天22:50关闭ssh服务 
    
    0 0 1,15 * * fsck /home  每月1号和15号检查/home 磁盘 
    
    1 * * * * /home/bruce/backup  每小时的第一分执行 /home/bruce/backup这个文件 
    
    00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
    
    30 6 */10 * * ls  意思是每月的1、11、21、31日是的6:30执行一次ls命令
    注意:当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可,如:
    
    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh > /dev/null 2>&1 
    
    展开全文
  • 原因:是某些命令无法使用crontab调用,因为用户登陆Linux操作系统的时候,/etc/profile, ~/.bash_profile等配置文件会被自动执行,所以手动执行脚本能够成功,但是crontab执行失败 解决办法: 1.脚本内的命令全部用...

    参考地址:
    https://blog.csdn.net/cy309173854/article/details/53186516

    问题:shell脚本在手动执行的时候可以正常打印输出,在定时任务的时候不会打印执行命令后的输出内容

    原因:是某些命令无法使用crontab调用,因为用户登陆Linux操作系统的时候,/etc/profile, ~/.bash_profile等配置文件会被自动执行,所以手动执行脚本能够成功,但是crontab执行失败

    解决办法:
    1.脚本内的命令全部用绝对路径

    #!/bin/bash
    date=$(date +%d-%m-%Y)
    /usr/local/mysql/bin/mysqldump -u root -p'xxx' xxx > /data/sdv1/mysqlbak/$date-xxx.sql
    echo `date +%Y-%m-%d` >> /data/sdv1/mysqlbak/$date.log
    echo 'Backup Successfully Completed' >> /data/sdv1/mysqlbak/$date.log
    

    2.脚本文件内容添加环境变量

    #!/bin/bash
    . /etc/profile
    . ~/.bash_profile
    /usr/local/mysql/bin/mysqldump -u root -p'xxx' xxx > /data/sdv1/mysqlbak/$date-xxx.sql
    echo `date +%Y-%m-%d` >> /data/sdv1/mysqlbak/$date.log
    echo 'Backup Successfully Completed' >> /data/sdv1/mysqlbak/$date.log
    
    展开全文
  • linux定时任务crontab执行脚本无输出

    千次阅读 2018-06-08 10:54:37
    Li 写了一个备份数据库的脚本,手动调试时,OK。 写入crontab后,脚本失效。... 因为在Linux下用crontab执行定时任务时不会从用户profile文件中读取环境变量参数,所以导致在手动执行某个脚本时是成功的,但是写入cr...
  • Linux计划任务定时执行脚本

    千次阅读 2017-11-09 22:54:35
    1 在linux中启动crontab服务:/etc/init.d/crond start 2 crontab的格式: #crontab -u -u指定一个用户 -l列出某个用户的任务计划 -r删除某个用户的任务 -e编辑某个用户的任务 如果想要编辑一个计划任务直接在...
  • 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录...
  • 问题: 为了简便或功能需要,可能需要在服务器上定时执行脚本完成task。这里创建完shell脚本后,使用linux的内置服务执行。 linux服务器系统为centos7。 原理:  crontab 是linux内置服务,只需要开启crontab...
  • 树莓派添加定时执行脚本任务

    千次阅读 2018-10-07 01:33:05
    最近做了个树莓派闹钟,每天早上叫起床,然后播放网络电台,方法是添加定时启动脚本脚本用vlc播放网络电台并定时停止。... 但是这篇文章最后添加定时启动脚本任务...利用crontab工具添加定时任务,我插入的是00 08 *...
  • Linux定时执行脚本

    千次阅读 2016-08-25 09:52:15
    Linux定时执行脚本 来源:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html   今天做了个数据库的备份脚本,顺便系统得学习一下Linux定时执行脚本的设置。Linux下的定时执行主要是使用...
  • linux 定时执行shell脚本 定时任务

    千次阅读 2015-12-14 17:32:05
    在oracle 中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘.   在oracle 中可以利用dbms_job包定时执行pl/sql、sql...
  • linux下的定时任务 Python 运行 : crontab - e 进入编辑模式: * * * * * python /etc/task/run.py >> /var/log/dw.log 2 > &1 需要注意2点 , 就是 1.不能写脚本的名字, 必须在脚本前加上python , ...
  • linux下设置定时执行脚本

    千次阅读 2019-02-23 14:53:58
    linux下设置定时执行脚本 1.首先安装所需程序并启动 crontabs是设置周期性被执行的指令 yum install vixie-cron yum install crontabs service crond start service crond status 出现以下信息则表示crond启动成功 ...
  • linux添加定时任务crontab

    千次阅读 2018-11-30 16:33:16
    开发项目部署时,难免需要很多定时任务,或者执行脚本等。crontab工具非常实用。记录下安装使用过程 1.本机系统版本如下 [root@VM_0_5_centos csr]# uname -a Linux VM_0_5_centos 2.6.32-642.6.2.el6.x86_64 #1 ...
  • Linux定时执行php脚本,来完成对某个接口运转情况的监控,使用的方法 是用Linux里的Crontab定时器,查阅了很多资料,资料讲的不是太全,有些也有错误,在其中我也绕了很多弯路,故记录一下自己使用Crontab来实现...
  • test.sh脚本: find /dir -maxdepth 1 -mtime +92 -name “.” -exec rm -rf {} \ ; -mtime +92 –设置时间为91天前; -name *.mail[12] –设置文件名称中包含mail1或者mail2; -exec rm -rf –查找完毕后执行...
  • linux 添加定时任务

    千次阅读 2018-03-19 15:43:02
    定时清除日志为例:转载:http://www.jb51.net/article/95094.htm①清理某个路径下的日志脚本delOldLogs.sh:[root@prx01 cleanlog]# vim /usr/local/wutongyu/cleanlog/delOldLogs.sh #!/bin/sh #删除输入路径下...
  • linux定时执行php脚本

    千次阅读 2016-02-19 14:52:56
    linux定时执行php脚本 执行PHP脚本 方法1 如果你想定时执行某一个PHP脚本 可以直接这样写: */1 * * * * root -q /bin/local/php /path/to/your/php/script.php (每一分钟执行一次script.php) 注意,...
  • 编写定时任务执行脚本 initial.sh #!/etc/bash folder= "/var/www/default" file= "/var/www/default/network.sh" if [ ! -d " $folder " ]; then mkdir " $folder " fi echo "----------...
  • 如何编写Linux定时执行shell脚本任务

    千次阅读 2019-05-24 21:25:41
    很多时候一些shell脚本我们都希望服务器可以自己定时的去运行,那么以下作简单讲解: 首先讲解一些关于cron服务的指令: service crond start //启动服务 service crond stop //关闭服务 service crond restart /...
  • 本文将以实例学习,如何在 linux 中定时执行脚本任务。 添加定时任务 执行命令: crontab -e 进入编辑模式,添加定时任务:  //每隔1分钟执行一次 */1 * * * * /root/test_demo.sh //每天10点执行 0 10 * * *...
  • 项目中遇到定时清理数据库数据的需求,通过linux创建定时任务,定时任务执行的shell脚本中调用sql脚本来实现 一、shell脚本 #!/bin/bash # 获取当前时间 DATE=$(date "+%Y%m%d%H%M%S") # 登陆数据库
  • date >/home/caodi/Dropbox/#linux_linux/shell_ontime/test_sec uurl http://www.linkedin.com/in/wangkaikai -o html 步骤参照http://blog.csdn.net/caodiandxiaohe/article/details/12784271 #1.
  • linux定时执行脚本

    千次阅读 2017-12-21 15:07:45
    在oracle 中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle 中可以利用dbms_job包定时执 ...
  • linux crontab定时执行shell脚本

    千次阅读 2019-04-15 15:53:51
    linux下使用crontab命令被用来提交和管理用户的需要周期性执行任务,示例如下: crontab -e 编辑周期任务 30 21 * * * /etc/init.d/smb restart 每晚的21:30重启smb crontab命令说明:  crontab命令被用来提交...
  •  */2 * * * * 通过这段字段可以设定什么时候执行脚本  /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 这一字段可以设定你要执行的脚本,这里要注意一下bin/sh 是指运行 脚本的命令 后面一段时指脚本存放的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,865
精华内容 9,146
关键字:

linux添加定时任务执行脚本

linux 订阅