linux注释crontab文件及crontab执行sh的坑记录

目录
  • linux注释crontab文件及crontab执行sh的坑
    • 遇坑1
    • 坑2
  • crontab快速注释及撤销注释
    • 批量快速注释及撤销注释
  • 总结

linux注释crontab文件及crontab执行sh的坑

原来,在Linux下写了很多crontab,来定时执行某些任务,

现在有以下需求:

需求:是要注释某些crontab任务,

方法:只要在所要取消的crontab任务前,加'#'即可。

e.g.

5 4 * * sun echo "run at 5 after 4 every sunday"  

注释:

#5 4 * * sun echo "run at 5 after 4 every sunday"  

就这么简单。

遇坑1

看下面例子

最近写了个脚本setdatetime.sh,手动执行的好好的,但是到了crontab中却无法定时执行,如下:

*/1 * * * * /data/test/setdatetime.sh

乍一看,没什么不对啊,什么情况!

后来在其他地方看到,必须要加sh才可以,如下:

*/1 * * * * sh /data/test_tzb/setdatetime.sh

如此,正常执行。

少一个sh,折腾大半天。。。

坑2

嗨,又遇1坑,老半天又没了,写了一脚本,从baidu获取时间,然后date -s。

#!/bin/bash
sudo date -s "$(date --date="$(wget -S  "http://www.baidu.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' | head -1l | awk '{print $1, $3, $2,  $5 ,"GMT", $4 }' | sed 's/,//')")"

用sh执行,一点问题都没有。

但是放在crontab,又不行了,任务倒是执行,但是结果不对啊。

Fri Jul  1 00:00:00 CST 2021

我明明在另一台服务器上,用crontab执行结果正确了啊,到这台机器上,怎么又不正确了,气人。

无奈执行,我从另一台机器,直接把脚本copy过来,crontab执行以下脚本就正确了。

#!/bin/bash
export LANG=en_US.UTF-8
.  /etc/profile
sudo date -s "$(date --date="$(wget -S  "http://www.baidu.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' | head -1l | awk '{print $1, $3, $2,  $5 ,"GMT", $4 }' | sed 's/,//')")"

看出不同了么?

.  /etc/profile 要加上。

crontab快速注释及撤销注释

我们知道一般情况下,编写crontab需要使用vi编辑器进行编辑。通过vi编辑器,可以很容易的在每一行的前面加上注释符号'#',也很容易的使用vi编辑器,将每一行的已经注释的'#'去掉。

批量快速注释及撤销注释

先使用crontab -e进行对crontab的编辑操作

$ crontab -e

然后使用vi的如下编辑命令

:%s/^/#/

就可以将定时执行的任务前面都加上一个'#',进行注释掉。

同样等,某些操作完成后,也是,先进行对crontab的编辑

$ crontab -e

使用如下编辑命令

:%s/^#//

就可以讲上次所有注释的定时任务,全部撤销。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Linux定时任务Crontab的介绍与使用

    目录 一.cron介绍 二.crontab的使用 三.常见定时任务设置 四.实例操作 1.文件实时写入 2. 定期清理对应目录下的文件 五.常见错误 一.cron介绍 linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题. 1. var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名 2. _/etc/crontab 这个文件负责调度各种管理和维护任务. 3. /etc/cron.d/

  • Linux Crontab Shell脚本实现秒级定时任务的方法

    一.编写Shell脚本crontab.sh #!/bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/www/php/crontab/crontab.php') sleep $step done exit 0 二.crontab -e 输入以下语句,然后:wq 保存退出 # m h dom mon dow command * * * * * /home/www/php/crontab

  • Linux系统crontab定时运行shell脚本失败的问题及解决

    目录 1.最近开始学习Linux系统使用 2.脚本倒是很简单 第一种 第二种 最后我找到两解决办法 总结 1.最近开始学习Linux系统使用 经过一段时间学习终于学到了shell脚本,因为学的东西比较零散,突发奇想我学过了crontab定时任务,今天也学了shell脚本的编写,为何不组合一下,既能提升学习深度,又能锻炼自学能力,何乐而不为呢?但是没想到,我已步入了Linux的坑. 2.脚本倒是很简单 因为刚学习,写的命令都很简单,请各位大神不要笑我,我写这篇博客目的一是为了记录踩过的坑,加深映像

  • Linux crontab定时执行Shell脚本需要执行特定的命令时解决思路

    由于一些不可抗拒的原因,项目部署后需要定时检测项目是否正常运行,否则将执行重启命令. 在具体实施过程中发现,定时器执行无误,但是重启命令无法正常启动.多方查找发现Shell脚本中的Java命令需要引入环境变量方可正常执行.因此做了一下修改,脚本如下(仅供参考): 1.crontab执行配置 * * * * * cd /项目目录 && ./auto_start.sh >> /log/auto.out 2.Shell脚本 #!/bin/bash #导入环境变量 export LAN

  • linux注释crontab文件及crontab执行sh的坑记录

    目录 linux注释crontab文件及crontab执行sh的坑 遇坑1 坑2 crontab快速注释及撤销注释 批量快速注释及撤销注释 总结 linux注释crontab文件及crontab执行sh的坑 原来,在Linux下写了很多crontab,来定时执行某些任务, 现在有以下需求: 需求:是要注释某些crontab任务, 方法:只要在所要取消的crontab任务前,加'#'即可. e.g. 5 4 * * sun echo "run at 5 after 4 every sunday&q

  • 踩坑记录之crontab每10秒执行一次问题

    目录 crontab每10秒执行一次问题 linux crontab使用技巧 crontab命令格式 特殊字段说明 每天晚上10点运行rumenz.sh脚本 每月的1,3,7的早上8.30运行rumenz.sh 每周六,日的的凌晨2点执行rumenz.sh 每天的的18点到23点每30分执行rumenz.sh 每天凌晨2点访问一个网址 crontab每10秒执行一次rumenz.sh 每 90 分钟运行一次rumenz.sh 每90秒执行一次rumenz.sh 总结 crontab每10秒执行一

  • linux定时任务crontab 实现每秒执行一次的方法

    linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. Cron 各项的描述 以下是 crontab 文件的格式: {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} o minute: 区间为 0 – 59 o hour: 区间为0 – 23 o day-of-month: 区间为0 – 31 o month: 区间为1 – 12.

  • linux crontab 实现每秒执行的实例

    linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 创建一个php做执行动作,非常简单,就是把当前时间写入log. <?php file_put_contents('/home/fdipzone/php/crontab/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND); ?> crontab -e 输入以下语句,然后 :wq 保存退出.

  • Linux执行.sh文件时提示No such file or directory该怎么办(三种解决办法)

    先给大家看下问题描述,下图是我在运行时出现错误截图: 解决方法 分析原因,可能因为我平台迁移碰到权限问题我们来进行权限转换 1)在Windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行.转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可. 2)方法 用vim打开该sh文件,输入: [plain] :set ff 回车,显示fileformat=dos,重新设置下文件格式:

  • Linux下使用shell脚本自动执行脚本文件

    以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 文件内容: #将tomcat中的应用wfjb_web 复制到 /usr/local/wfjb_web_back/tomcat_back/目录下 并按照日期作为文件名称 cp -af /usr/local/apache-tomcat-7.0.73/webapps/wfjb_web /usr/local/wfjb_web_back

  • Linux定时任务的设置及 crontab 配置指南

    为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 保存文件并并退出 */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh */2 * * * * 通过这段字段可以设定什么时候执行脚本 /bin/sh /home/admin/jiaoben/buy/dele

  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用mget结合正则表达式下载文件 #获取昨天日期,为后面下载使用 T=`date -d yesterday +%Y%m%d` 4.连接FTP服务器,到指定路径下下载文件 ftp -n <<EOF open $ip user $u $p binary cd /hour #远程服务器文件目录 lcd /h

  • .net 程序通过 crontab 无法启动手动执行脚本启动的方法

    目录 一.问题描述 二.将 .net 程序写成服务 三.通过 crontab 执行脚本无法启动原因 一.问题描述 .net 网关程序需要设置定时重启,按照日常操作先把正在运行的 PID kill 掉后,再执行启动服务. 把脚本放到 crontab 计划任务上,可以把服务 PID kill 掉,但无法启动服务,直接手动运行脚本是可以成功启动的. .net 服务重启脚本test1.sh 如下: [root@localhost ~]# cat test1.sh #!/bin/bash ID=`ps -

  • crontab每10秒执行一次的实现方法

    实例如下: vim /var/spool/cron/root * * * * * sleep 10; /usr/bin/curl http://localhost/index.php * * * * * sleep 20; /usr/bin/curl http://localhost/index.php * * * * * sleep 30; /usr/bin/curl http://localhost/index.php * * * * * sleep 40; /usr/bin/curl ht

随机推荐