Rumah > Operasi dan penyelenggaraan > operasi dan penyelenggaraan linux > Bagaimana untuk menyelesaikan masalah mengulas fail crontab dan crontab melaksanakan sh dalam Linux

Bagaimana untuk menyelesaikan masalah mengulas fail crontab dan crontab melaksanakan sh dalam Linux

WBOY
Lepaskan: 2023-05-15 21:58:04
ke hadapan
1990 orang telah melayarinya

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

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

    现在有以下需求:

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

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

    e.g.

    5 4 * * sun echo "run at 5 after 4 every sunday"
    Salin selepas log masuk

    注释:

    #5 4 * * sun echo "run at 5 after 4 every sunday"
    Salin selepas log masuk

    就这么简单。

    遇坑1

    看下面例子

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

    */1 * * * * /data/test/setdatetime.sh
    Salin selepas log masuk

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

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

    */1 * * * * sh /data/test_tzb/setdatetime.sh
    Salin selepas log masuk

    如此,正常执行。

    少一个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/,//')")"
    Salin selepas log masuk

    用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/,//')")"
    Salin selepas log masuk

    看出不同了么?

    . /etc/profile 要加上。

    crontab快速注释及撤销注释

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

    批量快速注释及撤销注释

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

    $ crontab -e
    Salin selepas log masuk
    Salin selepas log masuk

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

    :%s/^/#/
    Salin selepas log masuk

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

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

    $ crontab -e
    Salin selepas log masuk
    Salin selepas log masuk

    使用如下编辑命令

    :%s/^#//
    Salin selepas log masuk

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

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah mengulas fail crontab dan crontab melaksanakan sh dalam Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan