Как написать сценарий

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

patrik
Сообщения: 44

Как написать сценарий

Сообщение patrik »

Столкнулся со следущей трудностью, установил apache все вроде ничего, но надоело постояно лезть в консоль чтобы выполнить команду sudo /etc/init.d/apache2 start , как написать или на чем сценарий чтобы он когда мне надо запускал и отключал apache. В окнах делал с помощью bat, а в Linux делается я не знаю :(
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Как написать сценарий

Сообщение Uncle_Theodore »

patrik писал(а):
10.05.2007 00:13
Столкнулся со следущей трудностью, установил apache все вроде ничего, но надоело постояно лезть в консоль чтобы выполнить команду sudo /etc/init.d/apache2 start , как написать или на чем сценарий чтобы он когда мне надо запускал и отключал apache. В окнах делал с помощью bat, а в Linux делается я не знаю :(

Я не понимаю, а при чем тут сценарий (скрипт, в смысле)? Надо, наверное, просто ярлычок сделать на рабочий стол, да и прописать туда нужную команду?
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Как написать сценарий

Сообщение nesk »

Хочешь что бы apache стартовал при запуске системы
какой дистрибутив?

посмотри
man update-rc.d
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Как написать сценарий

Сообщение nesk »

Кое что о процессе загрузки linux

ядро загружает свою внутреннюю структуру.
далее запускается процесс init.
init прочитывает файл `/etc/inittab'. В этом файле указан уровень выполнения системы (т.е. консольный, графический, однопользовательский...). Посмотрите сами файл `/etc/initab' и увидите, что происходит на разных уровнях выполнения.
потом init запускает скрипт (обычно `/etc/rc.d/rc.modules'), который автоматически подгружает модули ядра. (Хм... Не знаю, какой дистрибутив взят за основу при описании, но в дистрибутивах RedHat, Mandrake, ALTLinux и ASPLinux загрузка модулей размещена в `/etc/rc.d/rc.sysinit' Прим.ред.)
в зависимости от уровня выполнения (указанного в `/etc/inittab'), init запускает все службы, указанные в соответствующем данному уровню каталоге. Например, если уровень выполнения равен 5, то выполняются все скрипты в каталоге `/etc/rc.d/rc5.d/'.
затем init запускает другой скрипт (обычно `/etc/rc.d/rc.local') . В нём пользователь может указать какие команды он хочет добавить в автозагрузку. Допустим, если вы захотите добавить в автозагрузку аудио-драйвер OSS, то можете сделать это здесь. А пользователи старых версий дистрибутивов Mandrake могут подредактировать этот файл чтобы избавиться от уродливого изображения пингвина при загрузке... (Чтобы убрать страшного текстового Тукса в приглашении системы, пользователи дистрибутивов ALT Linux должны удалить пакет welcome2l. Прим.ред.)
Конечно, всё это описано очень упрощённо, но, надеюсь, что основной смысл вы поняли. Если вы взгляните на скрипты в каталоге `/etc/rc.d/rc5.d' (или на любом другом уровне выполнения), то заметите, что все имена скриптов начинаются с букв S (что значит Start), или K (что значит Kill для остановки), за которыми следует цифра. Эта цифра определяет порядок запуска скрипта. Разные дистрибутивы запускают разный набор сервисов или демонов на этапе загрузки, и хотя они автоматически покрывают все потребности большинства пользователей, это также значит, что запускаются и некоторые ненужные процессы. А лишние процессы и приводят к долгой загрузке, недостатке памяти и возможным уязвимостям в системе. К счастью, процесс очистки загрузочного скрипта очень прост: самое трудное в нём это разобраться что есть что, и что именно вам не нужно. Для удобства ниже приведён перечень наиболее общих для всех систем сервисов с их кратким описанием. Также не забывайте какие именно изменения вы сделали, чтобы потом не гадать, какой же важный демон вы отключили... (список любезно предоставлен Стэном и Питером Клаймасом из их Руководства Администратора Линукс для новичков).


http://gazette.linux.ru.net/lg88/shekhar.html
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Как написать сценарий

Сообщение Uncle_Theodore »

nesk писал(а):
10.05.2007 01:38
Хочешь что бы apache стартовал при запуске системы
какой дистрибутив?

посмотри
man update-rc.d

Он, кажется, ясно сказал, что хочет запускать и останавливать Апач по желанию, а не вместе с загрузкой системы. Нафига офтопик разводить? Что это за Авраам родил Иссака у Вас тут?
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Как написать сценарий

Сообщение nesk »

да, глюк :blush:

пойду спать
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
csx
Сообщения: 302
Статус: Сыч Домовый
ОС: Что сломалось, то и чиним...

Re: Как написать сценарий

Сообщение csx »

patrik, в линуксе bat называются sh.
Все то же самое, просто набор команд.
Поищи в интернете про shell скрипты.
-- Как называется болезнь когда всё время по телефону разговариваешь?
-- Техподдержка...
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Как написать сценарий

Сообщение TwisT »

Пошаговое руководство для начинающих:
1. Открываем свой любимый редактор, в КДЕ можна Kate
2.Создаем новый файл и пишем туда

Код: Выделить всё

#!/bin/sh
sudo /etc/init.d/apache2 start

3. Сохраняем как apache-start.sh
4. Создаем новый файл, и пишем в него

Код: Выделить всё

#!/bin/sh
sudo /etc/init.d/apache2 stop

4. Сохраняем его как apache-stop.sh
5. Делаем наши скрипты исполняемыми

Код: Выделить всё

# chmod a+x  apache-start.sh apache-stop.sh

5. Делаем в КДЕ ссылочки на эти два файла,
для этого нужно кликануть правой кнопкой мыши
и найти соответствующий пункт в меню
6. Теперь можем кликать на ссылочки и управлять нашим апачем
P.S: Я уже давно Х-ов не видел, работа, живу в терминале, поэтому более точно сказать не могу
Linux user #432536.
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Как написать сценарий

Сообщение TwisT »

Я тут внес изменения, в консоли:

Код: Выделить всё

#man sudo

Если с англицким грабли можно поставить русские маны или в инете надыбать.
Вообще, все зависит от настроек, которые указаны в конфигурационные файлах по умолчанию, у меня в Slackware ,например, вообще голяк. Для того чтобы пользоваться sudo пользователем который не является админом(т.е. root)
нужно отредактировать файл /etc/sudousers
для этого от root в консоли:

откроется файл в редакторе vi и неплохо бы знать, как работать с редактором vi или vim
В принципе в КДЕ можно любым открыть, главное от root
Дописываем следующее:

Код: Выделить всё

%users  localhost=/bin/sh /etc/init.d/apache2 *


Это позволяет все пользователям из группы users выполнить команду
/bin/sh /etc/init.d/apache2 с любым параметром (например, start или stop), хотя
можно указать команду явно, например, вместо верхней строчки написать следущее
%users localhost=/bin/sh /etc/init.d/apache2 start,/bin/sh /etc/init.d/apache2 stop

Параметр localhost указывает, что нашу команду может выполнить пользователь
работающие непосредственно с компом, а работающий удаленно не сможет, если нужно управлять
апачем через ssh например нужно вместо localhost написать ALL, например:

Код: Выделить всё

%users  ALL=/bin/sh /etc/init.d/apache2 start,/bin/sh /etc/init.d/apache2 stop


Прекрасно, теперь нам осталось отредактировать наши скрипты

Код: Выделить всё

1 Скрипт:
#!/bin/sh
sudo =/bin/sh /etc/init.d/apache2 start
2 Скрипт:
#!/bin/sh
sudo =/bin/sh /etc/init.d/apache2 stop

Не забудь сделать их исполняемыми. Я проделал все, но только для работы с sendmail, все прекрасно
работает.
Удачи!!!
Linux user #432536.
Спасибо сказали: