I decided to add this here as it's related to bash (IMHO) and not necessarily to JBOSS.
The problem started happening a few weeks ago on some of the test systems that I have. When I exit my shell (putty) it hangs forcing me to close the window, which then also stops the JBOSS server. I did not have this problem before, and only a few of the systems have it.
Right now I logon with the following (as the default shell is ksh with "ctrl+d" disabled - set -o ignoreeof):
bash --rcfile /home/admin/my.profile -i ; exit
Notes:
I do not have this issue when I logon with ksh.
I have also tried setting the shell to bash in /etc/passwd, did not work.
The main JBOSS script is called with "nohup" and "&".
I have also tried starting the app within "screens", and when I logout it kills both screen and JBOSS processes.
System Info:
$ uname -a
Linux srs576 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
$ bash -version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ ksh --version
version sh (AT&T Research) 93t+ 2010-02-02
The ssh seems to be overly attached to its children, even for no-terminal command execution. Alas, many signals go to all processes of a terminal. I used to keep losing my mwm (X window manager) when I used SIGINT to stop a shell launched program. You might launch it with cron, which by attempting a relaunch every n minutes also gives auto restart, and then it is not entangled in your ssh terminal session. Of course, it has to be sensitive to prior running instances and exit quietly if they are running. The ssh command-only sometimes works OK (no terminal):
When you close your terminal window, anything that still has open file descriptors referring to the terminal is killed. Anything you run will inherit copies of the terminal file descriptors unless they close them themselves or you close them first.
Run them with nohup to prevent them accidentally keeping around such file descriptors.
Thanks for replies everyone. As I had mentioned in my first post, the script itself is run with "nohup" and placed in the background with "&". The script starts a Java process (JBOSS) and other non java services (via other scripts). Only the java process stops when I logout. The other services are still running.
The 'at' command is like 'cron' but one-time, with commands on stdin and time on command line. A daemon starts the job, not your session.
I leave daemon processes in all languages running when I log out on all sorts of systems. This seems a bit draconian, almost like a security tool is turned on.
Using a tool like strace/truss/tusc to trace the running daemon into a flat file should tell you what kills it. Be sure to redirect to a file and turn on all the options like follow fork and display thread id. Launch it as: