linux - Bash: Get pid of a process using a different user -


i have script in bash start java program , want pid of program after executes. pid saved in text file.

right have this:

if [ "$user" == "root" ]     su $app_user -c "nohup java $java_opts  >> $log_out 2>> $log_err &"     su $app_user -c "echo $! > $pid_path/$cat.pid" else     nohup java $java_opts >> $log_out 2>> $log_err &     echo $! > "$pid_path/$cat.pid" fi 

i tried doesn't work neither.

if [ "$user" == "root" ]     su $app_user -c "(nohup java $java_opts  >> $log_out 2>> $log_err &); (echo $! > $pid_path/$cat.pid)" else     nohup java $java_opts >> $log_out 2>> $log_err &     echo $! > "$pid_path/$cat.pid" fi 

when run app_user works great, when run root java program starts pid file created empty.

try

su $app_user -c "nohup java $java_opts  >> $log_out 2>> $log_err & echo \$! > $pid_path/$cat.pid" 

\ behind $! prevents expansion of variable, before passing su command.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -