От DOS к Linux (продолжение темы)

Запуск программ: многозадачность и сеансы связи

Чтобы запустить программу, введите ее имя, как обычно это делается в DOS. Если каталог, в котором находится эта программа, включен в путь поиска, программа стартует. Внимание, маленькое отличие от DOS - если программа находится в каталоге, который является текущим в данный момент времени, но этот каталог не включен в путь поиска (PATH), выполняться она не будет. Совет: в таких случаях следует указывать в командной строке и сам каталог, например, для запуска программы с названием prog, напечатайте./prog.

Обычный вид командной строки:
$ command -s1 -s2... -sn par1 par2... parn <input> output
где -s1 -s2... -sn - это набор ключей (switches), управляющих поведением программы, par1 par2... parn - набор параметров, передаваемых ей, input и output - возможные перенаправления ввода-вывода. Одна командная строка может содержать несколько команд:
$ command1; command2;....; commandn

Одна из главнейших причин использования ОС Linux - ее многозадачность, возможность выполнять несколько программ (будем называть их процессами) одновременно. Можно запускать программы в виде фоновых процессов (background) и продолжать работу с другими программами. Более того, Linux предоставляет возможность открытия нескольких рабочих сеансов (sessions), как бы совмещая в одном компьютере несколько! Для этого используются виртуальные консоли, переключение между которыми (выбор текущей) осуществляется при помощи комбинаций клавиш Alt-F1, Alt-F2, Alt-F3.... Вспомните переключение между окнами командира Нортона, только окошек здесь будет побольше. Для запуска нового сеанса работы с получением прав доступа и привилегий другого пользователя служит команда:
su - <logname>
например:
$ su - root
откроет сеанс работы администратора системы, пользователя root со ВСЕМИ полномочиями. Это может оказаться полезным, если Вы захотите заняться монтированием дисковых накопителей (а делать это может только root). Для завершения сеанса работы существуют команды exit, logout или Ctrl-D. Если на момент прекращения сеанса работы система обнаружит приостановленные задания, она сообщит об этом.

Процессы могут выполняться в основном режиме (foreground) или в фоновом (background). Запуск фонового процесса производится командой вида:
$ progname [-switches] [parameters] [input] [output] &
[1] 123
Шелл регистрирует фоновый процесс (еще их называют jobs) под номером [1] с идентификатором PID (Process Identification Number) 123 в нашем примере.
Ознакомиться с перечнем процессов, выполняемых системой в данный момент времени, можно при помощи команды:
$ ps -a

Все процессы в системе смертны, и их убийцей можете стать Вы! Эта жестокость иногда может быть оправдана, если выполнение программы не может быть прекращено иным способом или нужно срочно расправиться с подвисшим процессом, пожирающим слишком много системных ресурсов. Для прекращения работы некоторых процессов с этой командой должны передаваться определенные сигналы:
$ KILL <PID>
$ KILL -9 <PID>
$ KILL -15 <PID>
$ KILL -KILL <PID>

Просмотр списка фоновых задач:
$ jobs

Остановить процесс, выполняющийся в основном режиме (foreground), - Ctrl-C, временно приостановить процесс - Ctrl-Z. Отправить приостановленный процесс в фоновый режим:
$ bg <job>

Перевести процесс из фонового режима в основной:
$ fg <job>

Убить фоновый процесс:
$ kill < %job>
где job - это порядковый номер фонового процесса (1, 2, 3...). Используя эти свойства многозадачности, можно форматировать дискеты, работать с огромными архивами данных, компиллировать программы, и все это одновременно. Попробуйте это же делать с DOS или Windows и сравните производительность.

Выполнять все эти команды можно и подключившись к удаленному компьютеру по сети:
$ telnet remote.bigone.edu

После подключения запускайте свою любимую программу. Разумеется, Вы должны быть зарегистрированы в качестве пользователя на этом компьютере. И это еще не все! Если у Вас установлен графический оконный интерфейс (называемый Х), возможен запуск графических приложений на удаленной машине (правда, использовать для этого РРР канал связи не рекомендуется).

Каталоги
Мы определили различия между файлами у DOS и Linux. Что касается системы каталогов, то для DOS корневым каталогом служит "С:\", а в Linux - "/". Разделителем вложенных подкаталогов в DOS работает "\", а у Linux - "/". Например:
DOS: C:\PAPERS\GEOLOGY\MID_EOC.TXT
LINUX: /home/john/papers/geology/mid_eocene.txt
Как обычно, две точки ".." указывают на каталог верхнего уровня, а точка одинокая "." - на текущий. Учтите, что система не позволит выполнять команды cd, rd или md где угодно, а только там, где доступ разрешен. Каждый пользователь начинает работу со своего домашнего каталога, который ему выделяется администратором, например, /home/john.

Для каталогов тоже устанавливаются разрешения доступа (permissions), как и для файлов в трех категориях - для пользователя-владельца, пользовательской группы и всех остальных. Параметры rx для каталогов означают возможность просмотра их содержимого и открытия командой cd. Параметр w обеспечивает возможность удаления и записи файлов в каталог (разумеется, согласно набору параметров разрешений доступа этих файлов). Например, для того чтобы оградить каталог /home/john/texts от внимания остальных пользователей, нужно набрать команду:
$ chmod o-rwx /home/john/text

В левой колонке - команды DOS, в правой - их аналоги в Linux:
DIRls, find, du
CDcd, pwd
MDmkdir
RDrmdir
DELTREErm -r
MOVEmv

Примеры:
DOS Linux
C:\DOC> dir $ ls
C:\DOC> dir file.txt $ ls file.txt
C:\DOC> dir *.h *.c $ ls *.h *.c
C:\DOC> dir /p $ ls | more
C:\DOC> dir /a $ ls -l
C:\DOC> dir *.tmp /s $ find / -name "*.tmp"
C:\DOC> cd $ pwd
-//- $ cd
-//- $ cd ~
-//- $ cd ~/temp
C:\DOC> cd \other $ cd /other
C:\DOC> cd..\temp\trash $ cd../temp/trash
C:\DOC> md newdocs $ mkdir newdocs
C:\DOC> move file1.. $ mv file1..
C:\DOC> md \progs\turbo $ mkdir /progs/turbo
C:\DOC> deltree temp\trash $ rm -R temp/trash
C:\DOC> rd newdocs $ rmdir newdocs
C:\DOC> rd \progs\turbo $ rmdir /progs/turbo

Примечания:
- команда rmdir удаляет только пустые каталоги. Для удаления каталога со всеми файлами используйте rm -R (но это опасная команда).
- символ тильда "~" - это указатель на домашний каталог пользователя, команда cd ~ вернет Вас домой откуда угодно.

Дисковые накопители
Возможно, Вы никогда не задумывались над этим, но команда FORMAT A: в DOS выполняет несколько важных задач: 1) выполняет форматирование диска на физическом уровне; 2) создает файловую систему; 3) делает диск доступным пользователю, что равнозначно его монтированию. В Linux эти три шага распределены между различными командами. Вы можете работать с дискетами формата MS-DOS и других форматов. Но DOS не позволит использовать длинные имена файлов. Все команды могут выполняться только администратором системы. Вот они:
- форматируем дискету на 1.44 Мб:
# fdformat /dev/fd0H1440
- создаем файловую систему:
# mkfs -t ext2 -c /dev/fd0H1440
или
# mformat a:
чтобы создать файловую систему MS-DOS.
- перед использованием дискеты монтируем ее:
# mount -t ext2 /dev/fd0 /mnt
или
# mount -t msdos /dev/fd0 /mnt

Теперь можно записывать файлы на дискету и читать их с нее. По окончании работы каждый дисковый накопитель должен быть размонтирован:
# umount /mnt

Можно извлечь дискету из дисковода. При работе с диском B: используйте fd1 вместо fd0 и fd1H1440 вместо fd0H1440. Теперь Вы будете обращаться к каталогу /mnt для выполнения всех файловых операций. Примеры:

DOS Linux
C:\DOC> dir a: $ ls /mnt
C:\DOC> copy a:*.* \docs\temp $ cp /mnt/* /docs/temp
C:\DOC> copy *.zip a:\zip\ $ cd *.zip /mnt/zip
C:\DOC> a: $ cd /mnt
A:> _ /mnt/$_


Разумеется, все, что касается гибких дисков, может применяться и к другим дисковым накопителям, например, можно замонтировать второй жесткий диск или CD-ROM. Вот команда для монтирования CD-ROM:
# mount -t iso9660 /dev/cdrom /mnt

Это стандартный способ монтирования дисков, но можно упростить процедуру монтирования накопителей и обеспечить доступ всех пользователей к этим дискам. Для этого:
- как root создайте каталоги /mnt/a, /mnt/a: и /mnt/cdrom
- добавьте в файл /etc/fstab следующие строки:
/dev/cdrom /mnt/cdrom iso9660 ro, user, noauto 0 0
/dev/fd0 /mnt/a: msdos user, noauto 00
/dev/fd0 /mnt/a ext2 user, noauto 00

Теперь монтирование дискет в формате DOS или ext2, а также CD-ROM можно выполнять командами:
$ mount /mnt/a
$ mount /mnt/a:
$ mount /mnt/cdrom

каталоги /mnt/a, /mnt/a: и /mnt/cdrom теперь доступны всем пользователям. Чтобы дать возможность записи файлов на дискету всем пользователям, сразу после форматирования дискеты и создания файловой системы выполните следующие команды:
# mount /mnt/a
# chmod 777 /mnt/a
# umount /mnt/a
Но помните, что таким образом Вы сами сами создаете лазейку в системе безопасности своего компьютера.

Архивирование и резервное копирование

После того как мы научились обращаться с дискетами, познакомимся с командами, которые помогут сохранять резервные копии файлов на этих дискетах. Существует несколько программ, которые занимаются сохранением и восстановлением данных на дискетах или магнитной ленте, но для начала будет достаточно одной, старой и надежной, как мир, команды:
# tar -M -cvf /dev/fd0H1440 /dir_to_backup

в дисководе должна присутствовать заранее отформатированная дискета, и еще несколько (в зависимости от объема сохраняемых файлов) держите наготове. Чтобы восстановить данные из архива, вставьте первую дискету в дисковод и введите команду:
# tar -M -xpvf /dev/fd0H1440

Игорь Грень


Компьютерная газета. Статья была опубликована в номере 05 за 1999 год в рубрике soft :: unix

©1997-2024 Компьютерная газета