Forum: Ruby crontab and ruby script not working

F8ae81dca1b783fd3504e86e9e2fedc8?d=identicon&s=25 Paul Darragh (salinn)
on 2013-09-04 15:41
I have a ruby script that I am trying to set up on a cronjob. I have
tested it both just running it in the normal mode and a test shell mode.

When I am logged in as a normal user or in 'env -i $SHELL --norc' I will
run ruby /home/salinn/dev/ruby/webmail/script.rb  and it works in both
environments. Could someone help point me out what I am doing wrong?

My crontab looks like this:

* * * * * ruby /home/salinn/dev/ruby/webmail/script.rb
15000f55138ae94b0f362ed7c625461a?d=identicon&s=25 unknown (Guest)
on 2013-09-04 16:14
(Received via mailing list)
Am 04.09.2013 15:41, schrieb Paul Darragh:
> I have a ruby script that I am trying to set up on a cronjob. I have
> tested it both just running it in the normal mode and a test shell mode.
>
> When I am logged in as a normal user or in 'env -i $SHELL --norc' I will
> run ruby /home/salinn/dev/ruby/webmail/script.rb  and it works in both
> environments. Could someone help point me out what I am doing wrong?
>
> My crontab looks like this:
>
> * * * * * ruby /home/salinn/dev/ruby/webmail/script.rb

To make sure it is not an issue with the PATH environment variable
(cron may have its own?), try invoking Ruby with the full path,
e.g. /usr/bin/ruby (you can find out with 'which ruby').

Regards,
Marcus
C993c6aaffc6cf7b477a5075099e1d36?d=identicon&s=25 Peter Hickman (Guest)
on 2013-09-04 16:16
(Received via mailing list)
Have you tried giving the full path to Ruby? /usr/local/bin/ruby or
whatever it is on your machine?
91e1fb8bd265b7629491ab64c42f0906?d=identicon&s=25 Reid Thompson (Guest)
on 2013-09-04 16:25
(Received via mailing list)
On Wed, 2013-09-04 at 16:13 +0200, sto.mar@web.de wrote:

> > * * * * * ruby /home/salinn/dev/ruby/webmail/script.rb
>
> To make sure it is not an issue with the PATH environment variable
> (cron may have its own?), try invoking Ruby with the full path,
> e.g. /usr/bin/ruby (you can find out with 'which ruby').
>
> Regards,
> Marcus
>
>

cron uses a very minimal path.
you may need to explicitely set the PATH at the top of your crontab, or
give the full path to any exes that you utilize
F8ae81dca1b783fd3504e86e9e2fedc8?d=identicon&s=25 Paul Darragh (salinn)
on 2013-09-04 18:54
I have tried to give it the specific Path to ruby and loadingin the path
from the profile I am using. It is still not working only when I run it
as a cronjob.

This is what the cronjob now looks like:

PATH="$HOME/bin:$PATH"
* * * * * /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb
91e1fb8bd265b7629491ab64c42f0906?d=identicon&s=25 Reid Thompson (Guest)
on 2013-09-04 19:52
(Received via mailing list)
On Wed, 2013-09-04 at 18:54 +0200, Paul Darragh wrote:

> I have tried to give it the specific Path to ruby and loadingin the path
> from the profile I am using. It is still not working only when I run it
> as a cronjob.
>
> This is what the cronjob now looks like:
>
> PATH="$HOME/bin:$PATH"
> * * * * * /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb
>

Don't use $HOME -- give the full path name

PATH=/path/to/user/home/bin:$PATH

reid
A7fca2db6ff3f4583df98043bd5166f9?d=identicon&s=25 Panagiotis Atmatzidis (Guest)
on 2013-09-04 21:01
(Received via mailing list)
Attachment: signature.asc (840 Bytes)
Hello,

On 4 Σεπ 2013, at 15:41 , Paul Darragh <lists@ruby-forum.com> wrote:

>
> --
> Posted via http://www.ruby-forum.com/.

This was my crontab at a Gentoo system with fcron (a more powerful
solution than cron) but same works for other systems

NOTE: I use 'rvm'

# atmat's crontab configuration
SHELL=/bin/bash
PATH=/home/atma/.rvm/gems/ruby-1.9.3-p0/bin:/home/atma/.rvm/gems/ruby-1.9.3-p0@global/bin:/home/atma/.rvm/rubies/ruby-1.9.3-p0/bin:/home/atma/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.5.3
RUBYLIB=/home/atma/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1
GEM_HOME='/home/atma/.rvm/gems/ruby-1.9.3-p0'GEM_PATH='/home/atma/.rvm/gems/ruby-1.9.3-p0:/home/atma/.rvm/gems/ruby-1.9.3-p0@global'
RUBYOPT=rubygems

%nightly,mail(no) * 8-9 /home/atma/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/usr/local/bin/morula -s username update


You can get the idea.


Panagiotis (atmosx) Atmatzidis

email:  atma@convalesco.org
URL:  http://www.convalesco.org
GnuPG ID: 0x1A7BFEC5
gpg --keyserver pgp.mit.edu --recv-keys 1A7BFEC5
91e1fb8bd265b7629491ab64c42f0906?d=identicon&s=25 Reid Thompson (Guest)
on 2013-09-04 22:26
(Received via mailing list)
On Wed, 2013-09-04 at 21:00 +0200, Panagiotis Atmatzidis wrote:

> >
>
> You can get the idea.
>
05 00 * * * /mnt/nfs/dataproc_work/applhome/cadredd/rubybin/rvm_cronit
ruby /path/to/somerubyscript.rb  "param1" "param2" etc
33 06 * * 1-6 /mnt/nfs/dataproc_work/applhome/cadredd/rubybin/rvm_cronit
/path/to/some/shell_script_that_includes_a_call_to_a_ruby_script.sh
"param1" "param2" etc

$ cat /home/${user}/bin/rvm_cronit
#!/bin/bash
###############################################################################
#
lclcmd=`basename $0`
#
if [ "$1" = "-h" ]; then
    Description
fi
minargv=1
if [ $# -lt $minargv ]; then
    echo "Invalid number of parameters specified."
    Description
fi
#
###############################################################################
# set up some standard variables
###############################################################################
#
exitsts=0
#
###############################################################################
# validate parameters
###############################################################################
#
# N/A
#
###############################################################################
# run the job
###############################################################################
#
cd /home/${user}
. /home/${user}/.profile
envfile=`/usr/local/rvm/bin/rvm env --path`
. $envfile
#
$*
cmdsts=$?
if [ $cmdsts -ne 0 ]; then
    exitsts=1
    echo "cronit: ERROR"
    echo "quitting $lclcmd"; exit $exitsts
fi
#
exit $exitsts


--
If you have received the message in error, please advise the sender by
reply email and please delete the message.  This message contains
information which may be confidential or otherwise protected.  Unless
you are the addressee (or authorized to receive for the addressee), you
may not use, copy, or disclose to anyone the message or any information
contained in the message.
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse m. (tamouse_m)
on 2013-09-05 06:29
(Received via mailing list)
On Sep 4, 2013, at 11:54 AM, Paul Darragh <lists@ruby-forum.com> wrote:

> Posted via http://www.ruby-forum.com/.
"It isn't working" isn't really very descriptive. What errors are you
getting?
F8ae81dca1b783fd3504e86e9e2fedc8?d=identicon&s=25 Paul Darragh (salinn)
on 2013-09-05 14:26
tamouse m. wrote in post #1120716:
> On Sep 4, 2013, at 11:54 AM, Paul Darragh <lists@ruby-forum.com> wrote:
>
>> Posted via http://www.ruby-forum.com/.
> "It isn't working" isn't really very descriptive. What errors are you
> getting?

The problem is I am not seeing any errors besides that it is not
running. I can see in syslog that it runs it.
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse m. (tamouse_m)
on 2013-09-06 04:26
(Received via mailing list)
On Sep 5, 2013, at 7:26 AM, Paul Darragh <lists@ruby-forum.com> wrote:

> tamouse m. wrote in post #1120716:
>> On Sep 4, 2013, at 11:54 AM, Paul Darragh <lists@ruby-forum.com> wrote:
>>
>>> Posted via http://www.ruby-forum.com/.
>> "It isn't working" isn't really very descriptive. What errors are you
>> getting?
>
> The problem is I am not seeing any errors besides that it is not
> running. I can see in syslog that it runs it.

So you see in syslog that it runs. But you somehow detect that it's not
running, which I assume means you can't see the effect from it.


Are you getting an email from cron with any job output at all?

Given your crontab:

PATH="$HOME/bin:$PATH"
* * * * * /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb

You should be seeing an email with the combined stdout/stdin from that
job showing up once a minute. If not, change it to something like:

PATH="$HOME/bin:$PATH"
* * * * * /usr/bin/ruby /home/salinn/dev/ruby/webmail/script.rb >>
$HOME/webmailscript.log 2>&1

to ensure you're getting the output, if any.

You might add a cron job that is simply:

* * * * * set > $HOME/crontab-env.txt 2>&1

to see the environment your cronjob is actually running in. After that
cronjob runs, the file should appear in your home directory. You can
remove the cronjob after that. Inspect the environment, see if there's
anything missing you need.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.