UNIX скрипт

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
steamprodz
Сообщения: 2

UNIX скрипт

Сообщение steamprodz »

Здравствуйте!
Небходимо выполнить следующее задание:

Разработать команду Pt1 (скрипт), расширяющую функциональные возможности системы Unix (приме-нить программный канал - конвейер).
Pt1 - определить количество процессов, которые запущены с ука-занного терминала и используют определенное количество оперативной памяти.


Разработать команду Pt2 (скрипт), расширяющую функциональные возможности системы Unix (применить программный канал - конвейер).
Pt2 - определить количество процессов, которые запу-щены с указанного терминала и используют определенное количество процессорного времени.


Прошу Вас помочь!
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: UNIX скрипт

Сообщение Hephaestus »

1. Расскажите, каков Ваш уровень знаний в UNIX.
2. Как Вы поняли задачу.
3. Какие были/есть идеи по её решению (хотя бы примерно).
4. Что пробовали сделать (покажите код).
5. Что из опробованного получилось/не получилось.
6. Что в процессе решения оказалось сложным/непонятным.

Одним словом, необходимо Ваше участие в решении задачи. Тогда Вам помогут.

В противном случае, это будет означать, что Вам нужно готовое решение, то есть задачу нужно решить вместо Вас, а это совсем другое дело. Это вряд ли кто-то будет делать. И даже если возьмется какой-то энтузиаст, он ничего не сможет объяснить Вам, не зная Вашего уровня подготовки.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
steamprodz
Сообщения: 2

Re: UNIX скрипт

Сообщение steamprodz »

Hephaestus писал(а):
21.06.2015 23:02
1. Расскажите, каков Ваш уровень знаний в UNIX.
2. Как Вы поняли задачу.
3. Какие были/есть идеи по её решению (хотя бы примерно).
4. Что пробовали сделать (покажите код).
5. Что из опробованного получилось/не получилось.
6. Что в процессе решения оказалось сложным/непонятным.

Одним словом, необходимо Ваше участие в решении задачи. Тогда Вам помогут.

В противном случае, это будет означать, что Вам нужно готовое решение, то есть задачу нужно решить вместо Вас, а это совсем другое дело. Это вряд ли кто-то будет делать. И даже если возьмется какой-то энтузиаст, он ничего не сможет объяснить Вам, не зная Вашего уровня подготовки.


К сожалению с командами терминала UNIX я мало знаком.
Это вопрос в билете один единственный на тему UNIX, хотелось бы его решить.
Знаю о команде ps. Но как сделать фильтр по оперативной памяти или процессорному времени - без понятия.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: UNIX скрипт

Сообщение Hephaestus »

steamprodz писал(а):
21.06.2015 23:25
Знаю о команде ps. Но как сделать фильтр по оперативной памяти или процессорному времени - без понятия.
Ну, например, команда ps aux покажет много всякой дополнительной информации.
Выбрать из этого богатства нужное поможет grep - будут выбраны строки. Подсчитать количество этих строк можно с помощью wc -l. В условиях Ваших задач предписано использование конвейера. Это значит, что вывод одной программы подаётся на вход другой программы. Конвейер обозначается вертикальным слешем | . Например: ps aux | grep "что ищем" | wc -l. Вывод программы ps подаётся на вход программы grep, которая ищет, что нужно, далее найденное подаётся на вход команды wc, которая в нашем случае подсчитывает строки. Вместо "что ищем" подставляется параметр согласно условию задачи. Ну, вот вроде, скелет решения есть. Однако у Вас две задачи, которые решаются одинаково, разница только в параметрах.
Параметров у Вас будет два: терминал, который и подставляется вместо "что ищем" и конкретно параметр поиска (оперативная память или процессорное время - это четвертая и третья колонка соответственно в выводе ps aux). Нужную колонку можно отобрать с помощью awk, далее вывод передать ещё одному grep. В итоге для памяти получается что-то вроде: ps aux | grep "указанный терминал" | awk '{print $3}' | grep "указанное значение памяти" | wc -l

Далее, нужно это всё оформить в виде скрипта, который и будет принимать на вход параметр и передавать его указанным командам. Команды в скрипте вызываются точно так же, как и из командной строки, с поправкой на параметры и имена переменных.
Как писать эти самые скрипты довольно хорошо описано здесь. Настоятельно рекомендую ознакомиться. Хотя бы "по диагонали". Я понимаю, что Вы, возможно, вовсе не технарь, а совсем даже художник, но раз есть задание, вникнуть всё-таки придётся. А ежели Вы всё-таки технарь - тем более.

Это всего лишь основная идея, решение на скорую руку, буквально на ходу. Вроде работает, если я где-то наврал, или есть лучший вариант, коллеги меня поправят (может быть).
Ну, а нюансы - это уж Вы сами...
Вам остаётся вникнуть в суть здесь изложенного и составить скрипт.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: UNIX скрипт

Сообщение SLEDopit »

Hephaestus писал(а):
22.06.2015 00:10
grep "указанное значение памяти"
при "указанное значение памяти" == 1 результат может быть весьма неожиданным (:
Hephaestus писал(а):
22.06.2015 00:10
grep "указанный терминал"
в man ps можно найти более изящное решение. без grep'a вообще.
да и awk не нужен. ps вполне может выдать только нужное значение (в данном случае память) без лишней информации.

зы. уважаемый ТС, вы пробовали хотя бы открыть man страничку ps?
там есть ответы на все ваши вопросы. и как фильтровать по tty/pts, и как выводить определённые сведения без лишней информации.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: UNIX скрипт

Сообщение Hephaestus »

SLEDopit писал(а):
22.06.2015 00:40
в man ps можно найти более изящное решение. без grep'a вообще.
Сомневаюсь. Я посмотрел ман.
ps отфильтрует по tty и выведет нужную колонку - да, но ведь из неё ещё надо выбрать по заданному значению CPU/MEM.
Так что совсем без grep, боюсь, не получится.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: UNIX скрипт

Сообщение SLEDopit »

Hephaestus писал(а):
22.06.2015 07:13
Сомневаюсь. Я посмотрел ман.
Я имел в виду обойтись без grep'a на шаге фильтрации по конкретному tty.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: UNIX скрипт

Сообщение Hephaestus »

Ну, мой вариант решения хоть и получился нерациоральным, но, думаю, ТС'у не повредит.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Ответить