【问题标题】:Crontab custom shell execute croncrontab 自定义 shell 执行 cron
【发布时间】:2016-12-27 15:36:57
【问题描述】:

我想让我的 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 的摘录:

12 月 26 日 15:55:01 bf7fe8653ac9 CROND[658]: (test) CMD ( echo "toto" >> /tmp/shell。

【问题讨论】:

  • cron-launcher.sh 不是 shell,它是一个 bash 脚本。
  • 确实如此,但我想让它像 shell 一样“行动”
  • 或者更简单地充当外壳之间的包装器
  • 1) 什么是 test ? 2) /bin/cron-launcher.sh 是否列在 /etc/shells 中?
  • 1) test 是用户测试 2) 不,它没有在/etc/shells 中列出

标签: linux bash shell cron


【解决方案1】:

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

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

SHELL=/bin/cron-launcher.sh * * * * * test 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

【讨论】:

    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2016-04-29
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多