Как я могу знать свое число задания когда я выполняющий программу КОБОЛа через сценарий оболочки

я записал немного сценария жемчуга, которые делают это

#!/usr/bin/perl

do { open($fh[$_], "<$ARGV[$_]") or die("'$ARGV[$_]' does not exist") } for(0..$#ARGV);


for($i=0;;$i++) {
    $j=$#ARGV+1;

    $fh = $fh[$i%$j];
    if ( $_ = <$fh> ) {
        print $_;
    } else {
        $end |= 2**($i%$j);
    }

    if($end == (2**($j))-1) {
        last;
    }
}

close($_) for(@fh);

сохраните его в файл вызов он как

script.pl file1 file2 file3 ... > merge

Это - по крайней мере одна возможность решить Вашу задачу.

0
05.11.2013, 12:49
2 ответа

Можно ли объяснить немного больше, что Вы делаете? Существует несколько "чисел", связанных с Вашей программой.

Примечание: В моих примерах знак доллара ($) обозначает командную строку и не предназначен, чтобы быть введенным как часть команды.

  1. Идентификатор процесса

    Когда прогоны программы в Unix это присвоило идентификатор процесса. Скажите, что у меня есть программа sleep, и я выполняю его в течение 100 секунд.

    $ sleep 10000
    

    Я могу затем узнать его идентификатор процесса с помощью команды ps. Идентификатор процесса был бы 9263, например:

    $ ps -eaf|grep sleep
    saml      9263  5736  0 05:48 pts/1    00:00:00 sleep 10000
    
  2. Задание Backgrounded

    Когда программа является фоном, она может продолжить работать, не будучи непосредственно подключенным к оболочке от того, где она выполнялась.

    $ sleep 10000 &
    [1] 9370
    

    Здесь я запускаю программу sleep в течение 10 000 секунд. Амперсанд (&) в конце говорит оболочку фону это. Когда задания являются фоном they'reassigned задание #. В этом случае это было присвоенное задание № 1. 9370 идентификатор процесса.

    Мы можем узнать, какие задания выполняют использование jobs команда:

    $ jobs
    [1]+  Running                 sleep 10000 &
    

    Мы можем использовать задание # для действия на этот процесс или путем уничтожения его или возвращения его в передний план.

    $ kill %1
    
    $ fg
    -or-
    $ fg %1
    
  3. в и пакетные команды

    Существуют дополнительные места, где "числа" разоблачают в задании # способность. Запланированные задачи, которые стоятся в очереди с помощью команд at или batch также присвоенные номера.

    $ at -f mycrontest.sh  10pm tomorrow
    job 14 at Sun Jul  8 22:00:00 2007
    
  4. Вычислите кластеризирующиеся технологии

    Далее все еще, если Вы - сайт, использует кластеризирующуюся технологию, такую как Механизм Планировщика/Сетки Сетки, SLURM или другие, эти системы также имеют # задания, присвоил каждой отдельной задаче.

2
28.01.2020, 02:37
#!/bin/bash

cobol_program &
echo "The COBOL program is running in the background with PID: $!"

Посмотрите man страница для bash под 'Специальными Параметрами'

0
28.01.2020, 02:37

Теги

Похожие вопросы