Слайд 1Введение в ОС LINUX
© Варфоломеев В.А., МИИТ, кафедра АСУ
Слайд 2Введение в ОС LINUX
Linus Torvalds
Слайд 3Введение в ОС LINUX
Мир ОС Unix
AIX (IBM)
HP-UX (HP)
IRIX (SGI)
Solaris (Sun)
SunOS
(Sun)
SCO UNIX (Microsoft)
Linux
Free BSD
Стандарты POSIX → x Open (XPG):
Унификация требований к интерфейсу пользователя shell
Унификация системных вызовов (язык С/C++)
Клоны: System V (Sun), OSF1 (IBM, HP), BSD
Слайд 4Введение в ОС LINUX
Мир ОС Linux
Ubuntu
openSUSE
Red Hat
Mandriva
Slackware
Debian)
Fedora
ALTLinux, ASPLinux, Runto, Linux
XP, …
GNU General Public License (Универсальная общественная лицензия GNU) — лицензия на свободное программное обеспечение
Предоставляет пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы, а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права.
Слайд 5Введение в ОС LINUX
Организация файловой системы
Файловая система ОС LINUX имеет иерархическую
(древовидную)
структуру.
корневой каталог(/)
каталог4
каталог1
каталог2
каталог3
каталог5
каталог6
файл1
файл3
файл4
файл2
файл7
файл5
файл6
Слайд 6Введение в ОС LINUX
Физическая файловая система
Имя Индекс
file1
1234
file2 2345
dir1 0256
Каталог
Атрибуты файла Указатели блоков памяти
= = = = = = = = = A1 A2 ... A12 A13 A14 A15
Таблица индексных дескрипторов
Д
Д
Д
У
У
У
У
...
Д
...
...
Д
Д
...
Д
Д
...
Д
Слайд 7Введение в ОС LINUX
Типы файлов LINUX
Обычный файл (-)
Каталог (d)
Файл – устройство
Символьное (c)
Блочное (b)
Именованный канал FIFO (p)
Сокет (s)
Ссылка (l)
Слайд 8Введение в ОС LINUX
Системные каталоги LINUX
/
bin
dev
etc
lib
mnt
sbin
tmp
usr
boot
- корневой каталог
- команды и утилиты
LINUX
- специальные файлы, представляющие устройства ввода-вывода
- утилиты администратора системы и конфигурационные файлы
- важнейшие библиотеки программ
- подключаемые (или монтируемые) файловые системы
важные системные программы, используемые для
администрирования
- временные файлы
- файлы загрузки операционной системы
каталоги и обычные файлы, содержащие информацию,
привлекаемую при решении задач пользователя
home
домашние каталоги зарегистрированных пользователей
Слайд 9Введение в ОС LINUX
Имена файлов LINUX
В качестве имени файла может
использоваться последовательность
из букв, цифр, знака подчеркивания и точки (POSIX).
Длина имени файла колеблется от 14 до 256 символ в зависимости
от системы.
В ОС LINUX прописные и строчные символы в именах файлов
воспринимаются как различные, поэтому file, File, FILE – это три
различных файла.
Файлы, начинающиеся с символа “.” считаются скрытыми и
зачастую не отображаются при просмотре каталога без особой
команды.
Для указания группы файлов могут быть использованы символы шаблона.
Слайд 10Введение в ОС LINUX
Абсолютные и относительные имена файлов
Абсолютное имя файла
(до 1023 символов):
/u/u01/doc/pismo
Относительное имя файла:
pismo ($PWD=/u/u01/doc/)
doc/pismo ($PWD=/u/u01/)
../u01/doc/pismo ($PWD=/u/u02/)
~/doc/pismo
/ – корневой каталог
. – текущий (рабочий) каталог (PWD)
.. – родительский каталог
~ – домашний каталог (HOME)
Слайд 11Введение в ОС LINUX
Шаблоны имен файлов
Символы шаблона:
* - заменяет любое количество
произвольных символов, в том числе и отсутствие символов:
b* → b, bob, b805, b.txt
*/*.c → prg/hello.c,prg/calc.c, lib/win.c
? – заменяет один любой символ:
b? → b1, bb, bx, b#
???/.* → usr/.sh_history, etc/.profile
[…] – определяет множество символов, из которых может быть выбран только один:
a[cChH] → ac или aC или ah или aH
[a-z]file → afile, bfile, … , zfile
[!0-9]* → afile3, rc, .file но не 4ac, 999, 7sht
Слайд 12Введение в ОС LINUX
Пользователи системы LINUX
Все пользователи должны быть зарегистрированы в
системе и для
них установлены определенные права. Каждый пользователь
имеет:
уникальное регистрационное имя (login name)
идентификатор пользователя (UID)
пароль (password)
домашний каталог (user directory)
командный интерпретатор для поддержки сеанса работы (shell)
Все пользователи объединяются в группы. Каждая группа имеет:
уникальное имя (group name)
идентификатор группы (GID)
/etc/passwd - сведения обо всех зарегистрированных пользователях
/etc/group - сведения обо всех зарегистрированных группах
Слайд 13Введение в ОС LINUX
Пользовательский интерфейс LINUX
LINUX поддерживает два типа пользовательских интерфейсов.
Базовый
тип командный интерпретатор shell, использующий текстовый алфавитно-цифровой терминал. Тип интерфейса – командная строка.
sh – Bourne shell
csh – C-shell
ksh – Korn-shell
bash – Bourne Again shell
Графический интерфейс – x Window.
Типы графических оболочек: Gnome, KDE.
Слайд 14Введение в ОС LINUX
Пользовательская среда shell
В рамках любого из интерпретаторов можно:
использовать набор команд (встроенные и внешние)
создавать и исполнять командные процедуры – скрипты
запускать на выполнение любые программы
осуществлять настройку терминала и параметров среды
(окружения) пользователя
Каждый раз, когда открывается пользовательский сеанс,
автоматически запускаются два файла:
profile
bashes
Слайд 15Введение в ОС LINUX
Обобщенный формат команд shell
имя_команды – ключевое слово, определяющее
действие команды: cd, cat, find, set
ключ (опция) – символ, задающий режим или способ выполнения команды (предваряется знаком “-”):
-l, -E, -alEgF
аргументы – список параметров, указывающих на обрабатываемые объекты или задающих исходные данные
При необходимости разделить ключи и аргументы следует указать «двойной минус» --
man – команда вывода страниц руководства по командам shell
имя_команды [-ключи] [аргументы…]
Слайд 16Введение в ОС LINUX
Работа с каталогами
Показать текущий каталог (pwd)
pwd
Изменить
текущий каталог (cd)
cd [имя_каталога]
$ cd
$ pwd
/u/u01
$ cd pic
$ pwd
/u/u01/pic
$ cd ..
$ pwd
/u/u01
$ cd /etc
$ pwd
/etc
Слайд 17Введение в ОС LINUX
Создание каталога
mkdir имя_каталога1 [имя_каталога2 …]
$ mkdir dir -
создание каталога, с именем dir в текущем каталоге
$ mkdir –m 750 dir - создание каталога с установленными правами
доступа (код 750)
$ mkdir dir1 dir2 dir3 - создание нескольких каталогов
$ mkdir /home/stud/tst - создание каталога с абсолютным именем
Слайд 18Введение в ОС LINUX
Просмотр содержимого каталога
Список файлов текущего каталога
$ ls
file1
file2 dir1
Список файлов указанного каталога /u/user01
$ ls -F /u/user01
file1 file2* dir1/
* - программы (исполнимые файлы)
/ - каталоги
@, & - ссылки на другие файлы
| - FIFO файл
пробел - простой файл
ls [-ключи] [имя_каталога]
Слайд 19Введение в ОС LINUX
Просмотр содержимого каталога
Расширенный вывод каталога /home/stud
$ ls
–l /home/stud
-rwxr-xr-x 1 user01 is 512 Apr 16 10:46 file1
-rw-r--r-x 1 user01 is 1320 Apr 11 17:02 file2
drw-r--r-x 1 user01 is 8096 Apr 11 17:02 dir1
Тип
файла
Число
ссылок
Имя
группы
Дата и
время
Права
доступа
Имя
пользователя
Размер
Имя
файла
Слайд 20Введение в ОС LINUX
Удаление каталога
rmdir [-p] каталог
Удаляет пустые каталоги или деревья
(-p)
$ rmdir /abc
$ rmdir –p /int/mom/tmp
rm [-irv] каталог
Удаляет файлы из указанных каталогов и сами каталоги
-i – вывод запроса на удаление файлов
-r – удаление всех подкаталогов (рекурсивное удаление)
-v – вывод списка удаленных файлов
$ rm -r /temp
Слайд 21Введение в ОС LINUX
Создание и редактирование файлов
ed [файл] – встроенный текстовый
редактор shell
vi [файл] – встроенный текстовый редактор shell
сat > файл – ввод с консоли (Ctrl-D – завершить ввод)
Слайд 22Введение в ОС LINUX
Вывод текстовых файлов
сat файл [файл …] - для
просмотра файлов из нескольких строк
Управляющие действия:
Ctrl-s – приостановка, Ctrl-q - возобновление вывода
more файл - постраничный просмотр больших файлов
Управляющие действия:
Пробел - переход на следующую страницу
Enter - сдвиг вперед на одну строку
b - возврат на предыдущую страницу
h - обращение за подсказкой
q или Ctrl-c - выход в режим командной строки
Слайд 23Введение в ОС LINUX
Удаление файла
rm [-iv] файл [файл…]
-i – вывод запроса
на удаление файлов
-v – вывод списка удаленных файлов
$ rm file1 file2 file3
$ rm –i file?
$ rm –i ~/*.o
Слайд 24Введение в ОС LINUX
Копирование файлов и каталогов
Копирование файлов в текущем каталоге
cp
[-ключи] файл1 файл2
$ cp file1 file2
Копирование файлов в другой каталог
cp [-ключи] файл [файл…] каталог
$ cp file1 file2 ~/dir
$ cp –i file1 /dir
overwrite dir/file1? n
Копирование каталога в другой каталог
cp [-ключи] каталог1 каталог2
$ cp –r ~/dir /tmp
Слайд 25Введение в ОС LINUX
Перемещение и переименование файлов и каталогов
Переименование файла
mv [-ключи]
файл1 файл2
$ mv file1 file3
Перемещение файла в другой каталог
mv [-ключи] файл [файл…] каталог
$ mv file3 dir
Переименование каталога
mv [-ключи] каталог1 каталог2
$ mv dir katalog
Перемещение каталога в другой каталог
mv [-ключи] каталог1 каталог2
$ mv –r dir katalog
Слайд 26Введение в ОС LINUX
Жесткие ссылки (hard link)
ln /u/user1/filec /u/user2/filec
link /u/user1/filec /u/user2/filec
u
user1
user2
file1
Inode=0333
filec
Inode=1077
file1
Inode=1451
Слайд 27Введение в ОС LINUX
Символические ссылки
(symbolic link)
ln –s /home/user1/filec /home/user2/filec
home
user1
user2
file1
Inode=0333
filec
Inode=1077
file1
Inode=1451
filec
Inode=1946
/u/user1/filec
Слайд 28Введение в ОС LINUX
Выборка столбцов файла
сut –c список файл
$ cat tabl1
1
Ivan 578 mosсow
2 Peter 435 newyork
3 Sasha 734 orel
$ cut –c 1, 3, 4, 5, 16-22 tabl1
1Ivamoscow
2Petnewyork
3Sasorel
Слайд 29Введение в ОС LINUX
Поиск контекста в файле
grep [-ключи] шаблон [файл]
egrep [-ключи]
шаблон [файл]
-c - вывести количество найденных строк
-v - вывести строки, не удовлетворяющие условию
-i - игнорировать различие между прописными и строчными
символами
$ grep linux docs.txt
$ grep –ci ’Red Hat Linux’ docs.txt
$ grep ’get|put|print|write’ docs.txt
Слайд 30Введение в ОС LINUX
Поиск контекста в файле
Специальные символы шаблона:
. – любой
произвольный символ
* – предыдущий символ повторить любое число раз
.* – любая последовательность символов
^шаблон – привязка шаблона к началу строки
шаблон$ – привязка шаблона к концу строки
[символы] – взять ровно один символ из списка
$ grep ’^a.*z$’ docs.txt
$ grep ’^[aA]$’ docs.txt
$ grep ’\$1\.00’ price
Слайд 31Введение в ОС LINUX
Поиск файлов по запросу
find каталог ключи-условия [ключи-действия]
Ключи-условия:
-name шаблон
- шаблон имени файла
-type f - брать только обыкновенные файлы ( d - только каталоги)
-size +500 - файлы размером более 500*512 байт
-mtime –3 – файл изменен менее трех дней назад
-atime +3 – последний доступ к файлу более трех дней назад
-user имя - файлы, принадлежащие указанному пользователю
-group имя - файлы, принадлежащие пользователям указанной группы
-maxdepth 1 – ограничить глубину поиска по вложенным каталогам
Ключи-действия:
-exec команда {} \; - выполнить заданную команду над найденными файлами
$ find / -name ’*.c’
$ find /tmp –type f –atime+30 –exec rm {} \;
Слайд 32Введение в ОС LINUX
Стандартные потоки ввода-вывода
Стандартный входной поток stdin (дескриптор
0)
Стандартный выходной поток stdout (дескриптор 1)
Стандартный выходной поток ошибок stderr (дескриптор 2)
программа
(команда)
stdin(fd0)
stderr(fd2)
stdout(fd1)
экран
клавиатура
Слайд 33Введение в ОС LINUX
Перенаправление ввода-вывода
Перенаправление ввода-вывода – это изменение стандартных
входных
и выходных потоков и привязка к определенным устройствам
или файлам
> - переназначение стандартного вывода
2> - переназначение стандартного потока сообщений об ошибках
>> - переназначение вывода, добавление вывода команды в конец
существующего файла
< - изменение (назначение) нестандартного входного устройства
<< - считывать стандартный ввод, пока не встретится указанный текст
Слайд 34Введение в ОС LINUX
Перенаправление ввода-вывода
Перенаправление вывода
$ ls > file – вывод
данных не на экран, а в файл
$ cat f1 f2 f3 > f4 – слияние нескольких файлов в один
$ cat > newfile – ввод данных с клавиатуры (Ctrl-D-завершить)
$ cat file1 >> file2 – к существующему файлу file2 добавить
информацию из файла file1
$ sort myfile > /dev/null – подавление вывода
$ find / -mtime +30 2> errfile – переназначение потока ошибок
Перенаправление ввода
$ mailx user02 < mymessage
$ cat >hello.c <
Слайд 35Введение в ОС LINUX
Конвейеры команд
программа1
stdin
stdout
программа2
stdin
stdout
команда1 | команда2 | команда3…
$ ls –l
| more – постраничный вывод текущего каталога
$ ls –l | cut –c1 | grep –c “^d” – поиск и вывод на экран информации
о количестве каталогов, входящих в
текущий каталог
Слайд 36Введение в ОС LINUX
Управление доступом к файлам
Владелец
Группа
Прочие
SetUID – разрешение выполнять файл
от имени владельца
SetGID – разрешение выполнять файл от имени группы владельца
Sticky – разрешение записи в каталог без возможности удаления и переименования файлов
r – разрешение на чтение
w– разрешение на запись
x – разрешение на выполнение
1 0 1 1 1 1 1 1 0 1 0 0 57648
Слайд 37Введение в ОС LINUX
Права доступа к файлу и каталогу
Отсутствие права x
для каталога означает запрет на выполнение любых операций с данным каталогом и входящими в него файлами, независимо от того, какие атрибуты имеют файлы каталога.
Право r для каталога (совместно с x) дает возможность выполнять команду просмотра содержимого каталога ls. Каталоги с отсутствующим атрибутом r называют "темными", так как нет никакого прямого способа узнать, какие файлы в нем размещены.
Право на запись в каталог w (совместно с x) разрешает добавлять в каталог новые файлы, а также удалять из каталога существующие файлы, причем независимо от того, какие атрибуты имеют сами файлы (т.е. приоритет отдается правам для каталога). В то же время ни один файл каталога не может быть удален, если у каталога нет права w.
Слайд 38Введение в ОС LINUX
Просмотр текущих атрибутов доступа
$ ls -l
drw-r--r-t 1
user1 is 8132 Apr 11 17:02 dir1
-rwsr--r-x 1 user1 is 1320 Apr 01 16:35 file1
-rw-r-S--x 1 user1 is 5078 Apr 11 00:02 file2
s – установлен SetGID (SetUID) и право на выполнение
S – установлен SetGID (SetUID) без права на выполнение
t – установлен Sticky и право на выполнение
T – установлен Sticky без права на выполнение
Слайд 39Введение в ОС LINUX
Установка атрибутов доступа
сhmod атрибуты файл [файл…]
u -владелец, g
- группа, o - прочие, a - все
Предоставление права на запись в файл ~/file членам группы
(остальные атрибуты не меняются)
chmod g+w file
Лишение всех прав на доступ для каталога dir
chmod a-rwx dir
Избирательная установка указанных атрибутов со сбросом остальных
chmod u=rws,g=r,o=rt file1
chmod 5744 file2
chmod 750 file1 file3
Слайд 40Введение в ОС LINUX
Изменение владельца и группы
Изменить владельца
сhown имя файл
[файл…]
chown user01 file1 file2
Изменить группу владельца
сhgrp группа файл [файл…]
chgrp is file1 file2
Получить права другого пользователя
su
Слайд 41Введение в ОС LINUX
Информация о системе и пользователях
Вывод параметров идентификации пользователя:
id , whoami
Вывод информации о системе: uname -a
Вывод информации о подключенных пользователях: who –a
Вывод информации о файловых системах: df [-v]
Вывод текущей даты и времени: date
Слайд 42Введение в ОС LINUX
Командные процедуры (скрипты)
Скрипты содержат последовательность команд LINUX, которую
можно сохранять на диске в виде файла и запускать на выполнение
при необходимости так же, как и обычные программы.
Файл myscript
#комментарий
Команда1
Команда2
. . .
КомандаN
./myscript – запуск скрипта на выполнение из текущего каталога
!!! Файл скрипта обязательно должен иметь
атрибут доступа x (т.е. исполнимый)
Слайд 43Введение в ОС LINUX
Переменные
Определены в
момент открытия
пользовательского
сеанса
Могут иметь
произвольные
имена, состоящие из букв
(латинских), цифр и знака
подчеркивания. Имя должно
начинаться с буквы.
Переменные
Системные
Пользовательские
Все переменные Linux – строковые.
Слайд 44Введение в ОС LINUX
Системные переменные
HOME – имя домашнего каталога пользователя
PWD –
имя текущего каталога
PATH – пути поиска программных файлов
PS1 – формат приглашения в начале командной строки
LOGNAME – имя пользователя
MAIL – имя почтового ящика пользователя
Значения устанавливаются при инициализации сеанса (/etc/profile, /$HOME/. profile) и могут быть выведены с помощью команд echo, pritenv, env
echo $PATH
/bin:/usr/bin
Слайд 45Введение в ОС LINUX
Работа с переменными
Присваивание значения переменной
переменная=значение
переменная=’значение’ (если значение содержит
пробелы)
переменная=`команда` (присвоить вывод команды)
Взять значение переменной: $переменная
Создать глобальную переменную: export переменная
x=/u/user01; z=88; y=$z; u=z
p1=’pwd’; p2=`pwd`
echo $x x $z $y $u $p1 $p2 $p3
/u/user01 x 88 88 z pwd /u/user01
Слайд 46Введение в ОС LINUX
Настройка пользовательской среды
export PS1=’$LOGNAME’:’$PWD’:’>’
export PATH=$PATH:$HOME:.
export LANG=Ru_RU
export LC_ALL=Ru_RU
export TZ=EST1EDT
export
ENV=$HOME/.setup
/etc/rc
/etc/profile
$HOME/.profile
$ENV
$HOME/.profile
$HOME/$ENV
alias lsl=”ls -l”
Слайд 47Введение в ОС LINUX
Арифметические выражения
Присваивание значения переменной
let ” переменная=выражение”
переменная=$((выражение))
Арифметические операции: *,
/, %, +, -
(Только над целыми числами)
i=1
let ”j=$i+1”
echo $j
2
i=1
j=$i+1
echo $j
1+1
let ”i=1+2*3”
j=$(((1+2)*3))
echo $i $j
7 9
Слайд 48Введение в ОС LINUX
Условные выражения
Условия, связанные с файлами:
test
-s файл – размер файла больше нуля
test -r файл – есть ли доступ на чтение
test -w файл – есть ли доступ на запись
test -x файл – есть ли право на выполнение
test -f файл – является ли файл обычным
test -d файл – является ли файл каталогом
test -e файл – существует ли файл
test -O файл – принадлежит ли файл текущему пользователю
Условные выражения – true (0) или false (≠ 0) – формируются в результате выполнения команд (код завершения) или специальными логическими конструкциями test или [ ]
Слайд 49Введение в ОС LINUX
Условные выражения (продолжение)
Условия проверки строк:
test -z строка –
имеет ли строка нулевую длину
test -n строка – имеет ли строка ненулевую длину
test стр1 = стр2 – совпадают ли строки
test стр1 != стр2 – строки не совпадают
Условия сравнения чисел:
test A –eq B – A=B
test A –ne B – A≠B
test A –lt B – A test A –le B – A≤B
test A –gt B – A>B
test A –ge B – A≥B
Слайд 50Введение в ОС LINUX
Команда проверки условий
if условие
then
команда
…
команда
[else
команда
…
команда]
fi
Примеры:
if test -s $MAIL
then
echo ’Вам письмо’
fi
2. x=5
if test $x –lt 5
then
echo x меньше 5
else
echo x не меньше 5
fi
Слайд 51Введение в ОС LINUX
Циклы for
for переменная
in множество_значений
do
команда
. . .
команда
done
Переменная - играет роль параметра цикла, последовательно принимая значения из заданного множества_значений
множество_значений можно определить как:
список значений (переменных)
шаблон имен файлов
вывод команды Unix
Слайд 52Введение в ОС LINUX
Циклы for (продолжение)
break - досрочный выход из цикла
exit
– завершение выполнения текущей программы
1. for dir
in /tmp /user/tmp /home/tmp
do
find $dir ! –type d –exec rm { } /;
done
Примеры:
2. for file in *.bak
do
rm –i $file
done
3. for f
in `find . –name ”*.c” –print`
do
echo $f; c89 –c $f
done
Слайд 53Введение в ОС LINUX
Циклы: while
while условие
do
команда
…
команда
done
Цикл выполняется до тех пор, пока условие истинно
Можно обеспечить выход из цикла командой break
i=1
while test $i –lt 5
do
echo $i
let “i=$i+1”
done
Слайд 54Введение в ОС LINUX
Циклы: until
Формат:
until условие
do
команда
…
команда
done
Выполняется до тех пор, пока условие ложно.
Можно обеспечить выход из цикла командой break.
Слайд 55Введение в ОС LINUX
Передача параметров в выполняемый скрипт
Формальные параметры (аргументы) задаются
значками: $0 … $9
Фактические значения определяются в командной строке по позиции
myscript
echo это $0
echo $1
echo $3
$ myscript
это myscript
$ myscript aa bb ” cc dd”
это myscript
aa
cc dd
$0
$1
$2
$3
Слайд 56Введение в ОС LINUX
Встроенные переменные
Встроенные переменные:
$# - количество параметров в командной
строке
$* - строка, содержащая все параметры, переданные скрипту
c разделителем - запятой: ”$1,$2,$3…”
$@ - строка, содержащая все параметры, переданные скрипту
c разделителем – пробелом: ” $1 $2 $3…”
$? –код завершения последнего процесса, выполненного
перед запуском скрипта
Слайд 57Введение в ОС LINUX
Пример скрипта
if test -z $1
then
echo
Введите параметры:
echo ’$1’- имя каталога
exit
fi
if test -d $1
then
i=0
for file in `ls $1`
do
i=$(($i+1))
done
echo В каталоге $1 - $i файлов
else
echo Каталог не найден
fi
Пример: подсчитать количество файлов в заданном каталоге.
Слайд 58Введение в ОС LINUX
Процессы в LINUX
Типы процессов:
Режимы выполнения процессов:
Процессы
Системные
Пользовательские
Демоны
Режимы
Интерактивные
Фоновые (пакетные)
Слайд 59Введение в ОС LINUX
Атрибуты процессов
Собственный идентификатор (PID)
Идентификатор родительского процесса (PPID)
Относительный приоритет
процесса (Nice Number)
Терминал, связанный с данным процессом (TTY)
Идентификатор пользователя, запустившего процесс (RID)
Идентификатор группы пользователя (RGID)
Атрибуты состояния:
О – выполняется в данный момент
S – блокирован (спит)
R – готов к работе
I – создается
Z – зомби (завершил свое выполнение, потерял все ресурсы, но
сведения о нем остались в системном реестре)
Слайд 60Введение в ОС LINUX
Информация о процессах
ps [-Aelf]
-A – все запущенные процессы
-e
– все доступные пользователю процессы
-f – вывод расширенных атрибутов
$ ps
PID TTY TIME COMMAND
72098 ttyp0000 2:46 /bin/sh
6745 ttyp0000 0:37 ./myprog
19627 ttyp0000 1:51 /bin/ps
Завершить («снять») интерактивный процесс: Ctrl-C
Приостановить интерактивный процесс: Ctrl-Z
Слайд 61Введение в ОС LINUX
Группирование и особые режимы выполнения процессов
Простая последовательность команд
(группа процессов PGID)
команда1; команда2; команда3 …
$ cd mydir; ls -l
Условная последовательность процессов
команда1 && команда2 - выполнить 2, если 1 успешна
команда1 || команда2 - выполнить 2, если 1 ошибочна
Выполнение процесса в фоновом (background) режиме
команда &
Слайд 62Введение в ОС LINUX
Управление фоновыми процессами и группами процессов (заданиями)
Задание может
содержать несколько процессов
$ find / -type f –user u01 > file1 &
[3] 76453 jobID=3, PID=PGID=76453
Вывод информации о состоянии заданий
jobs [-l]
Снять задание Завершить процесс
kill –s KILL %3 kill 76453
Приостановить выполнение задания
kill –s STOP %3
Возобновить выполнение задания:
bg %3 или fg %3
Ожидать завершения выполнения задания:
wait %3; print “Задание %3 завершено!”
Слайд 63Введение в ОС LINUX
Создание процессов
Процессы создаются с помощью специального системного вызова:
fork()
В LINUX все процессы родственные. На вершине иерархии стоит процесс init. Дочерние процессы наследуют свойства родителей.
Родительский процесс контролирует завершение потомков через
cистемный вызов wait() или waited()
fork()
fork()
fork()
Слайд 64Введение в ОС LINUX
Пример создания дочернего процесса
shell
PID = 745
PPID = 1
shell
PID
= 882
PPID = 745
ls
PID = 882
PPID = 745
shell
PID = 745
PPID = 1
fork()
wait()
exit()
exec(/usr/bin/ls)
Слайд 65Введение в ОС LINUX
Пример создания дочернего процесса
#include
#include
main()
{
int
pid;
pid=fork();
if (pid==-1)
{
printf(“Ошибка \n”);
}
if (pid==0)
{
printf(“Потомок \n”)
}
else
{
printf(“Родитель \n”)
}
}