calling a Universe program

Can someone offer some technical advice concerning an call to a IBM U2 (Universe) program?
When I use the following script from a unix shell, it works fine:
$ " xxx.sh "
(contains the following --->)

  1. cd /links/ACCOUNT1
  2. /shapps/ibm/uv/bin/uv "COUNT FILE1" /home /result.txt
  3. cd -
    with the above, I get:

$ cat results.txt
Accepting messages.
ACCOUNT1
Account 88987 records counted.

However, If I enter:
$ "nohup xxx.sh &" it bombs out:
$ nohup xxx.sh & [2] 21477
$ Sending output to nohup.out
[1] + Stopped (tty output) nohup xxx.sh &

This is the part that hangs:
" smintz 26850 26846 0 09:48:33 pts/tNb 0:00 /shapps/ibm/uv/bin/uv COUNT FILE1 "

Does it have somethig to do with (tty output)

$ Any Idea why I can successfully run this .sh from a unix line, but not in the background? Also, I have searched U2 documents on the correct method, cannot find anything, any hints where this is documented?
Thanks

my 2 cents are about /dev/tty and nohup :

  • first, you should consider that some applications "like" (*) to open "/dev/tty" ;

  • the simplest test you should perform is to force you command to use "/dev/tty" and see if it satisfies your application ;

  • speciffically, if you run a shell script in this fashion :

$ somescript.sh < /dev/tty > /dev/tty
  • then your script should not complain about "tty output"

(*) they really shouldn't ; it's poor programming practice .

  • second, nohup has 2 relevant properties :

    -- it can't afford /dev/tty communication ;

    -- it ignores ".profile" sourcing ;

  • those two peculiarities above are responsible for most script execution misfortunes ;

  • so if you need to run a script thru nohup, be sure to source your ".profile" explicitly within its first few lines ;

good luck, and success !

alexandre botao

smintz ,

1) programs that explicitly make use of "/dev/tty" are editors (like vi) or other apps that use libcurses ; Any other apps - ordinarilly - should write to stdout and/or stderr , and read from stdin , thus honoring the Unix programming paradigm as set forth by ken thompson since `the epoch' :slight_smile:

-- if you don't recognize some of the info above , it'll be illustrative for you in your journey getting to know Unix better ... so not to worry about it now ;

The point here is that all programmers that stick to the model , can make use of all the power that Unix provides , without any undesired side effects ;

Explicitly , any program that works as below :

$ prog < input.dat > prog.out 2> prog.err 

can be used without worries with all the rest of unix ;

but remember : programs that instead use "/dev/tty" as input and output ,
cannot make use of these facilities ;

** now let's get to nohup ... shall we ?

2) nohup was invented in order to keep a program running even if the user that started it has logged out ... otherwise the program would receive a NOHUP signal upon the user's logoff ;

that said , when a user runs :

$ nohup prog &

he/she can harmlessly logout and rest assured that his/her program would keep running after logoff ;

obviously if the program has anything to tell , who would be there to hear , if the user bailed out ?

this is taken care of by means of the 'nohup.out' file (provided automatically by nohup) ;

the point here is : "any program subjet to nohup MUST adhere to the Unix I/O programing model" , that is , it's i/o MUST be "redirectable" as shown above ;

this is why nohup can't handle "/dev/tty" communication ;

and this is why a "good use" of nohup includes redirecting all i/o ;

** now explicitly - if you use it like :

$ nohup prog < input.dat > prog.out 2> prog.err &

than everything works fine ... provided that "prog" is a well-behaved application ;

*** now , with regard to shell scripts , just bear in mind that the shell itself is a programm , and "your application" (whatever it may be) is another application, and whoever goes into background MUST redirect its I/O , ok ?

just one last thing ... using ">" and "1>" has the same effect , so

$ prog > fileA 1> fileB

has no meaning ... you will not have a duplicated output ;

-- hope this starts your clarification on the subjects ;

good luck , and success !

alexandre botao ( Alexandre V. R. Botao | Unix, C/C++, Shell, LDAP, SSL/TLS, SSH, Perl, Java, Python, Security, ... )