Форум Зейского сообщества любителей ОС Linux и Unix

Тематические обсуждения *nix => Программы => Тема начата: Vena от Суббота, 05 Мая, 2012, 03:06:34

Название: Запуск скриптов в Linux
Отправлено: Vena от Суббота, 05 Мая, 2012, 03:06:34
В статье http://www.nixzeya.ru.net/wiki/Aria2 упоминается Скачивание файлов посредством скрипта. Я, так случилось, скриптами не пользовался. думаю не только я. Поэтому есть вопрос.
В начале скрипта указан "#!/bin/bash". Это, как я понимаю, место его расположения? О чём говорит 3 строка? ""/usr/bin/aria2c --dir=/temp/MyDownloads/aria"
Какое расширение нужно скрипту давать, и где его положить, (или как сказать arua2c что его надо пользовать)?
Спасибо.
Название: Re: Запуск скприптов в Linux
Отправлено: vovka от Суббота, 05 Мая, 2012, 04:23:51
Тему разделил, поскольку вопросы выходят за рамки обсуждения самой статьи, а больше относятся именно к скриптам

#!/bin/bash
- это путь к интерпретатору, который будет запускать скрипт в своём окружении. Существует много интерпретаторов, среди которых: sh, tsh, zsh 
Для скрипта не нужно расширение - достаточно установить права на исполнение и поместить в первую строку путь до интерпретатора. Операционная система увидит бит выполнения, подгрузит подоболочкой Bash, в подоболочке выполнит этот скрипт.
Обычно самописные скрипты сохраняются или в /home/$user/bin или /usr/local/bin , /usr/local/sbin  Для каждого конкретного дистрибутива - свой кодекс (свой свод правил что где сохранять). Я использую для самописных не системных скриптов каталог /home/$user/bin

/usr/bin/aria2c --dir=/temp/MyDownloads/aria --log=/temp/MyDownloads/aria/aria.log \
--max-concurrent-downloads=1 --continue=true --all-proxy=http://10.0.0.1:3128 \
--max-connection-per-server=4 --max-tries=10 --proxy-method=get \
--log-level=info --input-file=/temp/MyDownloads/aria/aria-list
3-я строка - это одна большая команда запуска /usr/bin/aria2c с перечислением параметров. Слэш "\" в данном случае делает перенос опций\команд на другую строку. Ну, опции немного описаны в исходной статье

Выполняется скрипт достаточно просто - в консоли набирается его путь и он начинает выполняться:
[user@comp ~]$ bin/aria-dlэто при условии что скрипт сохранён как  /home/$user/bin/aria-dl . Обращаю внимание на отсутствие слеша перед bin - мы уже в домашнем каталоге. Для останова жмём Ctrl+C. Альтернативный вариант запуска - через планировщик cron или anacron.
Название: Re: Запуск скприптов в Linux
Отправлено: vovka от Суббота, 05 Мая, 2012, 04:29:32
Кстати, на сервере лежит замечательная книжка по программированию скриптов:
ftp://ftp.zeya.org/pub/books/computers_and_IT/programming/bash/Advanced_Bash-Scripting_Guide.pdf

Возможно в нете есть её русский перевод.
Название: Re: Запуск скприптов в Linux
Отправлено: Vena от Суббота, 05 Мая, 2012, 04:35:22
Почитаем на досуге ;)
Я всё же немного не въехал, пардон :)
Значит скрипт в вашем примере имеет имя aria2c и лежит в /usr/bin/ , так? или нет.
Далее, как должна выглядеть команда для aria2c на использование этого скрипта?
aria2c /usr/bin/aria2c
Название: Re: Запуск скприптов в Linux
Отправлено: vovka от Суббота, 05 Мая, 2012, 04:44:05
Почитаем на досуге ;)
Я всё же немного не въехал, пардон :)
Значит скрипт в вашем примере имеет имя aria2c и лежит в /usr/bin/ , так? или нет.
Нет. Его обозвать можно как угодно и положить куда угодно, но сам скрипт запускает команду /usr/bin/aria2c

Далее, как должна выглядеть команда для aria2c на использование этого скрипта?
aria2c /usr/bin/aria2c
Программе aria2с не передаётся скрипт с командами! Это сам скрипт запускает aria2c с кучей параметров. В итоге иерархия процессов будет такая:
bash --> skript --> aria2c

Сама aria2c только подгружает список чего качать и пишет в лог.

Можно вообще не создавать скрипт, а запустить всё с консоли. Это выглядело бы так:
/usr/bin/aria2c --dir=/temp/MyDownloads/aria --log=/temp/MyDownloads/aria/aria.log --max-concurrent-downloads=1 --continue=true --all-proxy=http://10.0.0.1:3128 --max-connection-per-server=4 --max-tries=10 --proxy-method=get --log-level=info --input-file=/temp/MyDownloads/aria/aria-list
Но так не совсем удобно  - проще в файл /temp/MyDownloads/aria/aria-list накидать список ссылок и в консоли ввести только имя нашего скрипта.
Название: Re: Запуск скприптов в Linux
Отправлено: Vena от Суббота, 05 Мая, 2012, 04:48:49
Вроде понятно, чечаза попробую :)