Идентификатор процесса печати (PID) экземпляра Matlab

В контексте Unix это действительно известно как "здесь документ". Я полагаю, что конструкция "heredoc" прибывает из PHP, Perl и других языков сценариев, и для сценариев оболочки я был бы склонен придерживаться со "здесь документом".

3
16.05.2013, 17:01
3 ответа

В конце кажется, что команда Matlab впоследствии охватывает другие процессы (JVM) при вызове. Однако существует недокументированная функция feature это возвращает PID рабочего процесса Matlab:

nohup time matlabR2012b -nodesktop -nosplash -nodisplay \
  -r "fprintf('PID: %s\n', num2str(feature('getpid')));run $1; exit" &> "$2" &
1
27.01.2020, 21:20

Существует несколько способов отметить экземпляры процесса. Можно сделать это через название команды в списке процессов (например. matlab_1 вместо matlab) или через переменную среды. Используя PID возможно, также. Просто необходимо произвести его прежде matlab запускается:

nohup time bash -c 'echo $$; exec matlab -some_parameters -r "run '"$1"';exit"' &>> "$2" &

Редактирование 1:

$$ PID оболочки, но из-за exec matlab обработайте просто перезаписывает процесс оболочки, т.е. PID не изменяется. exec средства, что в конце названной программы нет никакого перехода назад к оболочке; потому что нет никакой оболочки больше.

Для объяснения других опций я упомянул, см. мой ответ на этот вопрос.

3
27.01.2020, 21:20
  • 1
    Используя стратегию $$, разве это не дало бы мне pid оболочки вместо pid процесса Matlab? –  John Manak 16.05.2013, 15:52
  • 2
    Вы могли также уточнить немного другие две опции?Спасибо! –  John Manak 16.05.2013, 15:57
  • 3
    @JohnManak Видит мое редактирование. –  Hauke Laging 16.05.2013, 16:07
  • 4
    Благодарит, но к сожалению числа все еще немного отличаются. Я думал, что это мог бы быть Matlab, охватывающий другой процесс, таким образом, я изменил параметры на -r "$1;exit" но это не помогает. –  John Manak 16.05.2013, 16:29
  • 5
    @JohnManak я сделал ошибку заключения в кавычки. bash видит $1 в его команде, но не имеет параметров (приводящий к -r run ;exit). Попробуйте исправленную версию. Можно использовать strace -f matlab ... для проверки, ли matlab ветвления. –  Hauke Laging 16.05.2013, 16:38

Существует способ получить pid, но установка его как первая строка могла быть немного хитрой с тех пор, как только процесс запускается, это начнет писать в файл журнала.

При предположении, что цель здесь не состоит в том, чтобы установить первую строку как pid, но знать pid для уничтожения процесса, как только Вы сделали nohup, можно сохранить pid команды в изодромном с предварением файле и уничтожить использование его.

nohup some_command some_parameters &
echo $! > matlab_program_1.pid
kill `cat matlab_program_1.pid`
0
27.01.2020, 21:20
  • 1
    , Который упрощен. Если Вы делаете some_command в time matlab Вы получили бы идентификатор процесса time от $! не matlab –  Anthon 16.05.2013, 15:46

Теги

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