One possible reason is that cassandra process gets different user when run differently. Check who owns the data files and check also what gets written into the /var/log/cassandra/system.log (or whatever that was).
Hannu > On 11 Jan 2017, at 16.42, Ajay Garg <ajaygargn...@gmail.com> wrote: > > Tried everything. > Every other cron job/script I try works, just the cassandra-service does not. > > On Wed, Jan 11, 2017 at 8:51 AM, Edward Capriolo <edlinuxg...@gmail.com > <mailto:edlinuxg...@gmail.com>> wrote: > > > On Tuesday, January 10, 2017, Jonathan Haddad <j...@jonhaddad.com > <mailto:j...@jonhaddad.com>> wrote: > Last I checked, cron doesn't load the same, full environment you see when you > log in. Also, why put Cassandra on a cron? > On Mon, Jan 9, 2017 at 9:47 PM Bhuvan Rawal <bhu1ra...@gmail.com <>> wrote: > Hi Ajay, > > Have you had a look at cron logs? - mine is in path /var/log/cron > > Thanks & Regards, > > On Tue, Jan 10, 2017 at 9:45 AM, Ajay Garg <ajaygargn...@gmail.com <>> wrote: > Hi All. > > Facing a very weird issue, wherein the command > > /etc/init.d/cassandra start > > causes cassandra to start when the command is run from command-line. > > > However, if I put the above as a cron job > > * * * * * /etc/init.d/cassandra start > > cassandra never starts. > > > I have checked, and "cron" service is running. > > > Any ideas what might be wrong? > I am pasting the cassandra script for brevity. > > > Thanks and Regards, > Ajay > > > #################################################################################################### > #! /bin/sh > ### BEGIN INIT INFO > # Provides: cassandra > # Required-Start: $remote_fs $network $named $time > # Required-Stop: $remote_fs $network $named $time > # Should-Start: ntp mdadm > # Should-Stop: ntp mdadm > # Default-Start: 2 3 4 5 > # Default-Stop: 0 1 6 > # Short-Description: distributed storage system for structured data > # Description: Cassandra is a distributed (peer-to-peer) system for > # the management and storage of structured data. > ### END INIT INFO > > # Author: Eric Evans <eev...@racklabs.com <>> > > DESC="Cassandra" > NAME=cassandra > PIDFILE=/var/run/$NAME/$NAME.pid > SCRIPTNAME=/etc/init.d/$NAME > CONFDIR=/etc/cassandra > WAIT_FOR_START=10 > CASSANDRA_HOME=/usr/share/cassandra > FD_LIMIT=100000 > > [ -e /usr/share/cassandra/apache-cassandra.jar ] || exit 0 > [ -e /etc/cassandra/cassandra.yaml ] || exit 0 > [ -e /etc/cassandra/cassandra-env.sh ] || exit 0 > > # Read configuration variable file if it is present > [ -r /etc/default/$NAME ] && . /etc/default/$NAME > > # Read Cassandra environment file. > . /etc/cassandra/cassandra-env.sh > > if [ -z "$JVM_OPTS" ]; then > echo "Initialization failed; \$JVM_OPTS not set!" >&2 > exit 3 > fi > > export JVM_OPTS > > # Export JAVA_HOME, if set. > [ -n "$JAVA_HOME" ] && export JAVA_HOME > > # Load the VERBOSE setting and other rcS variables > . /lib/init/vars.sh > > # Define LSB log_* functions. > # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. > . /lib/lsb/init-functions > > # > # Function that returns 0 if process is running, or nonzero if not. > # > # The nonzero value is 3 if the process is simply not running, and 1 if the > # process is not running but the pidfile exists (to match the exit codes for > # the "status" command; see LSB core spec 3.1, section 20.2) > # > CMD_PATT="cassandra.+CassandraDaemon" > is_running() > { > if [ -f $PIDFILE ]; then > pid=`cat $PIDFILE` > grep -Eq "$CMD_PATT" "/proc/$pid/cmdline" 2>/dev/null && return 0 > return 1 > fi > return 3 > } > # > # Function that starts the daemon/service > # > do_start() > { > # Return > # 0 if daemon has been started > # 1 if daemon was already running > # 2 if daemon could not be started > > ulimit -l unlimited > ulimit -n "$FD_LIMIT" > > cassandra_home=`getent passwd cassandra | awk -F ':' '{ print $6; }'` > heap_dump_f="$cassandra_home/java_`date +%s`.hprof" > error_log_f="$cassandra_home/hs_err_`date +%s`.log" > > [ -e `dirname "$PIDFILE"` ] || \ > install -d -ocassandra -gcassandra -m755 `dirname $PIDFILE` > > > > start-stop-daemon -S -c cassandra -a /usr/sbin/cassandra -q -p "$PIDFILE" > -t >/dev/null || return 1 > > start-stop-daemon -S -c cassandra -a /usr/sbin/cassandra -b -p "$PIDFILE" > -- \ > -p "$PIDFILE" -H "$heap_dump_f" -E "$error_log_f" >/dev/null || > return 2 > > } > > # > # Function that stops the daemon/service > # > do_stop() > { > # Return > # 0 if daemon has been stopped > # 1 if daemon was already stopped > # 2 if daemon could not be stopped > # other if a failure occurred > start-stop-daemon -K -p "$PIDFILE" -R TERM/30/KILL/5 >/dev/null > RET=$? > rm -f "$PIDFILE" > return $RET > } > > case "$1" in > start) > [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" > do_start > case "$?" in > 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; > 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; > esac > ;; > stop) > [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" > do_stop > case "$?" in > 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; > 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; > esac > ;; > restart|force-reload) > log_daemon_msg "Restarting $DESC" "$NAME" > do_stop > case "$?" in > 0|1) > do_start > case "$?" in > 0|1) > do_start > case "$?" in > 0) log_end_msg 0 ;; > 1) log_end_msg 1 ;; # Old process is still running > *) log_end_msg 1 ;; # Failed to start > esac > ;; > *) > # Failed to stop > log_end_msg 1 > ;; > esac > ;; > status) > is_running > stat=$? > case "$stat" in > 0) log_success_msg "$DESC is running" ;; > 1) log_failure_msg "could not access pidfile for $DESC" ;; > *) log_success_msg "$DESC is not running" ;; > esac > exit "$stat" > ;; > *) > echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2 > exit 3 > ;; > esac > > : > > # vi:ai sw=4 ts=4 tw=0 et > #################################################################################################### > > > -- > Regards, > Ajay > > > Right. Cron is not a full shell and does not by default source things like > .profile. crons man pages discuss this. > > A shortcut is sometimes > * * * * * /etc/profile & cmd > > > > -- > Sorry this was sent from mobile. Will do less grammar and spell check than > usual. > > > > -- > Regards, > Ajay