Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Управление процессами на уровне интерпретатора. Командные файлы (пример программы).




Список процессов, выполняющихся в настоящий момент:

ps – выдает список процессов, запущенных в данном сеансе работы:

 

PID TTY TIME CMD

2199 pts/5 00:00:00 bsh

TTY – управляющий терминал процесса.

-ax – список всех существующих процессов.

-axu - список всех существующих процессов + информация о владельцах.

Снять процесс можно сигналами

Kill 2736 – снимает процесс с указанным номером, если процесс не предпринял специальных мер.

Kill -9 2736 – уничтожает процесс в любом случае.

Система управления заданиями. Каждая команда в системе, запущенная со своего терминала, называется заданием. Оно может выполнять в фоновом или интерактивном режиме

inf.j &

Результат: [1] 9112; [1] – номер задания, 9112 – PID задания.

В команде управления заданиями можно указать номер задания.

stop %1 – остановить 1-ое задание

job – выводит информацию о приостановленных и фоновых заданиях с указанием их номеров.

Ctrl + Z – приостановить задачу.

Организация командных файлов. Скрипт – обычный текстовый файл, в котором записаны инструкции интерпретатора. Фактически это файл с программой для выполнения. Первой командой должна быть команда обращения к интерпретатору: #!/bin/sh – тогда последующий текст скрипта будет интерпретироваться именно Bourne Shell.

Язык Bourne Shell поддерживает работу с переменной. Чтобы присвоить ей значение надо написать оператор присваивания: var=value. В имени переменной и вокруг знака присваивания не должно быть пробелов, иначе знак = пойдет как один из параметров командной строки, что не правильно.

Вывести значение переменной на экран можно с помощью команды echo. Для обращения к содержимому переменной требуется спецсимвол $

echo $MyFile – вывод содержимого переменной на экран.

При необходимости скомпоновать слитый текст из значений переменных можно, если имена переменных заключить в {}

I=10

echo ${I}abc вывод: 10abc

cmd1; cmd2 Последовательное выполнение команд
cmd1 & Выполнение в фоновом режиме (демон)

cmd1 && cmd2 Выполнение cmd2 в случае успешного завершения cmd1

cmd1 || cmd2 Выполнение cmd2 в случае ненормального завершения cmd1

Для выполнения арифметических действий – двойные круглые скобки:

I=$(($I+5))

Встроенная функция test осуществляет проверку выполнения условия, если условие истина, команда имеет нулевой успешный код возврата, иначе 1 – неуспех. Синоним команды test – квадратные скобки [].

Условия проверки файлов.

-f file Файл "file" является обычным файлом.
-d file Файл "file" является каталогом
-c file Файл "file" является специальным файлом
-r file Файл "file" имеет разрешение на чтение
-w file Файл "file" имеет разрешение на запись
-x file Файл "file" имеет разрешение на исполнение
-s file Файл "file" не пустой
Условия проверки строк
string1=string2 Строки string1 и string2 совпадают
string1!=string2 Строки string1 и string2 не совпадают.
-n string1 Строка string1 существует
-z string1 Строка string1 не существуетУсловия операций с целыми числами

x -eq y x равно y

x -ne y x не равно y

x -gt y x больше y
x -ge y x больше или равно y

x -lt y x меньше y
x -le y x меньше или равно y
В этом случае команда test воспринимает строки именно как целые числа. Нулевому значению так же соответствует пустая строка.
Логические операции в контексте test
! (not) Логическое "НЕ"
-o (or) Логическое "ИЛИ"
-a (and) Логическое "И"
Условный оператор "if"
Общий вид использования условного оператора if представляется следующим образом:
if <условие>
then <список команд>
[ elif <условие>
then <список> ]
[else <список> ]
fi
Выражения, выделенные в квадратных скобках, являются необязательными. Т.е. можно представить наиболее употребительную "порезанную" модификацию условного оператора:
if <условие>
then <список команд>
fi
В этом случае если <условие> выполнено (код завершения 0 ) то выполняется <список команд>. В противном случае <список команд> пропускается.
Оператор вызова case
В общем случае синтаксис оператора case выглядит следующим образом:
case <строка> in
шаблон1)
cmd1
cmd2
........
;;

....

*)
cmdn
........
;;
esac
Значение <строка> сравнивается с шаблонами, по порядку. Если было найдено совпадение, тогда выполняются команды соответствующего раздела. Следует отметить, что шаблоны допускают использование масок. Если совпадения не было найдено, тогда выполняются команды из раздела с шаблоном "*" ( аналогично default селектора switch в Си).

Оператор цикла с перечислением for
Синтаксис оператора for в общем случае имеет следующую структуру:
for <имя> [in список значений]
do
<список команд>
done
Фрагмент, выделенный в квадратные скобки, может отсутствовать. Оператор for обеспечивает выполнение цикла столько раз, сколько слов в списке значений. При этом переменная <имя> принимает последовательно значения слов из списка. Сам по себе список может формироваться из вывода других команд. Если же список отсутствует, тогда <имя> принимает значения, переданные как позиционные параметры скрипта.
Оператор цикла с истинным условием while
Синтаксис оператора while в общем случае имеет следующую структуру:
while <условие>
do
<список команд>
done
Оператор while предпочтителен тогда, когда не известен заранее список значений параметров. Список команд будет выполняться в цикле до тех пор, пока сохраняется истинность условия. При первом входе в цикл условие должно выполняться.
Оператор цикла с ложным условием until
Синтаксис оператора until в общем случае имеет следующую структуру:
until <условие>
do
<список команд>
done
Список команд будет выполняться в цикле до тех пор, пока сохраняется ложность условия. При первом входе в цикл условие не должно выполняться. Следует заметить, что условие цикла проверяется на ложность после каждого, в т.ч. и первой выполненной команды в цикле.

Команда printf берет данные и передает их в поток вывода stdout с возможностью форматирования.

printf “\n Hello_world\n\a” – вывод на новой строке с звуковым сигналом.

Для считывания входных данных – команда read – из потока stdin и если ввод перенаправлен, то можно из файла.

Скрипт сохраняют в файле *.sh и запускают на выполнение в терминале: ./*.sh

 


Поделиться:

Дата добавления: 2015-01-14; просмотров: 122; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты