Я создал скрипт для запуска сервера (мой первый вопрос). Теперь я хочу, чтобы он запускался при загрузке системы и запускал определенный сервер. Что я должен сделать, чтобы сделать это?
Мои выводы говорят мне, чтобы поместить этот файл в папку /etc/init.d
, и он будет выполняться, когда система загрузится. Но я не могу понять, каким будет первый аргумент при запуске start
? Является ли это предопределенный где использовать в start
качестве $1
? Если я хочу иметь дело startall
, которое запустит все серверы в сценарии, то какими параметрами я могу управлять?
Мой скрипт такой:
#!/bin/bash
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart)"
;;
esac
linux
shell-script
centos-5
vijay.shad
источник
источник
Ответы:
/etc/init.d
каталог скриптов, в котором появляются исполняемые скрипты Однако для запуска сценариев в определенном порядке после запуска системы необходимо добавить файлы в/etc/rc#.d
каталог. Записи, которые появляются здесь, сообщают вашей системе, в каком порядке и на каком уровне запускаются сценарии уровня/etc/init.d
запуска. Число после rc указывает, на каком уровне запуска машина работает, согласно этой диаграмме:http://en.wikipedia.org/wiki/Runlevel
Так что если у вас есть:
Тогда вам нужны (пустые) файлы:
S означает начало, а K означает убить. Когда ваша машина запускается, система скажет: «А, я работаю на RunLevel 3, давайте перейдем к rc3.d, чтобы увидеть, какие сценарии в /etc/init.d должны быть запущены и в каком порядке». В этом случае система отсортирует по «S», а затем по номеру после «S» и выполнит «/etc/init.d/importantscript start». 20 только для целей заказа ... ваш сценарий будет работать после 'S19' и перед 'S21'. Вы можете создать эти файлы, просто выполнив:
sudo touch /etc/rc.d/rc3.d/S20importantscript
Вот также хорошее резюме: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
источник
Вы не должны - и не должны - создавать файлы в
/etc/rc.d/rcN.d/
; что вы должны сделать вместо этого, это поместить комментарий в вашем чтении сценария инициализациигде
NNN
есть множество уровней выполнения , в котором вы хотите сценарий активного (например,345
если он активен в уровне выполнения3
,4
и5
), а такжеA
иB
приоритеты запуска и остановки. Затемchkconfig --add foo
(при условии, что ваш скрипт названfoo
) создаст файлы/etc/rc.d/rcN.d/
с соответствующими именами.Затем вы можете использовать ,
service foo bar
чтобы отправитьbar
сообщение в скрипт (например,start
,stop
, что угодно , - вот где ваш$1
исходит от).источник
$ 1 - это аргумент командной строки, который передается вашему сценарию, это один из параметров start, stop или restart. В openSUSE я не помню, чтобы у меня была возможность передавать другие аргументы в сценарий при использовании редактора уровней запуска, поэтому я думаю, что это, вероятно, единственные, которые вы должны использовать.
Я не использую CentOS самостоятельно, но кажется, что программа для управления тем, что запускается на каком уровне запуска - ntsysv .
источник