Powershell: как работать с программой, создавать, запускать и изменять скрипты. Ловим попутный ветер или как запустить скрипт PHP

В прошлый раз мы говорили о работе с потоками ввода, вывода и ошибок в bash-скриптах, о дескрипторах файлов и о перенаправлении потоков. Сейчас вы знаете уже достаточно много для того, чтобы писать что-то своё. На данном этапе освоения bash у вас вполне могут возникнуть вопросы о том, как управлять работающими скриптами, как автоматизировать их запуск.

До сих пор мы вводили имена скриптов в командную строку и нажимали Enter, что приводило к немедленному запуску программ, но это - не единственный способ вызова сценариев. Сегодня мы поговорим о том как скрипт может работать с сигналами Linux, о различных подходах к запуску скриптов и к управлению ими во время работы.

Сигналы Linux В Linux существует более трёх десятков сигналов, которые генерирует система или приложения. Вот список наиболее часто используемых, которые наверняка пригодятся при разработке сценариев командной строки.
Код сигнала
Название
Описание
1
SIGHUP
Закрытие терминала
2
SIGINT
Сигнал остановки процесса пользователем с терминала (CTRL + C)
3
SIGQUIT
Сигнал остановки процесса пользователем с терминала (CTRL + \) с дампом памяти
9
SIGKILL
Безусловное завершение процесса
15
SIGTERM
Сигнал запроса завершения процесса
17
SIGSTOP
Принудительная приостановка выполнения процесса, но не завершение его работы
18
SIGTSTP
Приостановка процесса с терминала (CTRL + Z), но не завершение работы
19
SIGCONT
Продолжение выполнения ранее остановленного процесса

Если оболочка bash получает сигнал SIGHUP когда вы закрываете терминал, она завершает работу. Перед выходом она отправляет сигнал SIGHUP всем запущенным в ней процессам, включая выполняющиеся скрипты.

Сигнал SIGINT приводит к временной остановке работы. Ядро Linux перестаёт выделять оболочке процессорное время. Когда это происходит, оболочка уведомляет процессы, отправляя им сигнал SIGINT .

Bash-скрипты не контролируют эти сигналы, но они могут распознавать их и выполнять некие команды для подготовки скрипта к последствиям, вызываемым сигналами.

Отправка сигналов скриптам Оболочка bash позволяет вам отправлять скриптам сигналы, пользуясь комбинациями клавиш на клавиатуре. Это оказывается очень кстати если нужно временно остановить выполняющийся скрипт или завершить его работу.Завершение работы процесса Комбинация клавиш CTRL + C генерирует сигнал SIGINT и отправляет его всем процессам, выполняющимся в оболочке, что приводит к завершению их работы.

Выполним в оболочке такую команду:

$ sleep 100
После этого завершим её работу комбинацией клавиш CTRL + C .


Завершение работы процесса с клавиатуры Временная остановка процесса Комбинация клавиш CTRL + Z позволяет сгенерировать сигнал SIGTSTP , который приостанавливает работу процесса, но не завершает его выполнение. Такой процесс остаётся в памяти, его работу можно возобновить. Выполним в оболочке команду:

$ sleep 100
И временно остановим её комбинацией клавиш CTRL + Z .


Приостановка процесса

Число в квадратных скобках - это номер задания, который оболочка назначает процессу. Оболочка рассматривает процессы, выполняющиеся в ней, как задания с уникальными номерами. Первому процессу назначается номер 1, второму - 2, и так далее.

Если вы приостановите задание, привязанное к оболочке, и попытаетесь выйти из неё, bash выдаст предупреждение.

Просмотреть приостановленные задания можно такой командой:

Ps –l


Список заданий

В колонке S , выводящей состояние процесса, для приостановленных процессов выводится T . Это указывает на то, что команда либо приостановлена, либо находится в состоянии трассировки.

Если нужно завершить работу приостановленного процесса, можно воспользоваться командой kill . Подробности о ней можно почитать .

Выглядит её вызов так:

Kill processID

Перехват сигналов Для того, чтобы включить в скрипте отслеживание сигналов Linux, используется команда trap . Если скрипт получает сигнал, указанный при вызове этой команды, он обрабатывает его самостоятельно, при этом оболочка такой сигнал обрабатывать не будет.

Команда trap позволяет скрипту реагировать на сигналы, в противном случае их обработка выполняется оболочкой без его участия.

Рассмотрим пример, в котором показано, как при вызове команды trap задаётся код, который надо выполнить, и список сигналов, разделённых пробелами, которые мы хотим перехватить. В данном случае это всего один сигнал:

#!/bin/bash trap "echo " Trapped Ctrl-C"" SIGINT echo This is a test script count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 1 count=$(($count + 1)) done
Команда trap , использованная в этом примере, выводит текстовое сообщение всякий раз, когда она обнаруживает сигнал SIGINT , который можно сгенерировать, нажав Ctrl + C на клавиатуре.


Перехват сигналов

Каждый раз, когда вы нажимаете клавиши CTRL + C , скрипт выполняет команду echo , указанную при вызове trace вместо того, чтобы позволить оболочке завершит его работу.

Перехватить сигнал выхода из скрипта можно, использовав при вызове команды trap имя сигнала EXIT:

#!/bin/bash trap "echo Goodbye..." EXIT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1)) done


Перехват сигнала выхода из скрипта

При выходе из скрипта, будь то нормальное завершение его работы или завершение, вызванное сигналом SIGINT , сработает перехват и оболочка исполнит команду echo .

Модификация перехваченных сигналов и отмена перехвата Для модификации перехваченных скриптом сигналов можно выполнить команду trap с новыми параметрами:

#!/bin/bash trap "echo "Ctrl-C is trapped."" SIGINT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1)) done trap "echo " I modified the trap!"" SIGINT count=1 while [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$(($count + 1)) done


Модификация перехвата сигналов

После модификации сигналы будут обрабатываться по-новому.

Перехват сигналов можно и отменить, для этого достаточно выполнить команду trap , передав ей двойное тире и имя сигнала:

#!/bin/bash trap "echo "Ctrl-C is trapped."" SIGINT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1)) done trap -- SIGINT echo "I just removed the trap" count=1 while [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$(($count + 1)) done
Если скрипт получит сигнал до отмены перехвата, он обработает его так, как задано в действующей команде trap . Запустим скрипт:

$ ./myscript
И нажмём CTRL + C на клавиатуре.


Сигнал, перехваченный до отмены перехвата

Первое нажатие CTRL + C пришлось на момент исполнения скрипта, когда перехват сигнала был в силе, поэтому скрипт исполнил назначенную сигналу команду echo . После того, как исполнение дошло до команды отмены перехвата, команда CTRL + C сработала обычным образом, завершив работу скрипта.

Выполнение сценариев командной строки в фоновом режиме Иногда bash-скриптам требуется немало времени для выполнения некоей задачи. При этом вам может понадобиться возможность нормально работать в командной строке, не дожидаясь завершения скрипта. Реализовать это не так уж и сложно.

Если вы видели список процессов, выводимый командой ps , вы могли заметить процессы, которые выполняются в фоне и не привязаны к терминалу.
Напишем такой скрипт:

#!/bin/bash count=1 while [ $count -le 10 ] do sleep 1 count=$(($count + 1)) done
Запустим его, указав после имени символ амперсанда (&):

$ ./myscipt &
Это приведёт к тому, что он будет запущен как фоновый процесс.


Запуск скрипта в фоновом режиме

Скрипт будет запущен в фоновом процессе, в терминал выведется его идентификатор, а когда его выполнение завершится, вы увидите сообщение об этом.

Обратите внимание на то, что хотя скрипт выполняется в фоне, он продолжает использовать терминал для вывода сообщений в STDOUT и STDERR , то есть, выводимый им текст или сообщения об ошибках можно будет увидеть в терминале.


Список процессов

При таком подходе, если выйти из терминала, скрипт, выполняющийся в фоне, так же завершит работу.

Что если нужно, чтобы скрипт продолжал работать и после закрытия терминала?

Выполнение скриптов, не завершающих работу при закрытии терминала Скрипты можно выполнять в фоновых процессах даже после выхода из терминальной сессии. Для этого можно воспользоваться командой nohup . Эта команда позволяет запустить программу, блокируя сигналы SIGHUP , отправляемые процессу. В результате процесс будет исполняться даже при выходе из терминала, в котором он был запущен.

Применим эту методику при запуске нашего скрипта:

Nohup ./myscript &
Вот что будет выведено в терминал.


Команда nohup

Команда nohup отвязывает процесс от терминала. Это означает, что процесс потеряет ссылки на STDOUT и STDERR . Для того, чтобы не потерять данные, выводимые скриптом, nohup автоматически перенаправляет сообщения, поступающие в STDOUT и в STDERR , в файл nohup.out .

Обратите внимание на то, что при запуске нескольких скриптов из одной и той же директории то, что они выводят, попадёт в один файл nohup.out .

Просмотр заданий Команда jobs позволяет просматривать текущие задания, которые выполняются в оболочке. Напишем такой скрипт:

#!/bin/bash count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 10 count=$(($count + 1)) done
Запустим его:

$ ./myscript
И временно остановим комбинацией клавиш CTRL + Z .


Запуск и приостановка скрипта

Запустим тот же скрипт в фоновом режиме, при этом перенаправим вывод скрипта в файл так, чтобы он ничего не выводил на экране:

$ ./myscript > outfile &
Выполнив теперь команду jobs , мы увидим сведения как о приостановленном скрипте, так и о том, который работает в фоне.


Получение сведений о скриптах

Ключ -l при вызове команды jobs указывает на то, что нам нужны сведения об ID процессов.

Перезапуск приостановленных заданий Для того, чтобы перезапустить скрипт в фоновом режиме, можно воспользоваться командой bg .

Запустим скрипт:

$ ./myscript
Нажмём CTRL + Z , что временно остановит его выполнение. Выполним следующую команду:

$ bg


Команда bg

Теперь скрипт выполняется в фоновом режиме.

Если у вас имеется несколько приостановленных заданий, для перезапуска конкретного задания команде bg можно передать его номер.

Для перезапуска задания в обычном режиме воспользуйтесь командой fg:

Планирование запуска скриптов Linux предоставляет пару способов запуска bash-скриптов в заданное время. Это команда at и планировщик заданий cron .

Вызов команды at выглядит так:

At [-f filename] time
Эта команда распознаёт множество форматов указания времени.

  • Стандартный, с указанием часов и минут, например - 10:15.
  • С использованием индикаторов AM/PM, до или после полудня, например - 10:15PM.
  • С использованием специальных имён, таких, как now , noon , midnight .
В дополнение к возможности указания времени запуска задания, команде at можно передать и дату, используя один из поддерживаемых ей форматов.
  • Стандартный формат указания даты, при котором дата записывается по шаблонам MMDDYY , MM/DD/YY , или DD.MM.YY .
  • Текстовое представление даты, например, Jul 4 или Dec 25 , при этом год можно указать, а можно обойтись и без него.
  • Запись вида now + 25 minutes .
  • Запись вида 10:15PM tomorrow .
  • Запись вида 10:15 + 7 days .
Не будем углубляться в эту тему, рассмотрим простой вариант использования команды:

$ at -f ./myscript now


Планирование заданий с использованием команды at

Ключ -M при вызове at используется для отправки того, что выведет скрипт, по электронной почте, если система соответствующим образом настроена. Если отправка электронного письма невозможна, этот ключ просто подавит вывод.

Для того чтобы посмотреть список заданий, ожидающих выполнения, можно воспользоваться командой atq:


Список заданий, ожидающих выполнения Удаление заданий, ожидающих выполнения Удалить задание, ожидающее выполнения, позволяет команда atrm . При её вызове указывают номер задания:

$ atrm 18


Удаление задания Запуск скриптов по расписанию Планирование однократного запуска скриптов с использованием команды at способно облегчить жизнь во многих ситуациях. Но как быть, если нужно, чтобы скрипт выполнялся в одно и то же время ежедневно, или раз в неделю, или раз в месяц?

В Linux имеется утилита crontab , позволяющая планировать запуск скриптов, которые нужно выполнять регулярно.

Crontab выполняется в фоне и, основываясь на данных в так называемых cron-таблицах, запускает задания по расписанию.

Для того, чтобы просмотреть существующую таблицу заданий cron , воспользуйтесь такой командой:

$ crontab –l
При планировании запуска скрипта по расписанию crontab принимает данные о том, когда нужно выполнить задание, в таком формате:

Минута, час, день месяца, месяц, день недели.
Например, если надо, чтобы некий скрипт с именем command выполнялся ежедневно в 10:30, этому будет соответствовать такая запись в таблице заданий:

30 10 * * * command
Здесь универсальный символ « * », использованный для полей, задающих день месяца, месяц и день недели, указывает на то, что cron должен выполнять команду каждый день каждого месяца в 10:30.

Если, например, надо, чтобы скрипт запускался в 4:30PM каждый понедельник, понадобится создать в таблице заданий такую запись:

30 16 * * 1 command
Нумерация дней недели начинается с 0, 0 означает воскресенье, 6 - субботу. Вот ещё один пример. Здесь команда будет выполняться в 12 часов дня в первый день каждого месяца.

00 12 1 * * command
Нумерация месяцев начинается с 1.
Для того чтобы добавить запись в таблицу, нужно вызвать crontab с ключом -e:

Crontab –e
Затем можно вводить команды формирования расписания:

30 10 * * * /home/likegeeks/Desktop/myscript
Благодаря этой команде скрипт будет вызываться ежедневно в 10:30. Если вы столкнётесь с ошибкой «Resource temporarily unavailable», выполните нижеприведённую команду с правами root-пользователя:

$ rm -f /var/run/crond.pid
Организовать периодический запуск скриптов с использованием cron можно ещё проще, воспользовавшись несколькими специальными директориями:

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Если поместить файл скрипта в одну из них, это приведёт, соответственно, к его ежечасному, ежедневному, еженедельному или ежемесячному запуску.

Запуск скриптов при входе в систему и при запуске оболочки Автоматизировать запуск скриптов можно, опираясь на различные события, такие, как вход пользователя в систему или запуск оболочки. можно почитать о файлах, которые обрабатываются в подобных ситуациях. Например, это следующие файлы:

$HOME/.bash_profile $HOME/.bash_login $HOME/.profile
Для того, чтобы запускать скрипт при входе в систему, поместите его вызов в файл.bash_profile .

А как насчёт запуска скриптов при открытии терминала? Организовать это поможет файл.bashrc .

Итоги Сегодня мы разобрали вопросы, касающиеся управления жизненным циклом сценариев, поговорили о том, как запускать скрипты в фоне, как планировать их выполнение по расписанию. В следующий раз читайте о функциях в bash-скриптах и о разработке библиотек.

Уважаемые читатели! А вы пользуетесь средствами планирования запуска сценариев командной строки по расписанию? Если да - расскажите пожалуйста о них.

Часто продвинутые пользователи и даже администраторы, установив свежую операционную систему, настроя всевозможные файрволы, думают, что сейчас система надежно защищена, и можно расслабиться на спинке кресла. Но, при написании скриптов для этих свежих операционных систем, необходимо их правильно запускать. Затрагивая тему скриптов, ответим на часто задаваемые вопросы по их запуску.

Чисто теоретически, как запустить скрипт в windows на MS JScript (MyScript.js) как службу Windows? Если, например, создаем раздел в реестре и в ветке. HKЕY_LОCАL_MАСHINЕ\SYSTЕM\СurrеntСоntrоlSеt\sеrvicеs\MySеrvicе создать все требуемые параметры, необходимо будет прописать через cmd CScript в этих параметрах запуск или через двойной запуск на подобии: "C:\Windows\System32\WScript.exe" или как-нибудь проще. Получится что-то на подобии скрытого режима, а в Taskmanager не будет явно просматриваться процесс wscript.exe.

Часто, при написании JavaScript’а, возникает потребность в том, чтобы автоматически сделать загрузку. А как запустить скрипт при загрузке?

  • в конце js-файла сделать вызов необходимой функции.
  • в тексте файла menu.js прописать функцию page_load():

Использование сразу двух способов одновременно очень усложнит сопровождение и понимание кода.

  • shell script – набор команд системы, записанный в простом текстовом файле. Здесь ничего особо сложного нет, всего лишь команды, которые можно с легкостью ввести в командную строку системной оболочки или в терминал. В дальнейшем произведется запуск скрипта без осложнений.
  • Если нужно запустить vbs-скрипт и, если изменения не вносились в обработчик с расширением «.vbs», то после двойного нажатия по файлу с данным расширением, скрипт будет запущен. Всё должно заработать сразу же. Однако из графоболочки командная строка не будет просто так запускать vbs, для этого требуется использовать интерпретатор cscript
  • Для того, чтобы запустить sql скрипт, используя C#, необходимо подключить SMO сборку и определить SеrvеrСоnnеction.EхесutеNоnQuеry (String scriрt). Способ EхеcutеNоnQuеry() воспринимает только параметр строки, поэтому вначале нужно прочесть.sql файл в строковой переменной. SеrvеrConnеction.ExеcutеNonQuеry() делает запрос, который не будет возвращать результирующий набор данных.
  • Для того чтобы выполнить скрипт python необходимо передать интерпретатору название скрипта. Сначала пишем в первой строчке: syntах еrrоr. Далее пишем без «$» - syntаx еrrоr. Это просто имя файла - syntах еrrоr. И последним, что необходимо будет прописать, является путь к файлу - syntаx еrrоr.
  • Теперь, как запустить php скрипт через Dеnwеr. Большая часть новичков постоянно делают одну ошибку. Вроде бы абсолютно всё делается правильно, создаются нужные папки, перезапускается Dеnwеr и, вроде бы, в конце осталось только безошибочно вызвать файл в действие. Но тут опять появляется назойливая ошибка. Пользователь вновь открывает файл просто в обыкновенном браузере (либо перетаскиванием с копированием файла в браузер, либо двойным нажатием клавиши мыши). Эти действия легко возможно заметить по названию адреса в адресной строке. При таких действиях там будет прописано что-то наподобие: filе://Z:\hоmе\mysitе.lоcаl\www\sсriрt.рhр. Но правильно будет запускать ваш скрипт, если ввести в адрес виртуального хоста. Непосредственно в адресную строку браузера необходимо ввести: httр://mysitе.lосаl/sсriрt.рhр. После такого метода ввода скрипт без проблем запустится и выведет свой правильный результат, который и должен выводить.

От автора: Если вы когда-нибудь запускали воздушного змея, то знаете, что это не так просто, хотя со стороны кажется наоборот. На самом деле нужно приловчиться, чтобы вовремя веревку натянуть или поймать воздушную «волну». Сегодня я расскажу, как запустить скрипт PHP и какие «веревочки» дергать, чтобы он не просто работал, а «летал»!

Особенности запуска

Как уже не раз упоминалось, – это серверный язык программирования, поэтому сделать так, чтобы результат работы его кода отобразился в браузере, будет немного сложнее. Для этого файл должен располагаться непосредственно на серверном пространстве. Для работы с PHP используются два типа сервера:

Обычный (удаленный) –предоставляется хостером.

Локальный – устанавливается на клиентской машине.

На стороне хостинга, чтобы увидеть результат работы скрипта, в строку браузера вводится адрес следующего формата: ваш_сайт.ru/имя_файла.php

На локальном сервере все обстоит иначе. Перед тем, как запустим PHP скрипт в браузере, выясним эти особенности.
В зависимости от применяемого сервера набираемый адрес может отличаться. Чаще всего в «наших» краях используются различные сборки с Apache, из которых самой распространенной является Денвер.

Запуск скрипта в Denwer

В «апачевских» сборках все скрипты запускаются в localhost. Чтобы продемонстрировать это на практике, создадим какой-нибудь интересный пример. Вот его код:

< html >

< head >

< meta http - equiv = "refresh" content = "1" >

< / head >

< body >

< time style = "font-size:36px;color:rgb(102,255,102)" > < / time >

< / body >

< / html >

Разместите этот код в файле PHP и сохраните его на виртуальном диске, который создается после запуска локального сервера. У меня это файл test2.php.

Вверху на снимке обозначен путь, где нужно размещать созданный файл. У вас этот путь может немного отличаться, если при инсталляции Денвера задали другое имя виртуального диска.

Теперь разберемся, как запустить PHP скрипт на компьютере. Для этого в браузере следует указать адрес в формате: localhost/имя_файла.php

Начинаем мучиться

Может, слишком и унылое название для раздела, но я немного намучился, пока получилось открыть файл через командную строку. При попытке запуска система ПК выдавала вот такого рода ошибки:

Это странно, поскольку упоминаемые библиотеки у меня присутствовали в папке ext. Оказывается, что все дело в неправильно прописанных путях в конфигурационном файле php.ini.

В нем нужно найти раздел «Paths and Directories» и исправить путь, указанный в параметре extension_dir. Измените правые слэши на левосторонние и добавьте в начале адреса букву виртуального диска.

Если запустить PHP скрипт из CMD консоли опять не получается, тогда следует просмотреть все пути, упоминаемые в сообщении ошибки, и исправить их.

Если все хорошо

В командной строке системе нужно указать путь, где находится «экзешник» интерпретатора языка PHP. В Денвере он находится по этому пути: Z:\usr\local\php5

Здесь же расположен и глобальный файл конфигурации.

Запускаем командную строку Винды. Затем указываем системе путь к исполняемому файлу PHP. После чего задаем путь к нужному скрипту: Z:\usr\local\php5\php.exe Z:\home\localhost\www\test2.php

Но в итоге вы получите не совсем ожидаемый результат:

И все потому, что командная строка «не понимает» теги . Перед тем, как запустить PHP скрипт из командной строки, немного модифицируем код, чтобы он возвращал нам только текущее время без эффекта «часов».

Инструкция

Запустите файл с расширением *.vbs двойным кликом мыши или вызовите его по имени в консоли. Для этого зайдите в меню пуск/выполнить и наберите путь к необходимому файлу в открывшемся окошке. Это самый обычный текстовый документ, который легко можно править в . Данный метод самый понятный и простой, но иногда в силу определенных обстоятельств он не срабатывает (система не поддерживает формат, слетела кодировка и т.д.).

Теперь подробнее о скрипт ах, исполняемых сервером.
Установить веб-сервер можно и на своём компьютере. Ему будет не нужно даже соединение с - такой сервер называется «локальным». Это очень удобно для написания и скрипт ов на серверных языках (php, perl, и т.д.). В сети можно найти дистрибутивы (комплекты для установки) как платных, так и бесплатных серверов для персонального использования - например, Zend, Денвер, XAMPP, AppServ и т.д. Но если постоянный доступ в интернет - не проблема, то можно обойтись без , а полнообъёмным веб-сервером какого-либо хостинг-провайдера. Обычно эта услуга платная, но не очень дорогая. Зато вы будете иметь возможность пользоваться массой дополнительных модулей, плагинов, обработчиков статистики и других полезностей ничуть не заботясь об их установке и поддержании в рабочем состоянии.

И, наконец, о сценариях, исполняемых .
Что касается клиентских скрипт ов, то мы можем написать и запустить простейший из них прямо сейчас, ничего не покупая, не устанавливая и не запуская. Делаем так: первым делом открываем любой текстовый редактор, например блокнот. Пишем в нём всего 3 строки кода:
alert("JavaScript запущен!")
Теперь сохраняем этот код в файле с расширением html (например, js-test.html) и запускаем как обычно - двойным щелчком мыши. По расширению html (HyperText Markup Language - "язык разметки гипертекста") операционная система тип файла и запустит назначенную для запуска таких файлов программу - это браузер. А интерпретатор языка в браузере прочтёт и исполнит сценарий. Результат будет выглядеть, как на изображении.

Видео по теме

Обратите внимание

Как видите здесь нет ничего особо сложного, всего лишь последовательность системных команд, которую можно с легкостью набрать и в командной строке системной оболочки или в терминале. Преимущество написания скриптов в том, что вам не придется набирать необходимую последовательность команд вручную, достаточно просто запустить скрипт.

Написать или подобрать полезный веб-скрипт – это полдела, надо ещё найти способ его выполнить. Давайте рассмотрим подробнее, что нужно для исполнения наиболее распространённых типов скрипт ов.

Инструкция

Обязательным условием выполнения любого скрипт а (то есть сценария), естественно, является наличие самого исполнителя. Применительно к языкам -программирования таким исполнителем будет интерпретатор скрипт ового языка. В зависимости от того, где должен исполняться сценарий, интерпретатор языка может быть либо частью серверного программного обеспечения, либо частью программного кода браузера. Поэтому чтобы выполнить любой серверный скрипт (например, php- или perl-скрипт ) необходимо иметь запущенный сервер. Сервер можно подобрать в сети и у себя в . Очень популярен, к примеру, среди русскоязычных программистов из-за своей относительной простоты и бесплатности серверного программного обеспечения под названием «Денвер». А можно не морочиться с установкой у себя, а воспользоваться услугами хостинг-провайдера. Провайдер даст вам доступ к , а все заботы по его поддержанию и обслуживанию вас не будут касаться. Обычно такие платны, но не дороги.

По- обстоит дело с «клиентскими» скрипт ами. Это сценарии, которые должны выполняться прямо в . Чтобы выполнить такой скрипт , написанный, например, на языке JavaScript кроме браузера да простого текстового редактора (подойдёт стандартный блокнот) ничего больше не требуется. Вот, к примеру, простейший скрипт : var now = new Date();
document.write ("Этот скрипт выплнен в " + now.getHours() + " часов " + now.getMinutes() + " минут");Чтобы его выполнить, достаточно сохранить этот код в файле с расширением html (например, test.html) а затем запустить двойным щелчком мыши. Расширение html (HyperText Markup Language - «язык разметки гипертекста») в операционной системе зарезервировано за файлами, содержащими веб-страницы. Поэтому ОС запустит ваш браузер и передаст ему адрес этого файла, а браузер распознает скрипт , прочтёт и выполнит его сценарий. В результате мы увидим такую же простую, как и скрипт в ней содержащийся:

Видео по теме

Скрипты (или сценарии) призваны облегчить пользователю выполнение повторяющихся действий. Процедура запуска скрипта является стандартной операцией и не предполагает углубленных познаний ресурсов компьютера или изучения специальных языков программирования.

Инструкция

Нажмите кнопку «Пуск» для вызова главного меню системы и перейдите в пункт «Выполнить» для инициации процедуры запуска скрипта через консоль.

Введите значение cmd в поле «Открыть» и нажмите кнопку OK для подтверждения запуска инструмента командной строки.

Ознакомьтесь с возможными командами консоли. Для получения информации введите значение ntcmds в текстовое поле командной строки и нажмите функциональную клавишу Enter для подтверждения выполнения команды.

Используйте значение cd для введения команды запуска выбранного скрипта. Для этого укажите в команде путь к месту сохранения выбранного файла: cd c:script. Затем нажмите функциональную клавишу Enter для подтверждения своего выбора.

Укажите имя необходимого скрипта в текстовом поле инструмента «Командная строка» и повторите нажатие функциональной клавиши Enter для применения выбранных изменений.

Загрузите и установите на компьютер программу Active Pearl для упрощения запуска выбранных скриптов.

Создайте копию необходимого скрипта и сохраните ее в файле с расширением *.pl.

Выполните двойной клик мыши на сохраненном файле для запуска выбранного скрипта или вернитесь в консоль Windows для выполнения альтернативного метода запуска.

Введите значение c:perlinperl.exe имя_скрипта.pl в текстовое поле командной строки и нажмите функциональную клавишу Enter для подтверждения выполнения команды запуска выбранного скрипта. В этом случае c:perlinperl.exe - полный путь к интерпретатору Active Perl, установленному раньше, а имя_скрпта.pl - сохраненный файл с нужным расширением.

Видео по теме

Полезный совет

Встроенным средством для управления скриптами является Windows Script Host (WSH), представляющий из себя набор инструментов для запуска скриптов. Встроенными интерпретаторами скриптов являются VBScipt и JScript. Первый предполагает работу через графический интерфейс системы, второй - через инструмент командной строки.

Источники:

  • Как запускать скрипты через консоль
  • Как запускать Perl скрипты под Windows

При наличии навыка управлять консольным приложением можно эффективнее, чем графическим. Такие приложения существуют для всех распространенных операционных систем, включая Linux и Windows.

Инструкция

Запустить консольное приложение в Linux можно в обычном и полноэкранном режиме. В первом случае для этого потребуется запустить эмулятор консоли. Для этого нажмите на кнопку вызова меню, которая в KDE выглядит как шестерня, в Gnome - как ладонь, а в других графических интерфейсах может иметь иной вид. В меню найдите приложение xterm, nxterm, Konsole или аналогичное. На экране появится эмулятор консоли с командной строкой. Если вы желаете запустить программу не от своего имени, а от имени другого пользователя, введите login, после чего наберите имя и пароль. Чтобы снова получить возможность запускать программы от своего имени, введите logout.

Для перехода в полноэкранную консоль нажмите Ctrl+Alt+F2. Введите логин и пароль, и появится командная строка. Вернуться обратно в графический режим можно, нажав Alt+F5 либо Alt+F7 (в зависимости от дистрибутива).

В Windows для запуска командной строки нажмите кнопку Пуск, найдите в меню пункт Выполнить и введите имя исполняемого файла - cmd. Откроется окно с командной строкой. Нажатием сочетания клавиш Ctrl+Enter можно переключаться между обычным и полноэкранным режимом.

В простейшем случае, шелл скрипт (shell script) -- это ни что иное, как простая последовательность команд системы, записанная в простой текстовый файл. Создание скриптов поможет сохранить ваше время и силы, которые тратятся на ввод последовательности команд всякий раз, когда необходимо их выполнить. Например:

Шелл скрипт для очистки лог-файлов в /var/log
  • # cleanup
  • cd / var/ log
  • cat / dev/ null > messages
  • cat / dev/ null > wtmp
  • echo "Лог-файлы очищены."
  • Как видите здесь нет ничего особо сложного, всего лишь последовательность системных команд, которую можно с легкостью набрать и в командной строке системной оболочки или в терминале. Преимущество написания скриптов в том, что вам не придется набирать необходимую последовательность команд вручную, достаточно просто запустить скрипт. Кроме того, любой скрипт можно изменить и использовать для других целей.

    Sha-bang

    Sha-bang - это двухбайтовая последовательность #! , после которой указывается, какой интерпретатор необходимо использовать для запуска скрипта, интерпретации и выполнения команд. В качестве интерпретатора может выступать как одна из системных оболочек (см. файл /etc/shells ) например bash или csh так и любой другой интерпретатор команд или просто утилита. Вот несколько примеров маркера sha-bang :

    #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/tcl #!/bin/sed -f #!/usr/awk -f

    Каждая, из приведенных выше сигнатур, вызывает определенный интерпретатор, будь то /bin/sh -- командный интерпретатор по-умолчанию (bash для Linux-систем), либо иной. При переносе сценариев с сигнатурой #!/bin/sh на другие , где в качестве командного интерпретатора установлена другая системная оболочка, вы можете лишиться некоторых функциональных возможностей, присущих bash . Поэтому такие сценарии должны быть POSIX совместимыми.

    P ortable O perating S ystem I nterface, попытка стандартизации UNIX -подобных операционных систем.

    Если кроме первой строки, встречаются другие аналогичные строки, они будут восприняты как обычный комментарий.

  • #!/bin/bash
  • echo "Первая часть сценария."
  • a =1
  • #!/bin/bash
  • # Это *НЕ* означает запуск нового сценария.
  • echo "Вторая часть сценария."
  • echo $a # Значение переменной $a осталось равно 1.
  • Обратите внимание на то, что сигнатура должна указывать правильный путь к интерпретатору, в противном случае вы получите сообщение об ошибке -- как правило это "Command not found".

    Сигнатуру #! можно не указывать, если вы не используете команд специфичных для какого-то конкретного интерпретатора. Например как в расширенной версии скрипте, представленной ниже. Здесь используется специфическая конструкция присвоения значения переменной lines=50 .

    Еще раз замечу, что сигнатура #!/bin/sh вызывает командный интерпретатор по-умолчанию -- /bin/bash в Linux-системах.

    Расширенная версия предыдущего шелл скрипта
  • #!/bin/bash
  • # cleanup, version 2
  • # Для работы сценария требуются права root.
  • LOG_DIR =/ var/ log
  • ROOT_UID =0 # Только пользователь с $UID 0 имеет привилегии root.
  • LINES =50 # Количество сохраняемых строк по-умолчанию.
  • E_XCD =66 # Невозможно сменить каталог?
  • E_NOTROOT =67 # Признак отсутствия root-привилегий.
  • if [ "$UID " -ne "$ROOT_UID " ]
  • then
  • echo "Для работы сценария требуются права root."
  • exit $E_NOTROOT
  • if [ -n "$1" ]
  • # Проверка наличия аргумента командной строки.
  • then
  • lines =$1
  • else
  • lines =$LINES # Значение по-умолчанию, если число не задано в командной строке
  • # Stephane Chazelas предложил следующее,
  • #+ для проверки корректности аргумента, переданного из командной строки,
  • #+ правда это достаточно сложно для данного руководства.
  • # E_WRONGARGS=65 # Не числовой аргумент
  • # case "$1" in
  • # "") lines=50;;
  • # *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
  • # *) lines=$1;;
  • # esac
  • #* Конец проверки корректности аргумента
  • cd $LOG_DIR
  • if [ ` pwd ` ! = "$LOG_DIR " ] # или if [ "$PWD" != "$LOG_DIR" ]
  • # Не в /var/log?
  • then
  • echo "Невозможно перейти в каталог $LOG_DIR ."
  • exit $E_XCD
  • fi # Проверка каталога перед очисткой лог-файлов.
  • # более эффективный вариант:
  • # cd /var/log || {
  • # echo "Невозможно перейти в требуемый каталог." >&2
  • # exit $E_XCD;
  • tail -$lines messages > mesg.temp # Сохранить последние строки в лог-файле.
  • mv mesg.temp messages
  • # cat /dev/null > messages
  • #* Необходимость этой команды отпала, поскольку очистка выполняется выше.
  • cat / dev/ null > wtmp # команды ": > wtmp" и "> wtmp" имеют тот же эффект.
  • echo "Лог-файлы очищены."
  • exit 0
  • # Возвращаемое значение 0
  • #+ указывает на успешное завершение работы сценария.
  • Если вам не нужно целиком вычищать системные логи, обратите внимание на приведенный выше скрипт. Здесь сохраняются последние несколько строк (по-умолчанию -- 50).

    Запуск скриптов

    Запустить скрипт системной оболочки можно командой sh scriptname или bash scriptname . Более удобный вариант -- сделать файл скрипта исполняемым, командой chmod .

    Chmod 555 scriptname # установить права на чтение/исполнение любому пользователю в системе.

    Chmod +rx scriptname # установить права на чтение/исполнение любому пользователю в системе chmod u+rx scriptname # установить права на чтение/исполнение только владельцу скрипта

    После того, как вы сделаете файл сценария исполняемым, вы можете запустить его примерно такой командой ./scriptname . При этом, если текст скрипта начинается с корректной сигнатуры sha-bang , для выполнения данного скрипта будет вызван соответствующий интерпретатор.

    И наконец, завершив отладку сценария, вы можете поместить его в каталог /usr/local/bin (естественно, что для этого вы должны обладать правами root), чтобы сделать его доступным для себя и других пользователей системы. После этого сценарий можно вызвать, просто напечатав название файла в командной строке и нажав ENTER .