2013-03-28 6 views
0

У меня есть сценарий, который передает некоторые файлы через ssh. Обычно я запускаю скрипт, и как только я уверен, что он работает нормально, я останавливаю его, используя CTRL-Z, затем запустите его в фоновом режиме с помощью bg.Как безопасно перемещать программу на задний план с помощью CTRL-Z и bg?

> ./download-script.sh 
Downloading... 
Got file foobar.txt 
Got file baz.txt 
Downloading bash.txt (42%) 
[2]+ Stopped  download-script.sh 
> bg 
[1]+ download-script.sh & 
> 

Как это безопасно? Кажется, что сервер, отправляющий файл, не знает, ждать, пока мой процесс вернется в сеть, не так ли?

Что делать, если я ждал час, а затем возобновил сценарий в фоновом режиме, продолжил бы он, где он остановился?

В моем примере используется передача файла ssh, но это становится для меня проблемой, когда мой скрипт взаимодействует с большинством ресурсов.

ответ

1

Буферы ввода-вывода помогут ему выдержать небольшую задержку (т. Е. Он не будет зависеть, если вы приостановите выполнение скрипта/команды всего на несколько секунд, но больше нескольких секунд, и я думаю, что вы, вероятно, сталкиваются с другими проблемами: таймауты TCP/UDP между источником и получателем? Тайм-ауты ввода-вывода? (например: слишком длинный для ввода пароля и т. д.)

Если у вас есть только «локальные» вещи и нет тайм-аута, встроенные в команды вы используете: например, если вы:

tar cvf something.tar /path/to/something 

ctrl-z, а затем его, а затем bg (пробуждаться и отправить на фоне) или fg (чтобы проснуться и отправить на передний план): он будет работать, даже если вы подождете время.

ОДНАКО в то же время у вас есть больше шансов, один из файла, тары-й изд быть изменен ...

Или ваша оболочка может иметь АУТ/TMOUT делает остановки раньше.

Или (по любой другой причине, на самом деле: сила, ваша кошка топтать CTRL + d выхода из оболочки, и т.д.)

IOW: вы можете, если что-то не полагается на это время «быстро».