LinuxForum.Fans
Тема

Не выполняется мой скрипт в автозагрузке

Автор: allflow 17 сообщений 4066 просмотров
#225023

Не выполняется мой скрипт в автозагрузке

[console]startpar: service(s) returned failure: apache2-tmpfs ... failed![/console]

Скрипт вот:

text
#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          apache2-tmpfs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Should-Start:
# Should-Stop:
# X-Start-Before:    apache2
# X-Stop-After:      apache2
# Short-Description: Create /var/log/apache2/error.log on tmpfs at startup
# Description:       Create /var/log/apache2/error.log needed by Apache.
### END INIT INFO

# # main() # case "${1:-''}" in 'start') # create the /var/log/apache2/error.log needed by apache mkdir /var/log/apache2 chmod 777 /var/log/apache2 touch /var/log/apache2/error.log chmod 777 /var/log/apache2/error.log ;; 'stop') ;; 'restart') ;; 'reload'|'force-reload') ;; 'status') ;; *) echo "Usage: $SELF start" exit 1 ;; esac

Добавлял так:
1. на виндовой машине скопипастил с форума в текстовый файл.
2. скоприровал в /etc/init.d
3.
[console]
# chmod +x /etc/init.d/apache2-tmpfs
# update-rc.d apache2-tmpfs defaults 90 10[/console]
при попытке запустить руками
[console]# /etc/init.d/apache2-tmpfs start
-bash: /etc/init.d/apache2-tmpfs: -bash^M: d interpreter: No such file or directory[/console]

мысли есть?

а вообще как можно отладить скрипт при загрузке, где должен быть лог?

#225025
allflow написал:
мысли есть?

Скорее всего, вы сохранили файл с переносами строк, как в Windows :O
Покажите

text

cat -A /etc/init.d/apache2-tmpfs 
#225028

Попробуйте сделать так:

text

mv /etc/init.d/apache2-tmpfs /etc/init.d/apache2-tmpfs.bak

Затем так

text

sed 's/\r//g' /etc/init.d/apache2-tmpfs.bak > /etc/init.d/apache2-tmpfs

...или так

text

tr -d '\r' < /etc/init.d/apache2-tmpfs.bak > /etc/init.d/apache2-tmpfs
#225035
allflow написал:
text
mkdir /var/log/apache2 
chmod 777 /var/log/apache2 
touch /var/log/apache2/error.log 
chmod 777 /var/log/apache2/error.log

Лучше как-то так

text
mkdir -p /var/log/apache2 
touch /var/log/apache2/error.log 
chown -R apache:apache /var/log/apache2
chmod 664 /var/log/apache2/error.log

P.S. apache:apache — уточните, как называются владелец и группа, с правами которых запускается веб-сервер.

#225036

www-data вроде.

#225038

И ещё вопрос в контексте данной темы — а зачем самостоятельно создавать этот лог-файл, разве Apache не умеет? oO

#225042

Затем так

text

sed 's/\r//g' /etc/init.d/apache2-tmpfs.bak > /etc/init.d/apache2-tmpfs

Спасибо помогло!

Lupo Alberto написал:
И ещё вопрос в контексте данной темы — а зачем самостоятельно создавать этот лог-файл, разве Apache не умеет? oO

пытаюсь сделать это:

http://bernaerts.dyndns.org/linux/53-debian-server-compact-flash
http://bernaerts.dyndns.org/linux/50-compactflash-tune-apache

#225044
Lupo Alberto написал:
Скорее всего, вы сохранили файл с переносами строк, как в Windows

ну и что? \r это пробельный символ, и от него обычно ничего не зависит.

Lupo Alberto написал:
а зачем самостоятельно создавать этот лог-файл, разве Apache не умеет?

умеет, но не может. права у /var/log/ 755 root:root, а апач работает от юзера.

#225045
allflow написал:
chmod 777 /var/log/apache2/error.log

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

text

chmod 640 /var/log/apache2/error.log
#225046
drBatty написал:
[quote=Lupo Alberto]Скорее всего, вы сохранили файл с переносами строк, как в Windows

ну и что? \r это пробельный символ, и от него обычно ничего не зависит.[/quote]
так ведь помогло! )

#225047
drBatty написал:
ну и что? \r это пробельный символ, и от него обычно ничего не зависит.

drBatty, я, как тот акын — что вижу, то пою wink
Запомнилась команда и уже не раз выручала.

#225049
Lupo Alberto написал:
лог файлу ни к чему быть исполняемым.

да, РЕШЕТО.

#225053
allflow написал:
так ведь помогло! )

угу. потому-что
1. имена файлов (да и вообще любые строки) надо заключать в кавычки
2. файл можно запускать не как ./script, а так
[console]$ sh script[/console]
тут и права исполнения не нужны.

#225060

Всем спасибо!
Блин, да... допупа мне еще матчасть учить!! ))

может еще подскажите где про консоль чёнить путного почитать - типа можно ли в ней копипастить и проч...?

#225063
allflow написал:
типа можно ли в ней копипастить и проч...?

Шутку оценил :lol:

allflow написал:
может еще подскажите где про консоль чёнить путного почитать

Если вы подразумеваете работу по созданию скриптов — http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html
Если же вам нужно просто иметь возможность в «чистой» консоли копировать и вставлять текст, то установите из репозиториев своего дистрибутива пакет [url=www.nico.schottelius.org/software/gpm/]gpm[/url].

#225068
drBatty написал:
ну и что? \r это пробельный символ

И на самом деле этот символ обозначает «возврат каретки» — CR

В UNIX перевод строки состоит из одного символа LF (0x0A), в Mac OS — из символа CR (0x0D), а в DOS и Microsoft Windows перевод строки кодируется последовательностью двух символов: CR и LF.
#225089
allflow написал:
типа можно ли в ней копипастить

можно.

Lupo Alberto написал:
И на самом деле этот символ обозначает «возврат каретки» — CR

важно то, что bash его воспринимает как пробел обычно. Если он конечно не в имени файла. А тут в первой строчке имя файла, и в кавычки его не заключить.

Войдите или зарегистрируйтесь, чтобы ответить.