On Jul 9, 2009, at 7:53 PM, Enling Li wrote: > Thank you, Rob for the quick reply and help. I tried the commmand you > enclosed in the mail. It did not work out. I still got hang at the > exec() command. > > Here are the options I did. They behave the same. They don't work. By > the way, my linux system has setsid(). > > ssh.exec!("setsid /root/test.pl >/tmp/test.log 2>&1") > ssh.exec!("setsid /root/test.pl > /dev/null 2>&1") > ssh.exec!("setsid /root/test.pl") > > Thanks. > > Enling OK, what about: ssh.exec!("sh -c 'setsid /root/test.pl > /dev/null 2>&1'") or perhaps bash, /bin/sh, or /bin/bash in place of sh Of course, I'm assuming that you are verifying that you can ssh manually and run these commands yourself. (If not, get to a command that works even after you log out manually.) -Rob > Rob Biedenharn wrote: >> On Jul 9, 2009, at 5:13 PM, Enling Li wrote: >> >>> The above code hangs also because test.pl contains a long sleep >>> and do >>>> >>>> I can do this from a shell by suffixing an '&': >>>> >>>> java -cp <classpath> <main_class>& >>>> >>>> starts the Java program in a background process thread and returns >>>> control the shell. >>>> >>>> When I try this from a Ruby program the program blocks until the >>>> Java >>>> program is terminated. >> >> If your system has the `setsid` (set session id) program (and the >> underlying system call), then you could try: >> >> ssh.exec!("setsid /root/test.pl") >> >> or >> >> setsid java -cp YOURCLASSPATH MainClass >> >> but you may wish to redirect output. >> >> ssh.exec!("setsid /root/test.pl >/tmp/test.log 2>&1") >> >> -Rob >> >> Rob Biedenharn http://agileconsultingllc.com >> Rob / AgileConsultingLLC.com > > -- > Posted via http://www.ruby-forum.com/. >