小编ele*_*128的帖子

crontab 失败,找不到 aws 可执行文件

我正在尝试在我的 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”工作正常。(已创建快照。)

有任何想法吗?

ubuntu cron amazon-ec2 amazon-ebs ubuntu-14.04

3
推荐指数
1
解决办法
1816
查看次数

为什么通过 launchctl 启动 Jenkins slave 时 PATH 不同?

我有一个在 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 $PATHJenkins slave 的两次都简单地等于: /usr/bin:/bin:/usr/sbin:/sbin 因此 PATH …

mac-osx path jenkins

1
推荐指数
1
解决办法
4506
查看次数

标签 统计

amazon-ebs ×1

amazon-ec2 ×1

cron ×1

jenkins ×1

mac-osx ×1

path ×1

ubuntu ×1

ubuntu-14.04 ×1