Testing if a Daemon is alive or not with Shell -
i have log_sender.pl perl script when executed runs daemon. want make test, using shell:
#!/bin/bash function log_sender() { perl -i $home/script/log_sender.pl } ( [[ "${bash_source[0]}" == "${0}" ]] || exit 0 function check_log_sender() { if [ "ps -aef | grep -v grep log_sender.pl" ]; echo "passed" else echo failed fi } log_sender check_log_sender ) unfortunately when run terminal becomes:
-bash-4.1$ sh log_sender.sh ... ... what doing wrong?
> if [ "ps -aef | grep -v grep log_sender.pl" ]; this not want. try this:
if ps -aef | grep -q 'log_sender\.pl'; ... in shell script, if construct takes argument command exit status examines. in code, command [ (also known test) , run on literal string "ps -aef | grep -v grep log_sender.pl" true.
you intended check whether ps -aef outputs line contains log_sender.pl not contain grep; ps -aef | grep -v grep | grep 'log_sender\.pl' can avoid grep -v specifying regular expression not match itself.
the -q option grep suppresses output; exit code indicates whether or not input matched regular expression.
the perl invocation not correct; -i option requires argument, saying perl , perl interpreter waiting type in perl script execute. apparently script log_sender.pl should drop -i (or add argument it, if need add perl library paths in order script work).
finally, if write bash script, should execute bash.
chmod +x log_sender.sh ./log_sender.sh or alternatively
bash ./log_sender.sh the bash_source construct use bashism, script not work correctly under sh.
finally, parentheses around main logic redundant. cause script run these commands in separate subshell no apparent benefit.
Comments
Post a Comment