gpt4 book ai didi

bash - 如何在cron中调用脚本时传递参数?

转载 作者:行者123 更新时间:2023-12-04 16:46:56 26 4
gpt4 key购买 nike

我想执行一个带有一些参数的脚本作为 cron 作业。我已经使用 crontab -e 配置了 crontab有以下内容

*/2 * * * * /root/todo-api/workspace/docker.sh c4e842c79337

但它不起作用。当我用
*/2 * * * * /root/todo-api/workspace/docker.sh

有效。如何在cron中调用脚本时传递参数?这是我的 docker.sh 脚本,如果我直接从 shell 执行它,它就可以工作。
CONTAINER=$1    

RUNNING=$(docker inspect --format="{{.State.Running}}" $CONTAINER 2> /dev/null)

if [ $? -eq 1 ]; then
echo "UNKNOWN - $CONTAINER does not exist."
exit 3
fi

if [ "$RUNNING" == "false" ]; then
echo "CRITICAL - $CONTAINER is not running."
curl -H "Content-type: application/json" -X POST -d '{"routing_key": "3ef61cda125048a390d46cdb8d425590","event_action": "trigger","payload": {"summary": "Docker Container '$CONTAINER' down", "source": "'$CONTAINER'", "severity": "critical" }}' "https://events.pagerduty.com/v2/enqueue"
exit 2
fi

echo "OK"

最佳答案

第一个 crontab 条目看起来是正确的。由于没有#! /bin/bash行,您可能需要将 bash 放在调用前面,例如

*/2 * * * * /bin/bash /root/todo-api/workspace/docker.sh c4e842c79337

根据 docker inspect

Usage

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

没有 $CONTAINER 的第二次调用必须失败,因为 inspect需要一个名称或一些 ID。
要进一步调试,请按照此问题 How to debug a bash script?并保留 stderr 的输出,例如删除 2>/dev/null .

关于bash - 如何在cron中调用脚本时传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46570273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com