linux - crontab 自定义 shell 执行 cron

标签 linux bash shell cron

我想让我的 cron 命令从自定义 shell 中执行,如下所示:

SHELL=/bin/cron-launcher.sh
* * * * * test  echo "toto" >> /tmp/shell.log

问题是如果我指定我自己的 shell,文件/tmp/shell.log 是空的。

我自定义的shell内容如下:

#!/bin/bash -e

#Script use to launch cron tasks

set -e

SHELL="/bin/bash -e"
LOGDIR="/var/log/cronlauncher/"

echo "$USER" > /tmp/test.log

用于启动 cron 的用户很好地输出到文件/tmp/test.log 但来自 cron 的 cron 命令 echo "toto" 从未输出到文件 /tmp/shell.log .

如何让自定义shell正确执行cron命令。

这就是让 cron-launcher.sh 脚本充当包装器。

下面是我的/var/log/cron 的摘录:

Dec 26 15:55:01 bf7fe8653ac9 CROND[658]: (test) CMD ( echo "toto" >> /tmp/shell.

最佳答案

通过执行解析到 shell cron-launcher.sh 的第二个参数解决了这个问题

事实是来自 cron 的命令 echo "toto">>/tmp/shell.log

SHELL=/bin/cron-launcher.sh * * * * * 测试 echo "toto">>/tmp/shell.log

在 shell cron-launcher 中被解析为 $2

因此我不得不修改我的代码如下:

#!/bin/bash

#Script use to launch cron tasks

SHELL="/bin/bash"
LOGDIR="/var/log/cronlauncher/"

#echo "$USER" >> /tmp/test.log
COMMAND="$2"
eval $COMMAND

关于linux - crontab 自定义 shell 执行 cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41333512/

相关文章:

c - 为什么我的 C 套接字文件传输(服务器/客户端)程序只能正确运行一次?

linux - sed 命令行

linux - 如何 grep 查找带有 [] 等特殊字符的字符串?

Bash 重定向同步困境

shell - 我们可以拆分一个大的 HDFS 文件夹吗?

java - 内核支持的线程是否运行在内核态?

linux - mv命令移动文件,但报告错误: cannot stat no such file or directory

bash - 仅使用 Bash 模式匹配从字符串开头删除模式

linux - 修改/etc/profile linux

git - 跨平台 git 钩子(Hook)