Добрый день.
Нам задали написать 2 скрипта, они вроде и легкие, но для меня оказались неподьемной задачей. Помогите освоить
Скрипт 1:Архивирование, сжатие и копирование поддерева директорий на удаленную машину «в потоке» с последующим разжатием и разархивированием. В процессе копирования должен выводиться счетчик прогресса (сколько файлов/байт скопировано, сколько осталось, текущая скорость).
Скрипт 2: Написать скрипт, осуществляющий операции над файлами в несколько потоков одновременно; команда операции и ее аргументы передаются в скрипт в качестве параметров. Число потоков определяется значением n*<число процесcоров>.
Посмотри в сторону SpaceFM + вспомни/узнай особенности грамматики голованов. Это подсказка. Если не поможет, то может ну её, эту учёбу. Зачем терять время на мучения над противным. Надо получать удовольствие от мучений, иначе нет успеха.Мой препод по матану, ходил меж рядов, меж нас сопящих над зачётом и говорил: надо мучаться, надо. Зачёты потом ставил.
> Посмотри в сторону SpaceFM + вспомни/узнай особенности грамматики голованов. Это подсказка.
> Если не поможет, то может ну её, эту учёбу. Зачем терять
> время на мучения над противным. Надо получать удовольствие от мучений, иначе
> нет успеха.
> Мой препод по матану, ходил меж рядов, меж нас сопящих над зачётом
> и говорил: надо мучаться, надо. Зачёты потом ставил.твой препод прав.
толко нах тут GUI вываливать, в ответ на вопрос скриптования в командной оболочке?
PS
Ты явно еще не намучался (причем к форуму это никакого отношения не имеет)
> PS
> Ты явно еще не намучался (причем к форуму это никакого отношения не
> имеет)Я и сам мучался, и других мучал, и даже не глядя мимо пропускал, черкая отлы. А потом ещё думал над этим, других выслушивал. Некоторое время слежу за Вашими постами, при случае ( с чего бы это :) ). Есть проблема, среди прочих. Если человек не может пройти экзамен/зачёт, ему помогли посторонние и это считается хорошим стилем, то после этого начинается Чернобыль, Саяно-Шушенская ГЭС, победно утопленный Курск, по дурости убитые заложники, утонувшие буровые с погибшим коллективом, смытый дождём Крымск и 50+тыс. человек. В перечисленных ситуациях, если внимательно собрать инфу из общедоступных источников, среди принимавших решения тупо не было образованного человека. Диплом должен быть дипломом, а не прошлогодним календариком.
Я не советую Вам делать выводы о незнакомых людях и незнакомых предметах.
Вы, молодой человек, в поставленной программной задаче разбираетесь явно средне, судя по Вашим текстам в теме. Более того, не слишком догадливы или не слишком компенсируете это усидчивостью, судя по реакции. Склонны к эмоциональным всплескам (см. другие темы на форуме), что частично объясняет НЕусидчивость, скоропалительность в выводах и собственных мнениях.
> Добрый день.
> Нам задали написать 2 скрипта, они вроде и легкие, но для меня
> оказались неподьемной задачей. Помогите освоить
> Скрипт 1:Архивирование, сжатие и копирование поддерева директорий на удаленную машину
> «в потоке» с последующим разжатием и разархивированием. В процессе копирования
> должен выводиться счетчик прогресса (сколько файлов/байт скопировано, сколько осталось,
> текущая скорость).
> Скрипт 2: Написать скрипт, осуществляющий операции над файлами в несколько потоков одновременно;
> команда операции и ее аргументы передаются в скрипт в качестве параметров.
> Число потоков определяется значением n*<число процесcоров>.на чем писать?
>[оверквотинг удален]
>> Нам задали написать 2 скрипта, они вроде и легкие, но для меня
>> оказались неподьемной задачей. Помогите освоить
>> Скрипт 1:Архивирование, сжатие и копирование поддерева директорий на удаленную машину
>> «в потоке» с последующим разжатием и разархивированием. В процессе копирования
>> должен выводиться счетчик прогресса (сколько файлов/байт скопировано, сколько осталось,
>> текущая скорость).
>> Скрипт 2: Написать скрипт, осуществляющий операции над файлами в несколько потоков одновременно;
>> команда операции и ее аргументы передаются в скрипт в качестве параметров.
>> Число потоков определяется значением n*<число процесcоров>.
> на чем писать?bash, просто bash ^-^
Маленькая поправочка: число процессов а не процессоров. Не досмотрели
скрипт 1: доступ к удаленной машине по каким протоколам возможен?
скрипт 2: список команд, которые должны обрабатыватьсяPS
НЕТ в bash МНОГОПОТОЧНОСТИ (в том смысле, что Вы вкладывали в свой вопрос). Есть возможность запустить задачу в отдельном процессе (взаимодействие с этим процессом остается на Ваших плечах конечно же). Потоки в терминах bash - это просто источники/получатели данных, а не параллельная обработка запросов.В связи с этим встает очевидный вопрос - уточните Вашу исходную задачу (банально процитируйте ее, как Вам поставили)
PSS
Твою мать!!! стыдно перед Всеми!!! Заработался про потоки на другую задачу.... ( Сам же говорю, а мысли где-то далеко были. Еще раз прошу прощения у Всех. Банальный "поток" (в терминах автора) tar|gzip|ftp.
> скрипт 1: доступ к удаленной машине по каким протоколам возможен?
> скрипт 2: какие список допустимых (поддерживаемых операций)1: Преподаватель сказал как выберем (пусть фтп будет)
2: То же самое ( пускай будут какие - нибудь простые операции )
>> скрипт 1: доступ к удаленной машине по каким протоколам возможен?
>> скрипт 2: какие список допустимых (поддерживаемых операций)
> 1: Преподаватель сказал как выберем (пусть фтп будет)
> 2: То же самое ( пускай будут какие - нибудь простые операции
> )я предыдущий свой пост поправил. почитайте. Вы, видимо, ответили мне до последней редакции...
PS
ИМХО Вам стот изучить командную строку *nix (ограничений же в задании на вызов стандартных утилит нет)
>>> скрипт 1: доступ к удаленной машине по каким протоколам возможен?
>>> скрипт 2: какие список допустимых (поддерживаемых операций)
>> 1: Преподаватель сказал как выберем (пусть фтп будет)
>> 2: То же самое ( пускай будут какие - нибудь простые операции
>> )
> я предыдущий свой пост поправил. почитайте. Вы, видимо, ответили мне до последней
> редакции...
> PS
> ИМХО Вам стот изучить командную строку *nix (ограничений же в задании на
> вызов стандартных утилит нет)В задании было написано именно так как я написал в первом посте...не звонить же преподавателю в час ночи :)
А насчет многопоточности я думаю имеется разделение задачи на несколько процессов, скажем чтобы, к примеру, вывод из файла n-го числа строк производился одним процессом, остальных другим процессом. К сожалению большего сказать не могу, т.к. пока в этом плаваю. Завтра уточню обязательно у преподавателя
>[оверквотинг удален]
>>> 1: Преподаватель сказал как выберем (пусть фтп будет)
>>> 2: То же самое ( пускай будут какие - нибудь простые операции
>>> )
>> я предыдущий свой пост поправил. почитайте. Вы, видимо, ответили мне до последней
>> редакции...
>> PS
>> ИМХО Вам стот изучить командную строку *nix (ограничений же в задании на
>> вызов стандартных утилит нет)
> В задании было написано именно так как я написал в первом посте...не
> звонить же преподавателю в час ночи :)Не обязательно же было прямо сейчас отвечать. Подождите утра, уточните вопрос.
> А насчет многопоточности я думаю имеется разделение задачи на несколько процессов, скажем
> чтобы, к примеру, вывод из файла n-го числа строк производился одним
> процессом, остальных другим процессом. К сожалению большего сказать не могу, т.к.
> пока в этом плаваю. Завтра уточню обязательно у преподавателяЯ завел Вас немного не в ту сторону - прошу прощения. Немного поясню:
- процесс - это программа, которая последовательно исполняет инструкции, которые в ней написали
- многопоточность/потоки - это когда одна программа запускает НЕСКОЛЬКО задач одновременно, которые решаются в ОДНО И ТО ЖЕ ВРЕМЯ (несколько потоков), а не последовательно, как в предыдущем случае, и взаимодействуют м/ду собой
- к bash многопоточность (т.е параллельный запуск решения нескольких задач, в пределах одного процесса=программы) никакого отношения не имеет. Именно тут я увел Вас в сторону.
- для bash термин "поток" означает всего лишь входящие/исходящие данные.PS
ключевое слово для гугла "конвейер"
>> скрипт 1: доступ к удаленной машине по каким протоколам возможен?
>> скрипт 2: какие список допустимых (поддерживаемых операций)
> 1: Преподаватель сказал как выберем (пусть фтп будет)
> 2: То же самое ( пускай будут какие - нибудь простые операции
> )простейшая операция - получить файл с удаленного сервера : man wget.
читайте опции и несколько процессов из скрипта одновременно запустить не проблема (это проще чам средствами шела подобные задачи решать на прямую)
>>> скрипт 1: доступ к удаленной машине по каким протоколам возможен?
>>> скрипт 2: какие список допустимых (поддерживаемых операций)
>> 1: Преподаватель сказал как выберем (пусть фтп будет)
>> 2: То же самое ( пускай будут какие - нибудь простые операции
>> )
> простейшая операция - получить файл с удаленного сервера : man wget.
> читайте опции и несколько процессов из скрипта одновременно запустить не проблема (это
> проще чам средствами шела подобные задачи решать на прямую)как вариант - запуск несколько процессов удаления файлов и игнорирование отсутствия файлов.
-
Всем спасибо, сам разобрался и написал этих 2 скрипта :)
> Всем спасибо, сам разобрался и написал этих 2 скрипта :)Гонишь? Написал на баше ftp-клиент и архиватор???? =-о
>> Всем спасибо, сам разобрался и написал этих 2 скрипта :)
> Гонишь? Написал на баше ftp-клиент и архиватор???? =-оне - ну зачем так жестоко? ) там же не было ограничения на использование из баша других команд. весь загон делался на а-ля "многопоточность".
КАК? КАК ТЫ ИХ НАПИСАЛ???? Выложи их код пожалуйста
> Скрипт 1:Архивирование, сжатие и копирование поддерева директорий на удаленную машину
> «в потоке» с последующим разжатием и разархивированием. В процессе копирования
> должен выводиться счетчик прогресса (сколько файлов/байт скопировано, сколько осталось,
> текущая скорость).Первую половину задания делаем через tar gzip и ssh. Но как быть с прогресс-баром? Сторонние утилиты типо pv,bar использовать нельзя. Нужно выполнить задание одной строчкой. Есть у кого какие-либо идеи насчет этого проклятого однострочного прогресс-бара?
> Первую половину задания делаем через tar gzip и ssh. Но как быть
> с прогресс-баром? Сторонние утилиты типо pv,bar использовать нельзя. Нужно выполнить задание
> одной строчкой. Есть у кого какие-либо идеи насчет этого проклятого однострочного
> прогресс-бара?Профессор, наверное тот же :)
P.S. тут пора сооружать гитхаб :)
Один ответ на весь топик - rsync :)
А ответ оказывается в том, что нужно удаленно каждую секунду проверять размер файлов командами либо stat либо du, и основываясь на текущем размере вычислять скорость, то есть "тек. размер - предыдущ. размер = скорость байт/сек" и отсюда уже мастерить прогресс бар со скоростью, остатком, и сколько уже скопировано. Ну и плюс можно чекать кол-во файлов в удаленной папке, и выводить сколько скопировано.