cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Edward Capriolo <edlinuxg...@gmail.com>
Subject Re: Strange issue wherein cassandra not being started from cron
Date Wed, 11 Jan 2017 03:21:28 GMT
On Tuesday, January 10, 2017, Jonathan Haddad <jon@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 <bhu1rawal@gmail.com
> <javascript:_e(%7B%7D,'cvml','bhu1rawal@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 <ajaygargnsit@gmail.com
>> <javascript:_e(%7B%7D,'cvml','ajaygargnsit@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 <eevans@racklabs.com
>>> <javascript:_e(%7B%7D,'cvml','eevans@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.

Mime
View raw message