LINUX.ORG.RU
ФорумAdmin

Помогите новичку. Автозапуск скрипта.

 , ,


1

1

Добрый день. Несколько дней в муках пытаюсь добавить скрипт в автозапуск init.d.

У меня в папке назначания лежит скрипт erlang.sh с таким содержимым

#! /bin/bash erl -detached -s fz_worker start

я пытаюсь при запуске системы запускать его таким образом. в init.d разместил другой скрипт со следующим содержимым

#! /bin/bash
### BEGIN INIT INFO
# Provides: erlang
# Required-Start: $httpd
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop erlang
# Description: MAZAFAZA!!
### END INIT INFO
pushd /var/www/ratio.duckdns.org/erl
sudo ./erlang.sh > erl.log1
popd

chkconfig выдает все ок, лог файл создается, тоесть оно его запускает. Но сам процесс erl не запускается. Возможно каких-то привилегий не хватает? Оба скрипта принадлежат руту, chmod 4755

Если запустить скрипт из init.d вручную из под рута, то все запускается и работает. Само не хочет :(

Уже и не припомню все способы, которыми пытался запустить. Добавлял оба скрипта в sudoers, пытался указывать полные пути, соединял все в один скрипт, делал cd, pushd внутри скрипта. Помогите, добрые админы. Все это безобразие на Centos 6



Последнее исправление: booksmaster (всего исправлений: 3)

Ответ на: комментарий от booksmaster

Если запустить скрипт руками из init.d, то все ок. Автозапуск все еще не работает.

booksmaster
() автор топика
Ответ на: комментарий от leader32

Я правильно понимаю? set +x это включаем дебаг?

вот это не понятно (( set это переменную среды делаем? скрипт надо тут заменить на название моего скрипта? set >>/root/init.d_script.log, set 2>>/root/init.d_script.log

и запись set >>/root/init.d_script.log set 2>>/root/init.d_script.log

это вывод логирования какого-то? сори, что не понимаю (( просто не хочу какую-то хрень вписать и потом не понимать почему не работает (( спасибо

booksmaster
() автор топика
Ответ на: комментарий от booksmaster

set >> ... просто редиректит стандартный вывод в файл, вкупе с set +x ты видишь, на какой команде стопорится твой скрипт. А лог-файл выбираешь куда тебе удобнее.

leader32
()
Ответ на: комментарий от leader32

После выполнения ыуе +x set >>/root/init.d_script.log set 2>>/root/init.d_script.log и перезагрузки в лог файле следующее

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(1)-release'
COLORS=/etc/DIR_COLORS
COLUMNS=115
CVS_RSH=ssh
DIRSTACK=()
EUID=0
GROUPS=()
G_BROKEN_FILENAMES=1
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
HOSTNAME=braincellgames
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=en_US.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LINES=62
LOGNAME=root
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:'
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/spool/mail/root
MAILCHECK=60
MC_USER=root
OLDPWD=/etc/init.d
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PIPESTATUS=([0]="0")
PPID=1688
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
PS1='[\u@\h \W]\$ '
PS2='> '
PS4='+ '
PWD=/var/www/ratio.duckdns.org
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SSH_CLIENT='192.168.1.139 55204 22'
SSH_CONNECTION='192.168.1.139 55204 192.168.1.109 22'
SSH_TTY=/dev/pts/0
TERM=xterm
UID=0
USER=root
_=+x
colors=/etc/DIR_COLORS

ЗЫ почему тут

не работает ?? Вываливает все без переносов одной строкой ((

booksmaster
() автор топика
Ответ на: комментарий от leader32

вот это все так же вылезает, когда делаю set 2>>/root/init.d_script.log я думаю, это оно и записалось туда.

Так эти установки после перезагрузки разве сохраняются?

booksmaster
() автор топика
Ответ на: комментарий от booksmaster

Подправь немного init-скрипт, добавь полные пути в оба скрипта, и убери там sudo, оно так и так от рута запускается

Грохай лог-файл перед перезагрузкой

leader32
()
Ответ на: комментарий от leader32

Все сделал, если лог убивать перед перезагрузкой, то он не появляется потом. Я думаю, что эти настройки не сохраняются после перезагрузки. Возможно стоит это все в скрипт добавить. Ща попробую.

booksmaster
() автор топика
Ответ на: комментарий от leader32

после перезагрузки в логе такое:

BASH=/bin/bash
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="1")
BASH_ARGV=([0]="start")
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/etc/rc3.d/S50erlang")
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(1)-release'
CONSOLETYPE=vt
DIRSTACK=()
EUID=0
GROUPS=()
HOSTNAME=braincellgames
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=en_US.UTF-8
LANGSH_SOURCED=1
MACHTYPE=x86_64-redhat-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PIPESTATUS=([0]="0")
PPID=994
PREVLEVEL=N
PS4='+ '
PWD=/
RUNLEVEL=3
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
TERM=linux
UID=0
UPSTART_EVENTS=runlevel
UPSTART_INSTANCE=
UPSTART_JOB=rc
_=+x
previous=N
runlevel=3

booksmaster
() автор топика
Ответ на: комментарий от booksmaster

А как тогда он у тебя создался в первый раз? От рута же запускается.

leader32
()
Ответ на: комментарий от leader32

в начале

вот так ща выглядит скрипт

#! /bin/bash
### BEGIN INIT INFO
# Provides: erlang
# Required-Start: $httpd
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop erlang
# Description: MAZAFAZA!!
### END INIT INFO
echo mark1
set +x
echo mark2
set >>/root/init.d_script.log
echo mark3
sleep 10
echo mark4
pushd /var/www/ratio.duckdns.org/erl
echo before sudo
sudo ./erlang.sh > erl.log1
echo after sudo

booksmaster
() автор топика
Ответ на: комментарий от leader32

в логе этих всех echo нету (( только дублируется 3й раз уже тот же самы env который я не знаю как туда попадает.

booksmaster
() автор топика
Ответ на: комментарий от leader32

хотя есть одно изменение

BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/etc/rc3.d/S50erlang")
BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.1.2(1)-release'
CONSOLETYPE=vt
DIRSTACK=()
EUID=0
GROUPS=()
HOSTNAME=braincellgames
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=en_US.UTF-8
LANGSH_SOURCED=1
MACHTYPE=x86_64-redhat-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PIPESTATUS=([0]="0")
PPID=996
PREVLEVEL=N
PS4='+ '
PWD=/
RUNLEVEL=3
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
TERM=linux
UID=0
UPSTART_EVENTS=runlevel
UPSTART_INSTANCE=
UPSTART_JOB=rc
_=mark2
previous=N
runlevel=3

вот _=mark2 хотя я не знаю, что это значит

booksmaster
() автор топика
Ответ на: комментарий от leader32

разобрался. не знаю, что такое tty но его пришлось отключить в файле sudoers. Я догадываюсь, что безопасность в некотором роде пострадала, но это домашний серв, так что норм. Надо будет почитать, что оно за зверь.

booksmaster
() автор топика
Ответ на: комментарий от booksmaster

А зачем ты вообще sudo вызываешь? Инит скрипт запускается от рута, а ты уже указываешь дальше, от какого непривилегированного пользователя запускать.

А вообще, сделай нормальный init-скрипт. В том виде, который у тебя есть, проще в /etc/rc.local впихнуть однострочник через nohup.

Вот посоны с nginx запилили, глянь https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/

leader32
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.