首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ansible cron作业不转义百分号`%`

基础概念

Ansible 是一种自动化工具,用于配置管理、应用部署、任务自动化等。它使用 YAML 格式的文件来定义任务和配置。Ansible 的 cron 作业模块允许你在目标主机上管理 cron 作业。

问题描述

在使用 Ansible 的 cron 作业模块时,百分号(%)会被解释为换行符,而不是普通字符。这会导致 cron 作业无法正确执行。

原因

Ansible 默认会对百分号进行转义,以防止 shell 解释错误。

解决方法

为了避免百分号被转义,可以使用以下几种方法:

方法一:使用双引号

将百分号放在双引号中,这样 Ansible 就不会对其进行转义。

代码语言:txt
复制
- name: Add a cron job
  cron:
    name: "My Cron Job"
    job: "/path/to/script.sh '%Y-%m-%d %H:%M:%S'"
    user: root
    state: present

方法二:使用 raw 参数

使用 raw 参数可以避免 Ansible 对百分号进行转义。

代码语言:txt
复制
- name: Add a cron job
  cron:
    name: "My Cron Job"
    job: "/path/to/script.sh %Y-%m-%d %H:%M:%S"
    user: root
    state: present
    raw: true

方法三:使用 cron_file 参数

将 cron 作业写入特定的文件中,这样可以避免百分号被转义。

代码语言:txt
复制
- name: Add a cron job to a specific file
  cron:
    name: "My Cron Job"
    job: "/path/to/script.sh %Y-%m-%d %H:%M:%S"
    user: root
    state: present
    cron_file: my_cron_job

示例代码

以下是一个完整的 Ansible playbook 示例,展示了如何使用双引号来避免百分号被转义:

代码语言:txt
复制
---
- name: Manage Cron Jobs
  hosts: all
  become: true
  tasks:
    - name: Add a cron job with escaped percentage
      cron:
        name: "My Cron Job"
        job: "/path/to/script.sh '%Y-%m-%d %H:%M:%S'"
        user: root
        state: present

参考链接

通过以上方法,你可以成功地在 Ansible 中添加 cron 作业,并避免百分号被错误转义的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在Ubuntu 14.04上使用Ansible部署高级PHP应用程序

这意味着如果我们的应用程序利用此功能,我们只需要添加一个cron任务。 Ansible有一个cron包含许多不同选项的模块,可直接转换为您可以通过cron配置的不同选项: job:要执行的命令。...Queue: NO Cron: YES 这意味着cron正在后台正常工作。作为示例应用程序的一部分,有一个cron作业每分钟运行一次,更新数据库中的状态条目,以便应用程序知道它正在运行。...队列工作者与cron作业类似,因为他们在后台运行任务。不同之处在于应用程序通过用户执行的操作或通过cron作业调度的任务将作业推送到队列中。...一分钟后,它将更新为如下所示: Queue: YES Cron: YES 这意味着队列工作者正在后台正常工作。我们在上一步中启动的cron作业作业推送到队列中。...此作业在运行时更新数据库以显示其正在运行。 我们现在有一个工作示例Laravel应用程序,其中包括正常运行的cron作业和队列工作程序。

10.7K60
  • Linux定时任务实例

    一般都将所有的操作命令写成脚本来进行操作 3.测试脚本,确保脚本执行无误 4.配置定时任务,制作最后的定时任务 0x02 实例 备份/etc/hosts,/etc/rc.local,/var/spool/cron.../crontabs/root文件,以压缩包形式备份到/root下,要求每天备份一次,每天凌晨3点15分执行 这里插一句/var/spool/cron/crontabs/root,这个里面储存存放了root...计划任务的内容 我们先在命令行进行执行 先说一个建议的做法 ?...那如果定时任务出错了呢,可以去定时任务的日志中来进行查看 但是需要注意一下,Debian默认没有开启cron的日志功能,需要到/etc/rsyslog.conf中去掉注释 ? 然后重启log服务 ?...容易出故障的情况有以下几种,在设置的时候还是注意一下 1.如果在设置定时任务的时候,结尾未加&>/dev/null可能会产生大量文件,占用大量inode 2.如果直接在命令行执行的话date +%F将会出现问题,百分号是必须要进行转义

    72720

    Ansible 部署概述(二)

    目标: • 学习完本节后,学员应该能:介绍 Ansible 部署和编配方法 Ansible 部署: • Ansible 可简化服务器上软件的配置 • 当 Ansible 访问受管主机时,它可以探查运行的...接管并进一步搭建 Ansible 编配方法: • Ansible 常被用于完成应用服务器调配。...启动系统和应用监控 Ansible 连接插件: • 连接插件使得 Ansible 能够与受管主机和云提供商通信 • 对于较新版本的 Ansible,首选连接插件是 SSH • 当控制节点上的 OpenSSH...它可用于本地管理 Ansible 控制节点,而 必使用 SSH。在编写与云服务或某些其他 API 接口的 Ansible playbook时,通常会使用这一连接方式。...当 Ansiblecron 作业本地调用时,也可以使用它 • paramiko Ansible 连接插件用于 RHEL 6 计算机。

    77110

    十一.Linux计划任务

    -l:列出指定队列中等待运行的作业;相当于atq(若计划被执行,则任务结束,不会再显示在列表) ? -d:删除指定的作业;相当于atrm ?...-c: 查看具体作业任务 (相当于用cat查看原文件) -f:/path/from/somefile:从指定的文件中读取任务 -m:当任务被完成之后,将给用户发送邮件,即使没有标准输出 注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户...2.4 anacron系统 运行计算机关机时cron运行的任务,CentOS6以后的版本取消了anacron服务,由crond服务管理 对笔记本电脑、台式机、工作站、偶尔要关机的服务器及其它不一直开机的系统很重要对很有用...&> /dev/null中 (根用户能够修改其它用户的作业)即:运行结果的标准输出和错误以邮件通知给相关用户 COMMAND > /dev/null COMMAND &> /dev/null 对于cron...任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义 声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/%

    2.6K20

    100个 Linux 命令(9)-计划任务

    存在于多处,包括系统定时任务文件/etc/crontab 和 /etc/cron.d/*,还有独属于各用户的任务文件/var/spool/cron/USERNAME。.../*文件 -u 操作指定用户的定时任务 如: crondtab -e #编辑当前用户位于 /var/spool/cron 下的 crond file * * * * * /bin/echo "the...first cron entry" >> /tmp/crond.txt 这将会每分钟执行一次echo命令,将内容追加到/tmp/crond.txt文件中。...命令段(即第6段)中,不能随意出现百分号"%",因为它表示换行的特殊意义,且第一个%后的所有字符串将当作命令的标准输入。在定时任务条目中若以时间定义文件名时,应当将%使用反斜杠转义。...例如"* */2 * * *",它表示每隔两小时后的每一分钟都执行任务,也就是凌晨0点的每分钟执行任务,凌晨1点执行任务,凌晨2点的每分钟执行任务,凌晨4点的每分钟执行任务,依此类推。

    1.3K41

    自动化工具-ansible服务部署与使用

    command模块 常用选项: creates:判断,当该文件存在时,则该命令执行 free_form:需要执行的Linux指令 chdir:在执行命令之前,先切换到该指定的目录 removes:判断...,当该文件不存在时,则该选项执行 executable:切换shell来执行命令,该执行路径必须是一个绝对路径 [root@localhost ansible]# ansible web -a 'chdir...cron_file:如果指定该选项,则用该文件替换远程主机上cron.d目录下的用户的任务计划 day:日(1-31,*,*/2,…) hour:小时(0-23,*,*/2,…) minute:分钟(...web -s cron -a "minute=0 hour=3 job='/bin/sh /mnt/shell/hostname.sh' name=check hostname" 5.5 yum模块...使用yum包管理器来管理软件包 选项: conf_file:yum的配置文件 disable_gpg_check:关闭gpg_check disablerepo:启用某个源 enablerepo:启用某个源

    51530

    Linux中定时任务(上)

    (3).crontab file存在于多处,包括系统定时任务文件/etc/crontab和/etc/cron.d/*,还有独属于各用户的任务文件/var/spool/cron/USERNAME。...u:操作指定用户的定时任务 执行crontab -e命令编辑当前用户的crontab file,例如当前为root用户,则编辑的是/var/spool/cron/root文件。...(8).命令段(即第6段)中,不能随意出现百分号”%”,因为它表示换行的特殊意义,且第一个%后的所有字符串将当作命令的标准输入。..." 所以,在定时任务条目中若以时间定义文件名时,应当将%使用反斜杠转义。...例如” */2 * * “,它表示每隔两小时后的每一分钟都执行任务,也就是凌晨0点的每分钟执行任务,凌晨1点执行任务,凌晨2点的每分钟执行任务,凌晨4点的每分钟执行任务,依此类推。

    69020

    Ansible 详细用法说明(一)

    -a "ls –al /tmp/resolv.conf" – 相关选项如下: creates:一个文件名,当该文件存在,则该命令执行 free_form:要执行的linux指令 chdir:在执行指令之前...,先切换到该目录 removes:一个文件名,当该文件不存在,则该选项执行 executable:切换shell来执行指令,该执行路径必须是一个绝对路径 shell:在远程主机上调用shell解释器运行命令...: 管理cron计划任务 ============================== ?...ansible all -m cron -a "name='sync time' state=absent" 表示删除此任务 - a "": 设置管理节点生成定时任务 action: cron backup...= # 如果设置,创建一个crontab备份 cron_file= #如果指定, 使用这个文件cron.d,而不是单个用户crontab day= # 日应该运行的工作

    1.3K50
    领券