精华内容
下载资源
问答
  • Ubuntu 定时执行脚本

    万次阅读 2019-04-02 21:45:11
    cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。在Ubuntu中,cron是被默认安装并启动的。 二、例子 直接上例子,来看看怎么用。 需求:定时每天8点,自动执行保存在/root目录下hello.sh...

    一、关于crontab

    cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。在Ubuntu中,cron是被默认安装并启动的。

     

    二、例子

    直接上例子,来看看怎么用。

    需求:定时每天8点,自动执行保存在/root目录下hello.sh脚本

     

    1、方法很简单,只需编辑ect下crontab文件就行了,这个文件里存放的就是cron要执行的命令,以及定时执行的时间

    vim /etc/crontab

    2、最后一行添加:

    00 08   * * *   root    /root/hello.sh
    

     

    三、解释

    1、crontab定时任务语法如下:

    minute   hour   day   month   week  user  command     #顺序:分 时 日 月 周 用户 命令

    2、说明:

        minute: 表示分钟,可以是从 0 到 59 之间的任何整数。
    
        hour:表示小时,可以是从 0 到 23 之间的任何整数。
    
        day:表示日期,可以是从 1 到 31 之间的任何整数。
    
        month:表示月份,可以是从 1 到 12 之间的任何整数。
    
        week:表示星期几,可以是从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日。
    
        user:linux的用户身份,例如root,或者其他用户
    
        command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

     

    3、在以上各个字段中,还可以使用以下特殊字符:

        星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    
        逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    
        中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    
        正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,\
    例如*/10,如果用在 minute 字段,表示每十分钟执行一次。

    四、补充

    cron 服务的启动与停止,命令如下:

        1)service cron start  /*启动服务*/

        2)service cron stop /*关闭服务*/

        3)service cron restart /*重启服务*/

        4)service cron reload /*重新载入配置*/

        5)service cron status /*查看crond状态*/ 

     

    五、兴趣拓展

    写了一个每天8点从中国天气网爬取今天天气,传到ssh登录欢迎页面的小程序。这样每次ssh连接的时候就能看到当天的天气情况了。因为我在深圳所以用的深圳的例子来举,你可以自己去中国天气网找到自己城市的页面来爬。

    1、shell脚本:/bin/tianqi.sh

    #!/bin/bash
     
    weatherDateRoot=http://www.weather.com.cn/weather1d/101280601.shtml  #中国天气网深圳
    weatherDataFile=/root/weather.html
     
    wget $weatherDateRoot -O $weatherDataFile > /dev/null 2>&1  #下载页面
    
    result=$(cat $weatherDataFile | sed -n '/<input type="hidden" id="hidden_title" value/p')
    subresult1=${result##*value=\"}     #处理网页,获取数据
    subresult2=${subresult1%%\"*}       #这边涉及到字符串分割,不熟悉可以搜Shell截取字符串
    
    echo printf "\"${subresult2} 深圳\"" >>/etc/update-motd.d/00-header 
    #将数据写入欢迎页面文件,我这边还添了个深圳两个字
    
    

     2、crontab文件:

    00 08   * * *   root    cp /etc/update-motd.d/00-header_bk /etc/update-motd.d/00-header
    01 08   * * *   root    /bin/tianqi.sh

    什么意思呢,第一条执行的是将备份的00-header_bk文件覆盖00-header文件,因为每次执行完tianqi.sh,都会在最后追加当日天气状况,如果不用备份覆盖,那么就会保留有之前的天气。因此,第一次启用这个程序之前需要先备份一下00-header,命名为00-header_bk。第二条就是执行天气获取脚本了。

     

    好了,要讲的就这么多。

     

    六、使用中用到的一些细节(下面的有用到的看看,不用的就不用看了)

    1、crontab的运行目录是user的家目录

    调用python脚本时,经常要用到引入某个自定义的包的操作,要引入这个包,需要先将该包的路径添加进环境变量(这边需要对python有所了解)。

    例如:脚本路径是:/root/aaa/hello.py,你想在hello.py中引入/root/bbb/world.py,则你需要先在hello.py中将bbb包的路径添加进环境变量。

    a、你可以在hello.py中使用绝对路径添加环境变量:

    import sys
    sys.path.insert(0, '/root/bbb/')

    添加完环境变量,在hello.py中就可以直接引入world.py了

    import world

    如果没有添加环境变量,那么python就不知道去哪里引入world,就会报错。

     

    b、使用相对路径添加环境变量:

    下面重点来了:当使用相对路径时,引入的包的相对位置是相对于运行目录而言,而不是文件本身的相对位置!

    解释一下,运行目录不是你python脚本文件的路径,而是你执行python命令的路径。比如你在/root路径下运行下面这个脚本,那么你的运行目录就是/root。如果你在/root/ccc/ddd路径下执行这个命令,那么你的运行目录就是/root/ccc/ddd。

    python /root/aaa/hello.py

    如果要在/root/ccc/ddd下运行,/root/bbb对于/root/ccc/ddd的相对路径是:

    import sys
    sys.path.insert(0, '../../bbb')  
    #..代表父目录,所以..代表工作路径/root/ccc/ddd的父目录/root/ccc,
    #../..代表父目录的父目录/root,../../bbb代表/root/bbb

    添加完环境变量,在hello.py中也可以直接引入world.py了:

    import world

     

    重点!重点!下面这个问题!!

    使用crontab定时执行python脚本时的运行目录是什么?

    答:是你这个用户的家目录!,例如root用户那就是/root。爱玛呀,终于绕回来了!

     

    别问我为啥写了一大段跟本文主题好像关系不是很大的内容。我就是因为这个问题,引入包时老是报错,搞了好半天!写下来给后来人借鉴,防止再踩这个坑。

     

    展开全文
  • ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法 定时任务失效的问题: 如果发现/etc/crontab中的定时任务没执行,可以使用/etc/init.d/cron status来查看状态,可能会提示“Error: bad username; ...

    ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法

    定时任务失效的问题:

    如果发现/etc/crontab中的定时任务没执行,可以使用/etc/init.d/cron status来查看状态,可能会提示“Error: bad username; while reading /etc/crontab”等信息,这就是格式有错误,可能是空格和换行之类的错误。

    详细可参考 https://www.cnblogs.com/kunpengit/p/4045343.html

    ubuntu是cron,别的平台可能是crond
    可参考 https://www.cnblogs.com/lfri/p/10739602.html
    service cron status #查看服务状态
    service cron start #启动服务
    service cron stop #关闭服务
    service cron restart #重启服务
    service cron reload #重新载入配置

    如果想要每2分钟执行一次a.sh脚本的话,可以这么做:
    对于需要使用root权限的命令,使用第一种方法即可.
    方法1:

    su root	# 或者sudo su root
    vim /etc/crontab
    # 把下面这句话添加进去
    # m h dom mon dow user  command
    */2 *    * * *   root bash /home/zhz/a.sh
    

    方法2:

    su root	# 或者sudo su root
    crontab -e
    # m h  dom mon dow   command		#和第一种相比少了一个user
    */2 *    * * *   bash /home/zhz/a.sh
    
    既可以定时几点几分执行脚本,也可以定时每分钟或每小时执行脚本
    #  m    h     dom     mon      dow    user  command
    # 分钟 小时 DayOfMonth 月  DayOfWeek   用户    命令
    # .---------------- 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)
    
    28 6 * * *   root bash /home/user/a.sh       # 表示的是每天6:28分执行该脚本
    
    1 * * * *   root bash /home/user/a.sh       # 表示的是每小时的第一分钟执行该脚本
    
    */1 * * * * root bash /home/user/a.sh       # 表示的是每一分钟执行该脚本
    
    展开全文
  • -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) -r : 删除目前的时程表 -l : 列出目前的时程...

    1.编辑crontab文件

    crontab { -l | -r | -e }
    

    参数说明:
    -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
    -r : 删除目前的时程表
    -l : 列出目前的时程表

    root@ecs-bd21:~# crontab -e
    no crontab for root - using an empty one
    
    Select an editor.  To change later, run 'select-editor'.
      1. /bin/nano        <---- easiest
      2. /usr/bin/vim.basic
      3. /usr/bin/vim.tiny
      4. /bin/ed
    
    Choose 1-4 [1]: 
    

    第一次编辑时,会出现让我们选择的四种文本编辑器,输入数字回车,即可选择其中一种。我选择的是vim,所以我输入2并回车。出现下面信息

    # 
    # Each task to run has to be defined through a single line
    # indicating with different fields when the task will be run
    # and what command to run for the task
    # 
    # To define the time you can provide concrete values for
    # minute (m), hour (h), day of month (dom), month (mon),
    # and day of week (dow) or use '*' in these fields (for 'any').# 
    # Notice that tasks will be started based on the cron's system
    # daemon's notion of time and timezones.
    # 
    # Output of the crontab jobs (including errors) is sent through
    # email to the user the crontab file belongs to (unless redirected).
    # 
    # For example, you can run a backup of all your user accounts
    # at 5 a.m every week with:
    # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
    # 
    # For more information see the manual pages of crontab(5) and cron(8)
    # 
    # m h  dom mon dow   command
    ~
    ~
    ~
    "/tmp/crontab.VAJWvb/crontab" 22L, 888C                            1,1           All
    

    2.输入指令

    输入指令:

    0 0 * * * bash /root/test.sh
    

    这条指令的意思是:每天在00:00时都执行bash /root/test.sh,运行test.sh脚本文件。

    指令格式如下:

    f1 f2 f3 f4 f5 program
    
    • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
    • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
    • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
    • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
    • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
    *    *    *    *    *   program
    -    -    -    -    -      -
    |    |    |    |    |      |
    |    |    |    |    |      +----- 要执行的程序
    |    |    |    |    +------------ 星期中星期几 (0 - 6) (星期天 为0)
    |    |    |    +----------------- 月份 (1 - 12) 
    |    |    +---------------------- 一个月中的第几天 (1 - 31)
    |    +--------------------------- 小时 (0 - 23)
    +-------------------------------- 分钟 (0 - 59)
    

    3.重启cron

    service cron restart
    

    就这样,每天在00:00时都执行bash /root/test.sh,运行test.sh脚本文件完成!!!!

    展开全文
  • crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不...

    如果发现您的系统里没有这个命令,请安装下面两个软件包.

    vixie-cron

    crontabs

    crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 

    常用参数:

    crontab   -l   //查看当前用户下的cron任务

    crontab -e  //编辑当前用户的定时任务

    crontab -u  linuxso  -e  //编辑用户linuxso的定时任务

    具体用法和格式:

     

    基本格式 :
    *  *  *  *  *  command
    分 时 日 月 周 命令

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

     

    例子

    crontab -e

    添加这一句

    */1 * * * * /home/xiao/projects/baidu/sbin/update.sh

    表示每隔一分钟执行一次update.sh脚本

    然后重启:/etc/init.d/cron restart

    程序员喜欢去的地方:http://www.lailu8.com

    转载于:https://www.cnblogs.com/descusr/p/3547868.html

    展开全文
  • 主要给大家介绍了关于ubuntu定时执行python脚本的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ubuntu具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • ubuntu定时执行python脚本

    千次阅读 2017-11-09 15:39:47
     上面这行的作用是说明使用那个解释器来执行该文件,如果不知道python解释器在哪,可以使用命令which python来查看  2 给该文件添加可执行的权限  chmod +x test.py   注意:在脚本文件中如果...
  • 本文将介绍ubuntu系统下如何定时执行shell脚本、python脚本ubuntu系统有一个定时任务的管理器crontab,我们只需要编辑定时任务,然后重启定时任务服务就好了。 二、工具:crontab a、编辑定时任务: ...
  • crontab的时间表达式 基本格式 : ...1、每分钟执行一次 * * * * * 2、每隔一小时执行一次 00 * * * * 3、每小时的15和30分各执行一次 15,45 * * * * (,表示并列) 4、在每天上午 8...
  • ubuntu定时执行任务

    万次阅读 2017-11-23 22:02:58
    前几天女神给我发了条消息,“为什么我...ubuntu定时执行脚本cron是一个Linux下的后台进程,用来定期的执行一些任务。因为我用的是Ubuntu,所以这篇文章中的所有命令也只能保证在Ubuntu下有效。查看cron是否运行ps -
  • ①开机自动运行: 先写了测试脚本,在/usr下,trans.sh gedit /etc/init.d/rc.local 在最后加上脚本的地址就OK了 ②定时运行脚本: ...cron,是一个Linux定时执行工具,可以在无需人工干预的情况下运
  • 文LINUX 定时脚本 2016年10月07日编辑  一、Crontab命令解析  crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务...
  • ①开机自动运行: 先写了测试脚本,在/usr下,trans.sh gedit /etc/init.d/rc.local 在最后加上脚本的地址就OK了 ②定时运行脚本: ...cron,是一个Linux定时执行工具,可以在无需人工干预的情况下运
  • 首先大家可以先参考一下这个...(1)在编辑crontab的时候,不能有空行,否则运行命令或者脚本不成功 (2)其次如果你运行的是 crontab -e 默认打开的是当前用户的crontab文件,而加sudo之后,运行的是root用户的 ...
  • Ubuntu crontab定时执行shell脚本

    千次阅读 2018-10-31 11:21:00
    Ubuntu crontab定时执行shell脚本 最近打算让服务器定时的编译项目源码,及时产生二进制文件。写好了编译脚本后,就需要用到crontab设置定时任务。 Crontab与Cron 使用crontab命令来配置cron进程。cron进程...
  • Ubuntu服务器定时执行Python脚本一、使用xshell登陆服务器并传输文件二、使用crontab定时执行Python脚本 一、使用xshell登陆服务器并传输文件 使用xshell登陆Ubuntu服务器 输入rz命令,看是否已经安装了lrzsz,如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,591
精华内容 2,636
关键字:

ubuntu定时执行脚本