标签: cron

Cron 任意工作日范围

在 crontab 我可以设置这个语法 5 4 * * 3-5

转换为每个星期三、星期四和星期五的 4:05,效果很好,但是当使用5-3which(预期)转换为星期五、星期六......星期三时,它说错误的语法,我注意到它应该是有序的,但是什么如果我需要其他方式?

我用来测试 cron 语法。

cron

1
推荐指数
1
解决办法
354
查看次数

“/bin/sh -c nice run-parts --report /etc/cron.daily”是什么意思?

今天,当我登录并检查ps输出时,我注意到在root. 我在这里搜索了相关的行:

root      1126  0.0  0.0   2616   424 ?        Ss   Apr16   0:06 cron
root      6445  0.0  0.0   2400   868 ?        Ss   07:30   0:00 anacron -s
root      6566  0.0  0.0   2244   276 ?        S    07:35   0:00 /bin/sh -c nice run-parts --report /etc/cron.daily
root      6567  0.0  0.0   2152   524 ?        SN   07:35   0:00 run-parts --report /etc/cron.daily
root      6574  0.0  0.0   2244   556 ?        SN   07:35   0:00 /bin/sh /etc/cron.daily/apt
root      6615  0.0  0.0   2160   272 ?        SN   07:35   0:00 …
Run Code Online (Sandbox Code Playgroud)

shell security cron sleep nice

1
推荐指数
1
解决办法
1904
查看次数

评估 cron 中的数学表达式

我想根据一周中某一天的奇偶校验命名文件。在终端中,以下工作:$(($(date +\%u)%2))

但这在 cron 中不起作用(我怀疑对数学表达式的评估不起作用)。

我怎样才能让它在 cron 中工作?

bash cron

1
推荐指数
1
解决办法
821
查看次数

访问 URL 时触发操作

假设我向某人发送了一封电子邮件,其中包含指向我网站的链接,我真的希望他会访问它(手指交叉样式):

http://www.example.com/?utm_source=email392
Run Code Online (Sandbox Code Playgroud)

或者

http://www.example.com/somefile.pdf?utm_source=email392
Run Code Online (Sandbox Code Playgroud)

如何通过定期检查使 Linux 在访问此 URL 时触发操作(例如向自己发送自动电子邮件)/var/log/apache2/other_vhosts_access.log

我无法在 PHP 级别执行此操作,因为我需要为各种来源/网站执行此操作(其中一些使用 PHP,有些不使用并且只是指向要下载的文件的链接等;即使对于使用 PHP 的网站) ,我不想修改每一个index.php从那里做,这就是为什么我更喜欢 Apache 日志解析方法)

grep cron logs email apache-httpd

1
推荐指数
1
解决办法
363
查看次数

删除文件的shell脚本

我试图删除超过六天的文件,然后记录被删除的文件。
迄今为止。

在一个sh文件中,我得到了关注;

find /home/pi/ftp/upload -type f -mtime +6 -exec rm {} +
Run Code Online (Sandbox Code Playgroud)

然后在 sudo crontab

59 23 * * * /home/pi/scripts/cullftp.sh > /var/log/ftp/`date +\%Y-\%m-\%d-\%H\%M\%S`-cull.log 2>&1
Run Code Online (Sandbox Code Playgroud)

但是当它在午夜运行时,它只会创建一个空文件,并且没有任何文件被删除。

虽然这段代码有效:

find /home/pi/ftp/upload -type f -mtime +6
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么。

shell cron find

1
推荐指数
1
解决办法
1203
查看次数

我有一个 sh 脚本。如何使用 crontab 运行它?

我有以下文件execute-backup-from-container.sh。这个文件的内容是:

#!/bin/bash
FILE=minime.sql.`date +"%Y%m%d".gz`
CONTAINER='mysql_01'
SCRIPT_ON_CONTAINER='/container-mysql-dump.sh'

${OUTPUT}=$(docker exec ${CONTAINER} /$SCRIPT_ON_CONTAINER)

echo "=============="
echo "$CONTAINER:/$FILE"
echo "=============="
docker cp "$CONTAINER:/$FILE" backup-data/
Run Code Online (Sandbox Code Playgroud)

当我运行时,crontab -e我将输入以下内容:
0 5 * * 1 /home/me/projects/execute-backup-from-container.sh 这意味着execute-backup-from-container.sh应该在每天早上 5:00 执行。
问题是脚本根本没有执行。
那么到底是什么问题呢?为什么不执行?

linux shell bash cron shell-script

1
推荐指数
1
解决办法
7196
查看次数

如何防止在 cron 作业运行中通过 wget 创建文本文件?

我正在使用波纹管在 CentOS 7 上安装的 Virtualmin 中每小时运行一个页面

wget https://domain.tld/index.php?page=cron > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

但它会在 cron 运行时每小时创建以下文件

index.php?page=cron
index.php?page=cron.1
index.php?page=cron.2
Run Code Online (Sandbox Code Playgroud)

等等。

请让我知道如何避免创建这些文件。

linux cron

1
推荐指数
1
解决办法
4563
查看次数

在一行中将所有代码行重定向到同一个文件

我有以下命令集用于更新我的托管服务提供商平台上 CentOs 共享托管分区中的所有 WordPress 站点(通过每日 cron)。

集合中的wp命令pushd-popd属于WP-CLI程序,它是一个 Bash 扩展,用于 WordPress 网站上的各种 shell 级操作。

for dir in public_html/*/; do
    if pushd "$dir"; then
        wp plugin update --all
        wp core update
        wp language core update
        wp theme update --all
        popd
    fi
done
Run Code Online (Sandbox Code Playgroud)

目录public_html是所有网站目录所在的目录(每个网站通常都有一个数据库和一个主文件目录)。

鉴于public_html有一些不是WordPress 网站目录的目录,WP-CLI 会返回有关它们的错误。

为了防止这些错误,我假设我可以这样做:

for dir in public_html/*/; do
    if pushd "$dir"; then
        wp plugin update --all 2>myErrors.txt
        wp core update 2>myErrors.txt
        wp language core update 2>myErrors.txt …
Run Code Online (Sandbox Code Playgroud)

cron centos error-handling hosting-services wordpress

1
推荐指数
1
解决办法
56
查看次数

crontab 是否像 shell 预期的那样接受多行命令?

我们想在每次晚上 00:00 执行以下行

这行在 crontab 或 cron 作业中有效,尽管命令有几行?

0 0 * * * find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \)     -printf ' %T@ %b :%p\0' |    sort -zk 1,1 -k2,2rn |    gawk -v RS='\0' -v ORS='\0' '
     {du += 512 * $3}
     du > 10 * (2^30) && $1 == "WSP" {
       sub("[^:]*:", ""); print
     }' | xargs -r0  rm -f
Run Code Online (Sandbox Code Playgroud)

linux cron

1
推荐指数
1
解决办法
141
查看次数

在 i3 中使用 crontab 通知发送

我正在尝试创建一个通过通知发送发送通知的 cron 作业。

我目前正在尝试这个:

*/2 * * * * DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus /usr/bin/notify-send "test"
Run Code Online (Sandbox Code Playgroud)

如果我只是从终端运行它,这是有效的。

我也试过设置

XAUTHORITY=/home/munhunger/.Xauthority
Run Code Online (Sandbox Code Playgroud)

我有一个类似的 crontab,它运行一个 shell 脚本,该脚本具有打印到日志文件的相同变量,所以我知道 crontab 正在工作。但是,仍然没有显示任何通知。

有没有人知道可能有什么问题?

我正在运行 Ubuntu 17.10,上面有 i3

cron ubuntu notifications i3 notify-send

1
推荐指数
1
解决办法
1341
查看次数