Previous: Command Line Arguments, Up: Start & Stop [Contents][Index]
You can have LUX run in batch mode: in the background, unconnected to a terminal, even after you have logged out. To make this work, you need to be able to do three things:
The first item can be taken care of by LUX itself; the last two items must be done by the shell in which you start LUX. Of course, you cannot use any commands that generate screen output or that rely on screen or mouse input if the LUX process is unconnected to a terminal.
To make LUX read commands from a file, use file inclusion (File Inclusion): The command
@file
makes LUX read commands from file file.lux. However, if the file
contains a command that requests user input, then such input is read
from the keyboard by default. You can instruct LUX to read such input
from the file, too, by issuing the batch
command (batch).
The following discussion of input and output redirection and of background processes is valid for most Unix-type operating systems.
In most Unix-type shells, you make a command send all output to a disk file by appending a file name after a greater-than (>) sign to the command line, and make the command take input from a disk file by appending a file name after a less-than (<) sign, and make the command run in the background, unconnected to any terminal, by ending the command line with an ampersand (&) sign.
The command
lux batch statements exit > outputfile &
executes the listed statements in LUX, takes all input (if any) from the
read files, sends all output to file outputfile, and runs in the
background. In this case, you must explicitly tell LUX to exit (using
the exit
command, exit) when it is done, or else it will
hang around in the background waiting for more input. If no additional
user input is required during execution of the statements, then you can
leave out the batch
command. In most cases, the shell will
complain if file outputfile already exists. If you use double
greater-than signs (>>) rather than a single one, then the output is
appended to outputfile, which may or may not already exist. In
some shells, if you use a greater-than sign followed by an exclamation
mark (>!), then if outputfile
already exists its previous
contents are discarded.
If all of your LUX commands are in a single file inputfile, then you can also use the following command to execute these commands in the background:
lux < inputfile > outputfile &
If LUX finds that it cannot get more input because it has read all of
the input file and it is not connected to a terminal (as in this case),
then it quits, so you do not need to have an exit
command at the
end of inputfile in this case.
If you are running LUX connected to a terminal and then decide you’d
rather have it continue in the background, then you can send it the
"suspend" interrupt signal, commonly generated by pressing C-Z,
and then type the shell command bg
to put the session in the
background. However, you cannot have subsequent output be sent to a
file in this way, so if LUX generates any output after it is put in the
background in this way, then the process will hang around until it gets
reattached to a terminal. Likewise, if LUX is ready for more input, the
process will wait around for that. To reattach the process to the
terminal, type fg
.
Previous: Command Line Arguments, Up: Start & Stop [Contents][Index]