crontab中反引号和$()无效的解决

问题描述

1.增加了一条crontab,删除本月中2天以前的日志

10 02  * * * /bin/find /data/logs/php/$(date  +%Y%m)/ -mtime +2 | xargs rm -rf

 

可是看上面的crontab总是运行失败,然后查/var/log/cron 日志报

Jul 22 02:02:01  localhost CROND[7699]: (root) CMD (/bin/find /data/logs/php/`date +")

显示$(date  +%Y%m) 这个有问题,在终端上运行是没问题的,后来搜索baidu

问题原因:

在crontab中%字符被认为是换行,所以你的命令中有%时,在crontab中要加\转义
比如

30 * * * * date '+%D' >datefile  

是错误的

正确的应该是

30 * * * * date '+\%D' >datefile

 

所以上面正确的crontab是:

10 02  * * * /bin/find /data/logs/php/$(date  +\%Y\%m)/ -mtime +2 | xargs rm -rf

 

扩展

造成crontab无法正常运行的常见原因

 

问题及对应解决方法
【1】脚本的执行权限问题
写好脚本后,要赋予脚本执行权限,避免权限问题

<1>赋予脚本执行权限
chmod +x test1.sh

 

【2】脚本在crontab里的路径问题
<1>查看crontab中,你的脚本的位置是否有错误

注意是否字符错误

查看计划任务:
crontab -l

写入计划任务:
crontab -e

<2>如无错误,查看路径是否错误

在计划任务里要使用全路径

例如:

*/5 * * * * /App/test/test1.sh

<3>修改有问题的字符或路径即可

【3】计划任务的时间设置问题
<1>查看计划任务的时间是否设置的有问题

如果crontab设置的时间错误,会导致无法按原计划时间进行任务

计划任务的5个*号依次代表的含义:
分 时 日 月 周

 

<2>如有问题,修改为正确的时间即可

【4】脚本的头部问题
<1>查看一下你的脚本的头部,查看你为脚本设置的解释器

 

<2>查看当前系统是否包含此解释器或路径是否与脚本头部相同

可以用whereis 查看,例如
whereis sh

<3>如果是脚本的解释器的路径有误,将脚本的头部的路径修改为当前系统的路径即可

【5】脚本的执行命令问题
在Linux系统中,使用crontab执行脚本,由于crontab没有环境变量,它是找不到你使用的命令的,需要使用命令的全路径,才可使用命令

例如:使用python

0 1 * * * /usr/bin/python /App/test/test1.py

【6】环境变量的问题
这个是最常见的问题。
crontab执行计划任务时,它并不会从用户的profile文件中读取环境变量,所以会导致命令执行失败。

<1>让脚本读取环境变量

在你的脚本的开头中添加如下几行,也可读取其他变量文件

#!/bin/bash

source /etc/profile
source ~/.bash_profile

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7803

(0)
郭靖的头像郭靖
上一篇 2023年3月28日 下午5:22
下一篇 2023年3月29日 下午4:33

相关推荐

  • Linux系统之nethogs命令

    1.简介 NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是依照进程进行带宽分组。 NetHogs不需要依赖载入某个特殊的内核模块。 假如发生了网络堵塞你能够使用NetHogs立即看到哪个PID形成的这种情况。 这样就很容易找出哪个程序突然长时间占用你的带宽。 NetHogs是一个类似于Linux的top指令…

    2023年9月19日
    1.2K00
  • Centos如何通过Nexus代理yum源

    一 背景 公司的某些服务器不允许连接外网,造成这些服务器需要安装软件时非常不方便,此文章则是介绍如何通过Nexus3.x代理yum源,做到通过yum install来安装软件。 二 创建yum代理仓库 三 服务器上增加yum源 四 Yum安装软件

    2023年5月15日
    1.8K00
  • Docker搭建phpipam管理平台

    phpipam功能很多,但最直接的都是用来做IP地址管理工具。在IT管理中,IP地址的分配和使用是比较重要的一环,尤其是对于全网中子网地址的分配,以及个别Server地址分配,静态地址使用记录等。 这里按照参考通过docker方式,下载镜像并运行容器,可以很容易搭建并应用。phpipam采用mysql数据库来储存数据,对应容器来说,在运行时可以将其数据目录映…

    2022年12月1日
    1.9K00
  • Nginx负载均衡介绍

    Nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提高系统的可伸缩性与可靠性 下图为负载均衡示例图,当用户请求发送后,首先发送到负载均衡服务器,而后由负载均衡服务器…

    2022年11月16日
    1.4K00
  • 网卡限速工具之WonderShaper

    1.什么是WonderShaper WonderShaper是用来对特定网卡进行快速限速的工具,它实际是对Linux的tc命令进行封装后的shell脚本,所以使用成本比tc更低,更容易上手,以下配合测速工具speedtest一起使用 2.如何安装WonderShaper 3.WonderShaper使用帮助 4.WonderShaper使用示例 4.1查看网…

    2023年10月7日
    1.6K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信