创建了一个自动任务,自动执行 sh 脚本,sh 内容如下:
#/bin/bash
name=`date +%Y%m%d`_`date +%H%M%S`
mkdir -p /home/mongo/cron/bak/$name
docker exec -it mongo mongodump -h localhost -d dbname -o /home/mongo/cron/db -u username -p password
文件在 /home/mongo/cron/run.sh
已经执行了 chmod u+x run.sh 为sh脚本文件添加执行权限
现在问题是:创建文件夹有效,说明脚本有执行,但最后一句,docker 命令没执行或者执行不成功
想过问题原因:
1: 权限问题,已经给了执行权限了
2:docker 命令错误,但是单独执行是没有问题的
原因到底在哪里呢,求大佬指点
大哥,你的问题解决了吗? 我现在也遇到这个问题了。
#!/bin/bash
echo "****************publish start... ****************"
# 定义变量
containId=`docker ps -aq --filter "ancestor=mytestapi:v1"`
image_name='mytestapi:v1'
contain_name='yohao/corewebpi'
echo current containId ... $containId
# docker 集成命令,删除镜像,容器 在重新生成
docker stop $containId
# docker rmi $containId
# docker build -t $image_name:v1 .
# docker run --name $contain_name -d -p 9001:80 mytestapi:v1
echo "****************publish end... ****************"
代码如上,会抛出一个错误,No such container
执行脚本后的信息可以已贴出来一下勒
docker 执行需要root权限,确认权限分配是否正确
1、脚本中最好先引入环境变量,然后再执行
source ~/.bash_profile
source /etc/profile
2、在脚本中加一些echo输出和if判断来确认是做后一行docker命令到底是执行失败了还是压根没执行
理论上这个run.sh是可以运行的,那确认一下/home/mongo/cron/db目录是否存在,看你上文创建的目录是/home/mongo/cron/bak/$name,我理解你是要输出的后者目录下吧