Когда GNU параллелен exit,my программе, также перестали работать

Если я понимаю правильно, Вы хотите перезаписать каждый входной файл с результатом convert на том входном файле. Если так, попробуйте это:

find . -type f | while IFS= read -r file; do
  ./convert "$file" > /tmp/foo.tmp && mv /tmp/foo.tmp "$file";
done
3
25.06.2015, 09:00
2 ответа

Как я понимаю вашу проблему, вы хотите запустить демона на удаленной машине, и когда GNU Parallel выходит, демон должен продолжить работу.

Для этого вы должны использовать утилиту, которая позволяет команде продолжать работу даже после выхода из системы. Я знаю 3 таких инструмента:

nohup
screen
tmux

Так что используйте их в своей функции:

    cd /dir/${module}/;nohup sh stop_${module}.sh;nohup sh start_${module}.sh;sleep 10
1
27.01.2020, 21:28

Попробуйте nohup sh "start_${module}.sh" &:

#!/bin/bash

function_A () {
        local module=$1
        set -x
        cd "/dir/${module}/"
        sh "stop_${module}.sh"
        nohup sh "start_${module}.sh" &
        sleep 10
}
export -f function_A

parallel --tag --onall --env function_A -S my_host function_A ::: my_program

Команда nohup приведет к тому, что лежащий в основе скрипт не выйдет при выходе из оболочки, например, во время выхода из системы. &" сразу же сделает процесс фоновым. Также, убедитесь, что команда "start_${module}.sh" работает неактивно; например, попробуйте запустить ее как sh -c 'sh start_${module}.sh'), чтобы убедиться, что она работает.

1
27.01.2020, 21:28

Теги

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