2013-05-07 9 views
15

In uno dei miei progetti sto usando Sidekiqcome trovare Sidekiq è in esecuzione o meno

Esiste un metodo insito console Sidekiq/metodo che mi aiuta a scoprire se sidekiq è in funzione o meno.

Il mio requisito è una sorta di condizione di pre-verifica in cui, se Sidekiq non è in esecuzione, verrà generato un errore.

Ho provato ad utilizzare il grep come

'ps -ef | grep sidekiq' 

ma non è risolvere il mio scopo.

Il metodo che sto cercando dovrebbe essere qualcosa di simile:

Sidekiq.is_running? 

Grazie in anticipo.

Ho anche provato

Sidekiq non è in esecuzione

1.9.3p392 :021 > system 'ps aux | grep sidekiq' 
ankitgupta  6683 0.0 0.0 2432768 600 s001 R+ 11:47AM 0:00.00 grep sidekiq 
ankitgupta  6681 0.0 0.0 2433432 916 s001 S+ 11:47AM 0:00.01 sh -c ps aux | grep sidekiq 
=> true 

Sidekiq è in esecuzione

1.9.3p392 :022 > system 'ps aux | grep sidekiq' 
ankitgupta  6725 0.0 0.0 2432768 600 s001 S+ 11:57AM 0:00.00 grep sidekiq 
ankitgupta  6723 0.0 0.0 2433432 916 s001 S+ 11:57AM 0:00.00 sh -c ps aux | grep sidekiq 
ankitgupta  6707 0.0 1.3 3207416 111608 s002 S+ 11:56AM 0:07.46 sidekiq 2.11.2 project_name [0 of 25 busy] 
=> true 

E 'sempre tornando vero .. voglio prendere il processo quando viene eseguito

+0

prova 'ps aux | grep sidekiq ' –

+0

@SaidKaldybaev, vedere la mia domanda .. ho aggiornato con quello che ho provato (ur suggerimento). Mi dà sempre vero – AnkitG

+0

http://stackoverflow.com/questions/15843637/how-to-tell-if-sidekiq-is-connected-to-redis-server – HelloWorld

risposta

1

vedo, provare questo fuori:

module Process 
    class << self 
    def is_running?(pid) 
     begin 
     Process.kill(0, pid) 
     true 
     rescue Errno::ESRCH 
     false 
     end 
    end 
    end 
end 

1.9.3p392 :001 > puts `ps aux | grep -i [s]idekiq` 

che restituisca si PID piace: 12247, e si può controllare se è in esecuzione:

Process.is_running?(12247) // true | false 
+0

Volevo controllare questo in volo e non volevo dipendere dal PID, quindi ho creato il metodo dalla tua idea (aggiorna la tua risposta con cosa "ho usato") e restituendo i dati di corrispondenza. – AnkitG

1

Vedi this question per come filtrare ps mostra usando grep, eliminando il comando grep dall'output.

20

Un piccolo trucco:

ps aux | grep '[s]idekiq' 

spero che funziona

2

Idealmente è possibile farlo direttamente da rubino sé. Mettete questo in qualche compito rake o uno script standalone (non dimenticate di specificare i dettagli di collegamento Sidekiq)

ps = Sidekiq::ProcessSet.new 
ps.size # => 2 
ps.each do |process| 
    p process['busy']  # => 3 
    p process['hostname'] # => 'myhost.local' 
    p process['pid']  # => 16131 
end 
ps.each(&:quiet!) # equivalent to the USR1 signal 
ps.each(&:stop!) # equivalent to the TERM signal 

Da https://github.com/mperham/sidekiq/wiki/API#processes

Problemi correlati