我正在尝试在我的 ec2 亚马逊服务器(ubuntu 14.04)上运行备份脚本,以自动创建亚马逊 ebs 卷的快照。因此我使用 aws-missing-tools 脚本:https : //github.com/colinbjohnson/aws-missing-tools/tree/master/ec2-automate-backup
这是我的备份脚本,它触发 ec2-automate-backup-awscli.sh:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/aws
HOME=/
JAVA_HOME=/usr/lib/jvm/default-java/jre/
MAILTO=xxx.xxxxxx@me.com
AWS_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxx
AWS_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/opt/aws/ec2-automate-backup-awscli.sh -r us-east-1 -s tag -t 'Backup,Values=true' -k 31 -p
Run Code Online (Sandbox Code Playgroud)
但是我只在使用 crontab 调度此脚本时收到此错误:
26 23 * * * /opt/aws/backup.sh >> /var/log/aws.log 2>&1
Run Code Online (Sandbox Code Playgroud)
日志文件:“为了使用 ec2-automate-backup-awscli.sh,必须安装可执行文件“aws”。”
直接执行“sh backup.sh”工作正常。(已创建快照。)
有任何想法吗?
我有一个在 macOS 上运行的 Jenkins slave 通过ssh slave
, then screen
,然后启动以下脚本,确保在服务器出现故障时重新连接服务器:
#!/usr/bin/env bash
function startSlave() {
java -jar /Users/user/slave.jar -jnlpUrl https://jenkins.company.com/computer/slave-office/slave-agent.jnlp -secret xyz
sleep 3
}
startSlave
while true; do
PID=$(pgrep "slave-agent.jnlp" | awk '{print $2}')
if [[ -z $PID ]]; then
echo "Jenkins slave has died, restarting..."
startSlave
fi
sleep 60
done
Run Code Online (Sandbox Code Playgroud)
这很好用,echo $PATH
在 Jenkins 工作中与echo $PATH
在通过 ssh 打开的终端会话中运行相同。
有时我们需要重新启动机器,所以我希望在登录时执行这个脚本。我测试了通过 launchctl 解决方案和 macOS 用户启动应用程序列表中的 App 启动脚本。
echo $PATH
Jenkins slave 的两次都简单地等于:
/usr/bin:/bin:/usr/sbin:/sbin
因此 PATH …