Sorry, I can't see anything wrong with it. :-\

Lee Hambley
http://lee.hambley.name/
+49 (0) 170 298 5667

On 19 May 2015 at 02:26, niristotle okram <[email protected]> wrote:

> hi Lee,
>
> here is the full /etc/init.d/ script  http://pastebin.com/02G5tpgH
>
>
> So, i placed a task to stop the app, then deploy & then start the
> service/app. The task have the below commands to check
>
> whoami    ----->   ** [out :: server4] root
> ll /var/run/  ---> this shows the xyz.pid file
>
> So i see the service stops just fine.
>
>  ** [out :: server1] Stopping
>
>  ** [out :: server1] Ok
>
>
>
> And the service also starts just fins
>
>
> ** [out :: server1] Starting xyz...
>
>  ** [out :: server1] Ok
>
>
>
> But on checking manually -- "service xyz status", i get this " Process
> dead but pidfile exist". I can stop and start the service just fine
> manually.
>
>
>
>
>
>
>
>
>
>
>
>
> On Monday, May 18, 2015 at 12:24:50 PM UTC-7, Lee Hambley wrote:
>>
>> You wrote that the /etc/init.d/xyz is done by "sudo" so the deploy user
>> apparently has access to password-less sudo (at least for some actions), it
>> would appear that the file is not visible to `root`. Which I don't believe
>> or expect.
>>
>> You included a part of the /etc/init.d/xyz, but didn't include the full
>> thing for some reason, so I can't see what the value of $PIDFILE should
>> be in this case (*please*, adhere to the list guidelines and paste long
>> files in an external service, and link them), nor state where you got the
>> template.
>>
>> I also don't understand the logic behind setting shell: 'bash' on the
>> run() lines that interface with the init script.
>>
>> Your task:
>>
>> task :stop_app, :roles => :web do
>>
>> run "sudo /etc/init.d/xyz stop", :shell => :bash
>>
>> end
>>
>>
>> ​I might suggest you extend that (or make a similar one,
>> "debug_initd_stuff") that does something like:
>>
>> task :debug_initd_stuff, :roles => :web do
>>
>> run "sudo whoam"
>>
>> run "sudo ls -l /etc/init.d"
>>
>> run "sudo ls -l /var/run"
>>
>> end​
>>
>>
>> ​You might also want to run the init.d script through shellcheck.net,
>> since there are quite a few violations and bad practices already in sight
>> there, shellcheck might help you iron some of them out. (That said,
>> honestly the problem is probably something much simpler.)​
>>
>>
>> Lee Hambley
>> http://lee.hambley.name/
>> +49 (0) 170 298 5667
>>
>> On 18 May 2015 at 21:14, niristotle okram <[email protected]> wrote:
>>
>>> Versions:
>>>
>>>    - Ruby 2.1.1
>>>    - Capistrano 2
>>>    - Rake / Rails / etc
>>>
>>> Platform:
>>>
>>>    - Working on.... RHEL 6
>>>    - Deploying to... RHEL 6
>>>
>>>
>>> A part of the Deploy.rb:
>>>
>>> #before "deploy", "deploy:stop_app"
>>>
>>>  #after "deploy", "deploy:start_app"
>>>
>>>    after "deploy", "deploy:restart_app"
>>>
>>>    namespace :deploy do
>>>
>>>     task :update_code, :roles => :web, :except => { :no_release => true
>>> } do
>>>
>>>       on_rollback { puts "DO NOT WANT TO ROLL BACK?" }
>>>
>>>       strategy.deploy!
>>>
>>>       finalize_update
>>>
>>>     end
>>>
>>>
>>>
>>>     task :stop_app, :roles => :web do
>>>
>>>       run "sudo /etc/init.d/xyz stop", :shell => :bash
>>>
>>>     end
>>>
>>>
>>>
>>>     task :start_app, :roles => :web do
>>>
>>>       run "sudo /etc/init.d/xyz start", :shell => :bash
>>>
>>>     end
>>>
>>>
>>>
>>>
>>>
>>>     task :restart_app, :roles => :web do
>>>
>>>       run "sudo /etc/init.d/xyz restart", :shell => :bash
>>>
>>>     end
>>>
>>>   end
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> I have the parameter in the 'deploy.rb',
>>>
>>> *set :user, 'a_user'*
>>>
>>> Q: Which user performs the task to restart the service (xyz) after the
>>> deployment of app (xyz)? I am getting the errors saying the xyz.pid doesn't
>>> exist, when it actually does. This is a part of the shell script while
>>> stopping the service.
>>>
>>>
>>> A part of the /etc/init.d/xyz
>>>
>>> case "$1" in
>>> start)
>>>         printf "%-50s" "Starting $DAEMON_NAME..."
>>>         cd $DIR
>>>         [ -d $LOGPATH ] || mkdir $LOGPATH
>>>   [ -f $LOGFILE ] || su $DAEMON_USER -c 'touch $LOGFILE'
>>>         PID=`$PYTHON $DAEMON $DAEMON_OPTS > $LOGFILE  2>&1 & echo $!`
>>>         #echo "Saving PID" $PID " to " $PIDFILE
>>>         if [ -z $PID ]; then
>>>             printf "%s\n" "Fail"
>>>         else
>>>             echo $PID > $PIDFILE
>>>             printf "%s\n" "Ok"
>>>         fi
>>> ;;
>>> status)
>>>         printf "%-50s" "Checking $DAEMON_NAME..."
>>>         if [ -f $PIDFILE ]; then
>>>             PID=`cat $PIDFILE`
>>>             if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
>>>                 printf "%s\n" "Process dead but pidfile exists"
>>>             else
>>>                 echo "Running"
>>>             fi
>>>         else
>>>             printf "%s\n" "Service not running"
>>>         fi
>>> ;;
>>> stop)
>>>         printf "%-50s" "Stopping $DAEMONNAME"
>>>             PID=`cat $PIDFILE`
>>>             cd $DIR
>>>         if [ -f $PIDFILE ]; then
>>>             kill -HUP $PID
>>>             printf "%s\n" "Ok"
>>>             rm -f $PIDFILE
>>>         else
>>>             printf "%s\n" "pidfile not found"
>>>         fi
>>> ;;
>>>
>>> restart)
>>>         $0 stop
>>>         $0 start
>>> ;;
>>>
>>> *)
>>>         echo "Usage: $0 {status|start|stop|restart}"
>>>         exit 1
>>> esac
>>>
>>>
>>>
>>> Capistrano log
>>>
>>>   * executing `deploy:restart_app'
>>>
>>>   * executing multiple commands in parallel
>>>
>>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>>
>>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>>
>>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>>
>>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>>
>>>     servers: ["server1", "server2", "server3", "server4"]
>>>
>>>     [server1] executing command
>>>
>>>     [server2] executing command
>>>
>>>     [server3] executing command
>>>
>>>     [server4] executing command
>>>
>>>  ** [out :: server1] Stopping
>>>
>>>  ** [out :: server1] cat: /var/run/xyz.pid: No such file or directory
>>>
>>>  ** [out :: server1] pidfile not found
>>>
>>>  ** [out :: server1] Starting xyz...
>>>
>>>  ** [out :: server2] Stopping
>>>
>>>  ** [out :: server2] cat: /var/run/xyz.pid: No such file or directory
>>>
>>>  ** [out :: server2] pidfile not found
>>>
>>>  ** [out :: server2] Starting xyz...
>>>
>>>  ** [out :: server2] Ok
>>>
>>>  ** [out :: server1] Ok
>>>
>>>  ** [out :: server3] Stopping
>>>
>>>  ** [out :: server3] cat: /var/run/xyz.pid: No such file or directory
>>>
>>>  ** [out :: server3] pidfile not found
>>>
>>>  ** [out :: server4] Stopping
>>>
>>>  ** [out :: server4] Ok
>>>
>>>  ** [out :: server3] Starting xyz...
>>>
>>>  ** [out :: server3] Ok
>>>
>>>  ** [out :: server4] Starting xyz...
>>>
>>>  ** [out :: server4] Ok
>>>
>>>     command finished in 659ms
>>>
>>> Finished: SUCCESS
>>>
>>>
>>>
>>>
>>> I can cat the file as the deploy user just fine.
>>>
>>>
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Capistrano" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web, visit
>>> https://groups.google.com/d/msgid/capistrano/56a2a2dd-fd26-4b14-a2da-0d7af37f8354%40googlegroups.com
>>> <https://groups.google.com/d/msgid/capistrano/56a2a2dd-fd26-4b14-a2da-0d7af37f8354%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Capistrano" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web, visit
> https://groups.google.com/d/msgid/capistrano/d47d5020-1915-4194-be85-b72e157b0c23%40googlegroups.com
> <https://groups.google.com/d/msgid/capistrano/d47d5020-1915-4194-be85-b72e157b0c23%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Capistrano" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/capistrano/CAN_%2BVLXEZf7t0gkwpWvxyD7uTCEgu6YgTXiDxe3gtcSjn9oRUg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to