Как написать скрипт для чтения пользовательского ввода, а затем запустить в фоновом режиме, даже закрывая терминал в TCSH?
Я ищу предложение стратегии. Я очень плохо знаком с сценариями оболочки Linux. Просто учу tcsh не более месяца. Мне нужен скрипт, который автоматически определяет, когда файлы результатов копируются с удаленного сервера в папку на удаленном компьютере, а затем запускают scp файлы обратно на мою рабочую станцию. Я не знаю заранее, когда работа закончится, поэтому в папке не может быть никаких файлов результатов в течение длительного времени. Я также не знаю, когда последний файл результатов будет скопирован обратно с удаленного сервера в папку (и, следовательно, может запустить scp).
Я попробовал crontab. Работать нормально, когда я думаю правильно, большую часть времени просто разочаровывает. Поэтому я попытался написать сценарий сам, и теперь он у меня есть. Я намерен создать сценарий, который будет служить мне и моим коллегам тоже. Чтобы использовать скрипт, пользователю сначала необходимо войти на удаленный компьютер вручную. Затем выполняйте сценарий только на удаленной машине. Сначала сценарий просит пользователя ввести имя своего локального компьютера и каталог, в котором он хочет сохранить файлы результатов. Затем скрипт будет просто зацикливаться, чтобы проверить, когда изменяется общее количество файлов. Когда он обнаружил это, что означает, что первый файл результатов начинает копироваться обратно с удаленного сервера, он снова зацикливается, чтобы определить, когда общий размер файлов в папке перестает изменяться, что означает, что последний файл результатов закончен, скопирован в папка. После этого он выполняет команду scp, чтобы отправить все файлы результатов на рабочую станцию пользователя в первоначально указанном каталоге.
Скрипт работает нормально, но я хочу, чтобы скрипт работал в фоновом режиме и работал сам по себе, даже если пользователь выходит из удаленной машины и закрывает терминал. А также я хочу позволить пользователю просто набрать в терминале простую команду для запуска скрипта, что-то вроде простого
./script.tcsh
Я пытался запустить скрипт по команде
./script.tcsh &
но не удается, потому что фоновый процесс не может принять пользовательский ввод.
Гугл и нашел то, что называется disown, но команда не найдена. Очевидно, удаленный компьютер и мой компьютер не поддерживают эту команду.
Попытка изменить сценарий, чтобы сначала принять ввод пользователя, а затем попытаться использовать
cat > temp_script.tcsh << EOF
{rest of my script}
EOF
а затем линия
./temp_script.tcsh &
попытаться создать другой файл сценария и использовать первый сценарий для запуска второго сценария в фоновом режиме. Также сбой, потому что cat не рассматривает переменную $ как текст, он заменяет ее значениями. У меня есть цикл foreach i(1 2), а команда cat просто сообщает об ошибке (отсутствует значение переменной i, которая является просто счетчиком в синтаксисе цикла foreach).
Я вне идеи в данный момент. Может ли кто-нибудь просветить меня какой-нибудь стратегией, которую я могу попробовать сам? Цель состоит в том, чтобы использовать только 1 файл сценария и запрашивать у пользователя 2 ввода (имя компьютера и каталог для сохранения), после чего больше не нужно взаимодействовать с пользователем или ждать, и он может работать даже при закрытии терминала.
Примечание: мне не нужен пароль для входа на удаленный компьютер и обратно.