Если я понимаю правильно, Вы хотите перезаписать каждый входной файл с результатом convert
на том входном файле. Если так, попробуйте это:
find . -type f | while IFS= read -r file; do
./convert "$file" > /tmp/foo.tmp && mv /tmp/foo.tmp "$file";
done
Как я понимаю вашу проблему, вы хотите запустить демона на удаленной машине, и когда GNU Parallel выходит, демон должен продолжить работу.
Для этого вы должны использовать утилиту, которая позволяет команде продолжать работу даже после выхода из системы. Я знаю 3 таких инструмента:
nohup
screen
tmux
Так что используйте их в своей функции:
cd /dir/${module}/;nohup sh stop_${module}.sh;nohup sh start_${module}.sh;sleep 10
Попробуйте 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'
), чтобы убедиться, что она работает.