Issue with rclone running from cron

root@omvdocker:/var/spool/cron/crontabs# cat -vet root
# DO NOT EDIT THIS FILE - edit the master and reinstall.$
# (/tmp/crontab.l2oR6G/crontab installed on Wed Sep 18 15:05:30 2019)$
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)$
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin$
30 * * * * ({ /srv/vaultfs/rootfs/storage/scripts/rclone/root/root_backup.sh; } | tee /tmp/U9GhC8Gz09FCqrfo.stdout) 3>&1 1>&2 2>&3 | tee /tmp/U9GhC8Gz09FCqrfo.stderr$
52 * * * * /opt/rclone/scripts/gvault-move.sh >> /tmp/myjob.log 2>&1$
#51 * * * * env >> /tmp/myjob.log$

@jiru make executable the script
Using user "root" type
chmod +x /opt/rclone/scripts/gvault-move.sh

Also:
service cron start

Is the path for bash correct?

It is executable and other Cron jobs in the same file are running.

Yes. The output is from

which bash

There seems to be a difference in the paths. The working script has /bin/bash whereas this one has /usr/bin/bash

His issue is the script doesn't even fire though, which is most perplexing.

Bash location shouldn't matter really though as most systems have both:

[felix@gemini Movies]$ ls -al /bin/bash
-rwxr-xr-x. 1 root root 2187664 May 13 08:18 /bin/bash
[felix@gemini Movies]$ ls -al /usr/bin/bash
-rwxr-xr-x. 1 root root 2187664 May 13 08:18 /usr/bin/bash
[felix@gemini Movies]$

I still can't figure it out.. any ideas?

Atleast Ubuntu doesn't have it in both locations (checked on both 16.04 & 18.04).

And the error is that the binary is not found, not that the script is not found, since the stderr has the line number mentioned too.

@jiru Can you change it to /bin/bash and try ?

Oh the error is line 1 not found. You are correct. Great find!

@darthShadow @Animosity022

No dice:

root@omvdocker:~# crontab -l
PATH=/bin/bash
30 * * * * ({ /srv/vaultfs/rootfs/storage/scripts/rclone/root/root_backup.sh; } | tee /tmp/U9GhC8Gz09FCqrfo.stdout) 3>&1 1>&2 2>&3 | tee /tmp/U9GhC8Gz09FCqrfo.stderr
23 * * * * /opt/rclone/scripts/gvault-move.sh >> /tmp/myjob.log 2>&1
#51 * * * * env >> /tmp/myjob.log
root@omvdocker:~# tail -f /tmp/myjob.log
/bin/sh: 1: /opt/rclone/scripts/gvault-move.sh: not found

Can you run the script from the command line?

Can you share the latest contents?

Yes, via sh /opt/rclone/scripts/gvault-move.sh

#!/usr/bin/bash
if pidof -o %PPID -x "gvault-move.sh"; then
echo $(date "+%Y/%m/%d %H:%M:%S")" WARN  : Cron attempted to start the move the local data mirror to vault: but the process is already running." >> /opt/rclone/logs/vault-upload.log
exit 1
fi

echo $(date "+%Y/%m/%d %H:%M:%S")" INFO  : Cron started the rclone move subroutine" >> /opt/rclone/logs/vault-upload.log
# Move older local files to the cloud
rclone move \
/srv/dev-disk-by-label-Buffer/mirror/ vault: \
--log-level INFO \
--log-file /opt/rclone/logs/vault-upload.log \
--stats 0 \
--exclude-from /opt/rclone/exclude/gvault \
--drive-chunk-size 64M \
--delete-empty-src-dirs \
--user-agent gvaultapp \
--fast-list
exit

I think sh puts in the sh shell rather than using the first line.

Can you just run it with:

/opt/rclone/scripts/gvault-move.sh

and does that work?

I meant changing the path in the script itself. The first line is /usr/bin/bash. Can you try with /bin/bash instead ?

Here's the output:

root@omvdocker:~# /opt/rclone/scripts/gvault-move.sh
-bash: /opt/rclone/scripts/gvault-move.sh: /usr/bin/bash: bad interpreter: No such file or directory

Yeah, @darthShadow is spot on. Change that to /bin/bash instead of /usr/bin/bash

Or make a backup and reinstall the os.
Also you can try this script on one vps like vutlr.

That indeed was the solution.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.