Задание (дословно из LMS)
Работаем в Fabrice Bellard jslinux или на учебном сервере в Вашей директории в папке opt:
- Создайте скрипт sleeper.sh, который будет 10 раз с интервалом в 5 секунд писать дату в формате HH:MM:SS и количество процессов одним числом.
- Уменьшите или уберите временной интервал (который нам дает sleep), используя vi или nano, закомментировав строку или поменяв значение sleep.
- С помощью скрипта запишите в файл информацию о процессоре.
- С помощью скрипта запишите в файл информацию об операционной системе, но отфильтруйте информацию так, чтобы осталось только имя (NAME=Alpine Linux) — или другое имя, если работаете на сервере.
- Выполните прошлое действие, но так, чтобы слово NAME= не осталось, а было только имя в чистом виде (Alpine).
- С помощью скрипта создайте 50 файлов с расширением txt и именами от 50.txt до 100.txt.
- Пришлите файл скрипта.
Вот что вам понадобится для реализации всего этого:
sleep
touch
ps -ef
date +"%H:%M:%S"
cat /etc/os-release
grep
awk '{print$НОМЕР_СТОЛБЦА}'
cat /proc/cpuinfo
Если удобно, то вот однострочник, создающий простейший скрипт, который надо будет редактировать:
echo -e '#!/bin/bash\n date\n echo "it works!"' > /tmp/script.sh
Подготовка окружения
Вариант А — jslinux (в браузере)
- Открыть bellard.org/jslinux → выбрать Alpine Linux
- Дождаться загрузки (1–2 мин)
- Создать рабочую директорию:
mkdir -p /opt/homework24 && cd /opt/homework24
Вариант Б — учебный сервер
- Подключиться:
ssh user@linux.itcareerhub.de - Перейти в рабочую директорию:
cd /opt/ГРУППА
Пошаговое решение
Шаг 1 — Создать скрипт sleeper.sh
# /opt/homework24/sleeper.sh
#!/bin/bash
for i in {1..10}; do
date +"%H:%M:%S"
ps -ef | wc -l
sleep 5
done
# Сделать исполняемым и запустить
chmod +x sleeper.sh
./sleeper.sh
Скрипт выведет 10 раз (с паузой 5 сек) строку вида:
14:23:01
87
14:23:06
87
Шаг 2 — Убрать/уменьшить sleep
Открыть скрипт в vi:
vi sleeper.sh
Найти строку sleep 5 и:
- Закомментировать: добавить
#в начало строки →# sleep 5 - Или уменьшить: изменить
5на1→sleep 1
В vi: нажать i (режим вставки), изменить, нажать Esc, ввести :wq, нажать Enter.
В nano: nano sleeper.sh → изменить → Ctrl+O (сохранить) → Ctrl+X (выйти).
Шаг 3 — Записать информацию о процессоре
# /opt/homework24/sleeper.sh (добавить в конец)
# Задание 3: информация о процессоре
cat /proc/cpuinfo > cpuinfo.txt
echo "CPU info saved to cpuinfo.txt"
Шаг 4 — Имя ОС с NAME=
# Задание 4: имя ОС, фильтровать до NAME=...
cat /etc/os-release | grep "PRETTY_NAME"
# Вывод: PRETTY_NAME="Alpine Linux v3.18"
Записать в файл:
cat /etc/os-release | grep "PRETTY_NAME" > os_info.txt
Шаг 5 — Только имя ОС без NAME=
# Задание 5: только имя без PRETTY_NAME= и кавычек
cat /etc/os-release | grep "PRETTY_NAME" | awk -F'"' '{print $2}'
# Вывод: Alpine Linux v3.18
Объяснение: awk -F'"' '{print $2}' — разделитель — кавычка ", второй элемент между кавычками — это и есть имя ОС.
Шаг 6 — Создать 50 файлов 50.txt–100.txt
# Задание 6: файлы с именами 50.txt, 51.txt, ..., 100.txt
for j in {50..100}; do
touch ${j}.txt
done
ls *.txt | head -5 # проверка
# /opt/homework24/sleeper.sh
#!/bin/bash
# Задание 1: 10 раз вывести дату HH:MM:SS и количество процессов
for i in {1..10}; do
date +"%H:%M:%S"
ps -ef | wc -l
sleep 5 # Задание 2: закомментировать или уменьшить
done
# Задание 3: информация о процессоре
cat /proc/cpuinfo > cpuinfo.txt
echo "CPU info saved to cpuinfo.txt"
# Задание 4: имя ОС (с NAME=...)
cat /etc/os-release | grep "PRETTY_NAME" > os_name.txt
echo "OS name (with prefix) saved to os_name.txt"
# Задание 5: только имя ОС (без NAME=...)
cat /etc/os-release | grep "PRETTY_NAME" | awk -F'"' '{print $2}' > os_name_clean.txt
echo "Clean OS name saved to os_name_clean.txt"
# Задание 6: создать 50 файлов 50.txt–100.txt
for j in {50..100}; do
touch ${j}.txt
done
echo "Created $(ls *.txt | wc -l) txt files"
Проверка выполнения
# Проверить количество txt-файлов (должно быть 51: от 50 до 100 включительно)
ls *.txt | wc -l
# Проверить файлы с информацией
cat cpuinfo.txt | head -5
cat os_name.txt
cat os_name_clean.txt
# Запустить скрипт ещё раз (уже без sleep)
./sleeper.sh
Связь с теорией и примерами
- Цикл
for i in {1..10}— Теория: основы цикла date +"%H:%M:%S"— Справочник: команда dateps -ef | wc -l— Примеры: системный отчётawk -F'"'— Теория: задача 2 (отчёт)