Здравствуйте!
Небходимо выполнить следующее задание:
Разработать команду Pt1 (скрипт), расширяющую функциональные возможности системы Unix (приме-нить программный канал - конвейер).
Pt1 - определить количество процессов, которые запущены с ука-занного терминала и используют определенное количество оперативной памяти.
Разработать команду Pt2 (скрипт), расширяющую функциональные возможности системы Unix (применить программный канал - конвейер).
Pt2 - определить количество процессов, которые запу-щены с указанного терминала и используют определенное количество процессорного времени.
Прошу Вас помочь!
UNIX скрипт
Модератор: Модераторы разделов
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: UNIX скрипт
1. Расскажите, каков Ваш уровень знаний в UNIX.
2. Как Вы поняли задачу.
3. Какие были/есть идеи по её решению (хотя бы примерно).
4. Что пробовали сделать (покажите код).
5. Что из опробованного получилось/не получилось.
6. Что в процессе решения оказалось сложным/непонятным.
Одним словом, необходимо Ваше участие в решении задачи. Тогда Вам помогут.
В противном случае, это будет означать, что Вам нужно готовое решение, то есть задачу нужно решить вместо Вас, а это совсем другое дело. Это вряд ли кто-то будет делать. И даже если возьмется какой-то энтузиаст, он ничего не сможет объяснить Вам, не зная Вашего уровня подготовки.
2. Как Вы поняли задачу.
3. Какие были/есть идеи по её решению (хотя бы примерно).
4. Что пробовали сделать (покажите код).
5. Что из опробованного получилось/не получилось.
6. Что в процессе решения оказалось сложным/непонятным.
Одним словом, необходимо Ваше участие в решении задачи. Тогда Вам помогут.
В противном случае, это будет означать, что Вам нужно готовое решение, то есть задачу нужно решить вместо Вас, а это совсем другое дело. Это вряд ли кто-то будет делать. И даже если возьмется какой-то энтузиаст, он ничего не сможет объяснить Вам, не зная Вашего уровня подготовки.
Спасибо сказали:
-
- Сообщения: 2
Re: UNIX скрипт
Hephaestus писал(а): ↑21.06.2015 23:021. Расскажите, каков Ваш уровень знаний в UNIX.
2. Как Вы поняли задачу.
3. Какие были/есть идеи по её решению (хотя бы примерно).
4. Что пробовали сделать (покажите код).
5. Что из опробованного получилось/не получилось.
6. Что в процессе решения оказалось сложным/непонятным.
Одним словом, необходимо Ваше участие в решении задачи. Тогда Вам помогут.
В противном случае, это будет означать, что Вам нужно готовое решение, то есть задачу нужно решить вместо Вас, а это совсем другое дело. Это вряд ли кто-то будет делать. И даже если возьмется какой-то энтузиаст, он ничего не сможет объяснить Вам, не зная Вашего уровня подготовки.
К сожалению с командами терминала UNIX я мало знаком.
Это вопрос в билете один единственный на тему UNIX, хотелось бы его решить.
Знаю о команде ps. Но как сделать фильтр по оперативной памяти или процессорному времени - без понятия.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: UNIX скрипт
Ну, например, команда ps aux покажет много всякой дополнительной информации.steamprodz писал(а): ↑21.06.2015 23:25Знаю о команде ps. Но как сделать фильтр по оперативной памяти или процессорному времени - без понятия.
Выбрать из этого богатства нужное поможет grep - будут выбраны строки. Подсчитать количество этих строк можно с помощью wc -l. В условиях Ваших задач предписано использование конвейера. Это значит, что вывод одной программы подаётся на вход другой программы. Конвейер обозначается вертикальным слешем | . Например: ps aux | grep "что ищем" | wc -l. Вывод программы ps подаётся на вход программы grep, которая ищет, что нужно, далее найденное подаётся на вход команды wc, которая в нашем случае подсчитывает строки. Вместо "что ищем" подставляется параметр согласно условию задачи. Ну, вот вроде, скелет решения есть. Однако у Вас две задачи, которые решаются одинаково, разница только в параметрах.
Параметров у Вас будет два: терминал, который и подставляется вместо "что ищем" и конкретно параметр поиска (оперативная память или процессорное время - это четвертая и третья колонка соответственно в выводе ps aux). Нужную колонку можно отобрать с помощью awk, далее вывод передать ещё одному grep. В итоге для памяти получается что-то вроде: ps aux | grep "указанный терминал" | awk '{print $3}' | grep "указанное значение памяти" | wc -l
Далее, нужно это всё оформить в виде скрипта, который и будет принимать на вход параметр и передавать его указанным командам. Команды в скрипте вызываются точно так же, как и из командной строки, с поправкой на параметры и имена переменных.
Как писать эти самые скрипты довольно хорошо описано здесь. Настоятельно рекомендую ознакомиться. Хотя бы "по диагонали". Я понимаю, что Вы, возможно, вовсе не технарь, а совсем даже художник, но раз есть задание, вникнуть всё-таки придётся. А ежели Вы всё-таки технарь - тем более.
Это всего лишь основная идея, решение на скорую руку, буквально на ходу. Вроде работает, если я где-то наврал, или есть лучший вариант, коллеги меня поправят (может быть).
Ну, а нюансы - это уж Вы сами...
Вам остаётся вникнуть в суть здесь изложенного и составить скрипт.
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: UNIX скрипт
при "указанное значение памяти" == 1 результат может быть весьма неожиданным (:
в 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.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: UNIX скрипт
Сомневаюсь. Я посмотрел ман.
ps отфильтрует по tty и выведет нужную колонку - да, но ведь из неё ещё надо выбрать по заданному значению CPU/MEM.
Так что совсем без grep, боюсь, не получится.
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: UNIX скрипт
Я имел в виду обойтись без 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.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: UNIX скрипт
Ну, мой вариант решения хоть и получился нерациоральным, но, думаю, ТС'у не повредит.