2013-01-11 3 views
0

Я бегу два теста на удаленном сервере, вот команда, которую я использовал несколько часов назад:Как переключить последовательность задач на задний план?

% ./test1.sh; ./test2.sh 

Два теста должны запустить один за one.If второй бежит перед первым Завершает, все будет разрушено, и мне придется перезапустить всю процедуру.

Дилемма заключается в том, что эти две задачи стоят слишком много часов для завершения, и когда я готов выйти на сервер и дождаться результата. Я не знаю, как переключить их обоих на задний план ... Если я использую Ctrl + Z, только первая задача будет приостановлена, а вторая начнет ничего полезного при уничтожении текущих данных.

Можно ли переключить оба из них на фон, сохраняя их заказы? На самом деле я должен сделать эти две задачи в той же группе процессов, что и (./test1.sh; ./test2.sh) &, но, к сожалению, первый тест запустил несколько часов, и очень жаль, чтобы перезапустить тесты.

Опция заключается в том, чтобы убить второй тест до его запуска, но есть ли какой-либо механизм, чтобы справиться с этим?

ответ

1

Сначала переименовать ./test2.sh в ./test3.sh. Затем выполните [CTRL+Z], а затем bg и disown -h. Затем сохраните этот скрипт (test4.sh):

while :; do 
    sleep 5; 
    pgrep -f test1.sh &> /dev/null 
    if [ $? -ne 0 ]; then 
    nohup ./test3.sh & 
    break 
    fi 
done 

затем сделать: nohup ./test4.sh &.

и вы можете выйти.

+0

О, переименование ... Спасибо, perreal! – sleepsort

0

Во-первых, screen или tmux ваши друзья здесь, если вы еще не работаете с ними (они упрощают работу на удаленной машине на порядок проще).

Чтобы использовать условное последовательное выполнение вы можете написать:

./test1.sh && ./test2.sh 

, который будет выполнять только test2.sh если таковые test1.sh возвращается с 0 (обычно это означает: нет ошибки). Пример:

$ true && echo "first command was successful" 
first command was successful 

$ ! true && echo "ain't gonna happen" 

Больше на операторов управления: http://www.humbug.in/docs/the-linux-training-book/ch08s01.html

+0

Спасибо, miku, эти два теста работают внутри сеанса tmux, будет ли это более полезно? Поскольку первая задача выполнялась ** несколько часов **, я боюсь перезапустить их, используя новую команду, которая требует больше времени. – sleepsort

Смежные вопросы