crontab执行失败的原因及一些解决办法

 更新时间:2024年04月03日 08:37:17   作者:cifangyiquan  
crontab 是Linux和Unix-like系统中用于设置周期性被执行的任务的工具,cron 是一个守护进程,可以定期检查 crontab 文件,并执行其中定义的命令,本文给大家介绍了crontab执行失败的原因及一些解决办法,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

crontab介绍

crontab 是Linux和Unix-like系统中用于设置周期性被执行的任务的工具。cron 是一个守护进程,可以定期检查 crontab 文件,并执行其中定义的命令。crontab 文件包含了指令,这些指令告诉 cron 何时运行哪些命令。
crontab 的基本组成如下:

  • • 分钟(0 - 59)
  • • 小时(0 - 23)
  • • 日期(1 - 31)
  • • 月份(1 - 12)
  • • 星期几(0 - 7,其中0和7都代表星期天)
    一个典型的 crontab 任务看起来像这样:
*/5 * * * * /bin/echo 'Hello, World!' >> /tmp/cron_output.txt

这个例子中的任务每5分钟执行一次,运行 echo 命令输出 "Hello, World!",并将其追加到 /tmp/cron_output.txt 文件中。
用户可以通过 crontab -e 命令编辑自己的 crontab 文件。初次使用时会提示选择编辑器,如 vinano 等。保存并退出编辑器后,cron 会自动加载更改。
crontab 还支持使用特定的时间表来执行任务,例如:

  • 0 0 * * * 每天午夜执行
  • 0 9 * * 1 每周一的早上9点执行
  • 0 22 * * Fri 每周五晚上10点执行
    此外,crontab 还允许使用特殊字符来表示时间间隔,如:
  • * 表示任意值
  • , 表示列出枚举值
  • - 表示范围
  • / 表示时间间隔
    例如,*/2 * * * * 表示每两分钟执行一次任务。
    使用 crontab 需要注意权限和安全性问题,确保仅运行必要的任务,并避免运行有潜在风险的命令。同时,crontab 的输出默认会通过邮件发送给用户,因此建议将输出重定向到文件中,以免邮箱被大量日志信息填满。

在ubuntu执行时遇到的一些问题

1. 日志在哪[1]

linux/mac 下默认日志会在syslog里面。路径:

路径:/var/log/syslog
备份在/var/log/syslog.*

可以通过查看

grep CRON /var/log/syslog

2. source: not found[2]

crontab没有执行成功。一般我们会使用source ~/.bashrc来引入环境变量。但发现执行错误:

source: not found

这是由于在ubuntu下,默认的sh不是bash而是dash。

可以使用下面的命令验证:

$ ls -l /bin/sh

如果输出是:

/bin/sh -> dash

说明使用的sh是dash。

接下来就是将默认的shell换成bash

$ sudo dpkg-reconfigure dash

选择no就可以了。

可以再次使用验证

$ ls -l /bin/sh
/bin/sh -> bash

3. XXX: command not found[3]

python: command not found
scrapy: command not found
...

我们已经成功source ~/.bashrc,但还是发现明明在.bashrc中配置了PATH的命令却还是提示找不到。

这时候可以通过输入完整命令路径解决,如:

/home/cifangyiquan/miniconda3/bin/python main.py

但这不是问题的根本原因

这个是由于默认的~/.bashrc里,如果不是交互式,则不进行后面的操作,导致一般后面的配置没有生效。需要修改一下.bashrc文件:

  1 # ~/.bashrc: executed by bash(1) for non-login shells.
  2 # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
  3 # for examples
  4
  5 # If not running interactively, don't do anything
  6 case $- in
  7     *i*) ;;
  8       *) return;;
  9 esac
 10

修改方法也很简单,注释调第8行的return即可。

  8 #      *) return;;

到此这篇关于crontab执行失败的原因及一些解决办法的文章就介绍到这了,更多相关crontab执行失败内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 一个测试下载速度的shell脚本

    一个测试下载速度的shell脚本

    这篇文章主要介绍了一个测试下载速度的shell脚本,需要的朋友可以参考下
    2014-03-03
  • Linux中的grep?-v、-e、-E用法小结

    Linux中的grep?-v、-e、-E用法小结

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,这篇文章主要介绍了Linux之grep?-v、-e、-E用法总结,需要的朋友可以参考下
    2022-11-11
  • Shell 命令执行顺序分析[图]

    Shell 命令执行顺序分析[图]

    Shell 从标准输入或脚本中读取的每一行称为管道(pipeline);它包含了一个或多个命令(command),这些命令被一个或多个管道字符(|)隔开
    2013-01-01
  • 浅谈Shell中的函数

    浅谈Shell中的函数

    这篇文章主要介绍了Shell中函数的相关资料,帮助大家更好的理解和使用shell,感兴趣的朋友可以了解下
    2020-09-09
  • Linux Shell的一些使用小技巧收集

    Linux Shell的一些使用小技巧收集

    这篇文章主要介绍了Linux Shell的一些使用小技巧收集,本文收集了几十个小技巧,非常实用,需要的朋友可以参考下
    2014-12-12
  • Linux中修改文件名的多种方法总结

    Linux中修改文件名的多种方法总结

    在Linux系统中,通过命令行界面可以方便地修改文件名,本篇博客将介绍几种常见的方法,包括mv命令、rename命令、find和mv命令的组合、sed命令以及使用bash脚本,这些方法可以根据实际需求进行选择,提供了灵活性和多样性,需要的朋友可以参考下
    2024-01-01
  • @echo?off的作用详解

    @echo?off的作用详解

    本文主要介绍了@echo?off的作用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 深入了解Linux的文件权限

    深入了解Linux的文件权限

    Shell是操作系统外壳程序的统称,Windos中的图形化界面、Linux中的命令行外壳都是外壳程序。CentOS中的外壳程序被称为bash。本文主要是和大家聊聊Linux中的文件权限,感兴趣的可以了解一下
    2022-10-10
  • Shell实现猜数字游戏

    Shell实现猜数字游戏

    这篇文章主要为大家详细介绍了Shell实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • shell 读取变量脚本编程解析

    shell 读取变量脚本编程解析

    这篇文章主要为大家介绍了shell 读取变量脚本编程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论

?


http://www.vxiaotou.com