0

我有一个 ruby​​ 脚本,我想每 10 分钟执行一次,但我丢失了我的脚本,我正在尝试重写它并且无法让它工作。我保留的 cron 设置与它工作时保持不变,但这就是我所拥有的。

rvm_bin_path=/home/usr/.rvm/bin
GEM_HOME=/home/usr/.rvm/gems/ruby-1.9.3-p194
SHELL=/bin/bash
IRBRC=/home/usr/.rvm/rubies/ruby-1.9.3-p194/.irbrc
MY_RUBY_HOME=/home/usr/.rvm/rubies/ruby-1.9.3-p194
__array_start=0
rvm_path=/home/usr/.rvm
escape_flag=1
rvm_prefix=/home/usr
PATH=/home/usr/.rvm/gems/ruby-1.9.3-p194/bin:/home/usr/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/usr/.rvm/rubies/ruby-1.9.3-p$
PWD=/etc
LANG=en_CA.UTF-8
_second=1
rvm_version=1.14.1 (stable)
_first=0
GEM_PATH=/home/usr/.rvm/gems/ruby-1.9.3-p194:/home/usr/.rvm/gems/ruby-1.9.3-p194@global
RUBY_VERSION=ruby-1.9.3-p194
_=/usr/bin/env

*/10    *       *       *       *       bash -li -c /home/usr/MeetCal-bot/run-bot.sh

我将 cron 作为 su 运行,这就是为什么我需要添加所有这些环境变量,以确保它具有运行 ruby​​ 所需的一切。我以前使用过所有相同的信息,所以我认为我没有遗漏任何东西

我拥有的 bash 脚本是这样的:

#!/bin/bash
ruby /home/usr/bot/bot.rb >> /home/usr/bot/output.txt

当作业运行时,它会生成 output.txt,但它是空的,我希望会有一些输出,可能是 ruby​​ 错误消息。

作为最后的手段,我为目录做了 chmod 777 * 以尝试修复任何权限问题,但这没有帮助。

如果我以本地用户身份运行 ruby​​ 脚本,它运行良好,没有任何错误,但我似乎无法弄清楚为什么它以我的用户身份运行,而不是以 su 身份运行。

4

1 回答 1

3

我会省略-iand -c,因为那些不是必需的。做就是了

*/10 * * * * bash -l /home/usr/MeetCal-bot/run-bot.sh

作为一个开始。

在您的脚本中,插入 awhich ruby >>/home/usr/bot/output.txt以查看它是否找到了 ruby​​。要查看任何错误消息,请添加2>&1到您的 ruby​​ 调用中

#!/bin/bash

which ruby >>/home/usr/bot/output.txt
ruby /home/usr/bot/bot.rb >>/home/usr/bot/output.txt 2>&1
于 2013-01-11T07:18:43.617 回答