mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-23 05:07:54 +00:00
parallel: --tty allows for more programs accessing /dev/tty in parallel.
This commit is contained in:
parent
94ac9fd72c
commit
f2b403b7fb
|
@ -210,6 +210,11 @@ Quote of the month:
|
|||
<<>>
|
||||
|
||||
New in this release:
|
||||
|
||||
* --tty allows for more programs accessing /dev/tty in parallel. Some programs require tty access without using it.
|
||||
|
||||
* env_parallel --session will record names in current environment in $PARALLEL_IGNORED_NAMES and exit. It is only used with env_parallel, and can work like --record-env but in a single session.
|
||||
|
||||
https://comquest.in/training
|
||||
https://bash-prompt.net/guides/parallell-bash/
|
||||
https://blog.uta.edu/xus/2017/09/29/an-easy-way-to-run-parallel-jobs-on-stampede2/
|
||||
|
|
|
@ -27,7 +27,20 @@ B<env_parallel> is 100 ms slower at startup than pure GNU
|
|||
B<parallel>, and takes up to 30% longer to start a job (typically 15 ms).
|
||||
|
||||
Due to the problem with environment space (see below) the recommended
|
||||
usage is:
|
||||
usage is either:
|
||||
|
||||
# Do --record-env into $PARALLEL_IGNORED_NAMES
|
||||
env_parallel --session
|
||||
|
||||
# Define whatever you want to use
|
||||
alias myalias=echo
|
||||
myvar=it
|
||||
myfunc() { myalias $1 $myvar works.; }
|
||||
|
||||
# env_parallel will not export names in $PARALLEL_IGNORED_NAMES
|
||||
env_parallel -S localhost myfunc ::: Yay,
|
||||
|
||||
Or:
|
||||
|
||||
# Record the "clean" environment (this only needs to be run once)
|
||||
env_parallel --record-env
|
||||
|
@ -42,7 +55,7 @@ usage is:
|
|||
# Use --env _ to only transfer the names not in the "empty" environment
|
||||
env_parallel --env _ -S localhost myfunc ::: Yay,
|
||||
|
||||
In B<csh>:
|
||||
In B<csh> B<--session> is not supported:
|
||||
|
||||
# Record the "clean" environment (this only needs to be run once)
|
||||
env_parallel --record-env
|
||||
|
|
10
src/parallel
10
src/parallel
|
@ -2449,7 +2449,6 @@ sub __RUNNING_THE_JOBS_AND_PRINTING_PROGRESS__ {}
|
|||
# $Global::host{$sshlogin} = Pointer to SSHLogin-object
|
||||
# $Global::total_running = total number of running jobs
|
||||
# $Global::total_started = total jobs started
|
||||
# $Global::tty_taken = is the tty in use by a running job?
|
||||
# $Global::max_procs_file = filename if --jobs is given a filename
|
||||
# $Global::JobQueue = JobQueue object for the queue of jobs
|
||||
# $Global::timeoutq = queue of times where jobs timeout
|
||||
|
@ -2471,7 +2470,6 @@ sub init_run_jobs {
|
|||
# Returns: N/A
|
||||
$Global::total_running = 0;
|
||||
$Global::total_started = 0;
|
||||
$Global::tty_taken = 0;
|
||||
$SIG{USR1} = \&list_running_jobs;
|
||||
$SIG{USR2} = \&toggle_progress;
|
||||
if(@opt::basefile) { setup_basefile(); }
|
||||
|
@ -3927,7 +3925,6 @@ sub reaper {
|
|||
# Uses:
|
||||
# %Global::sshmaster
|
||||
# %Global::running
|
||||
# $Global::tty_taken
|
||||
# $opt::timeout
|
||||
# $Global::timeoutq
|
||||
# $opt::halt
|
||||
|
@ -3969,10 +3966,6 @@ sub reaper {
|
|||
|
||||
debug("run", "seq ",$job->seq()," died (", $job->exitstatus(), ")");
|
||||
$job->set_endtime(::now());
|
||||
if($stiff == $Global::tty_taken) {
|
||||
# The process that died had the tty => release it
|
||||
$Global::tty_taken = 0;
|
||||
}
|
||||
my $sshlogin = $job->sshlogin();
|
||||
$sshlogin->dec_jobs_running();
|
||||
if($job->should_be_retried()) {
|
||||
|
@ -8588,7 +8581,7 @@ sub start {
|
|||
}
|
||||
$job->set_fh(0,"w",$stdin_fh);
|
||||
if($opt::tee) { $job->set_virgin(0); }
|
||||
} elsif ($opt::tty and not $Global::tty_taken and -c "/dev/tty" and
|
||||
} elsif ($opt::tty and -c "/dev/tty" and
|
||||
open(my $devtty_fh, "<", "/dev/tty")) {
|
||||
# Give /dev/tty to the command if no one else is using it
|
||||
# The eval is needed to catch exception from open3
|
||||
|
@ -8605,7 +8598,6 @@ sub start {
|
|||
|| ::die_bug("open3-/dev/tty");
|
||||
1;
|
||||
};
|
||||
$Global::tty_taken = $pid;
|
||||
close $devtty_fh;
|
||||
$job->set_virgin(0);
|
||||
} else {
|
||||
|
|
|
@ -2041,6 +2041,8 @@ Record names in current environment in B<$PARALLEL_IGNORED_NAMES> and
|
|||
exit. Only used with B<env_parallel>. Aliases, functions, and
|
||||
variables with names in B<$PARALLEL_IGNORED_NAMES> will not be copied.
|
||||
|
||||
Only supported in B<Ash, Bash, Dash, Ksh, Sh, and Zsh>.
|
||||
|
||||
See also B<--env>, B<--record-env>.
|
||||
|
||||
|
||||
|
@ -2328,13 +2330,13 @@ Silent. The job to be run will not be printed. This is the default.
|
|||
Can be reversed with B<-v>.
|
||||
|
||||
|
||||
=item B<--tty>
|
||||
=item B<--tty> (alpha testing)
|
||||
|
||||
Open terminal tty. If GNU B<parallel> is used for starting an
|
||||
interactive program then this option may be needed. It will start only
|
||||
one job at a time (i.e. B<-j1>), not buffer the output (i.e. B<-u>),
|
||||
and it will open a tty for the job. When the job is done, the next job
|
||||
will get the tty.
|
||||
Open terminal tty. If GNU B<parallel> is used for starting a program
|
||||
that accesses the tty (such as an interactive program) then this
|
||||
option may be needed. It will default to starting only one job at a
|
||||
time (i.e. B<-j1>), not buffer the output (i.e. B<-u>), and it will
|
||||
open a tty for the job.
|
||||
|
||||
You can of course override B<-j1> and B<-u>.
|
||||
|
||||
|
|
Loading…
Reference in a new issue