Назад | Перейти на главную страницу

Не могу запустить rc.local вручную и не запускается автоматически на ubuntu

Это довольно просто. Я создал здесь файл rc.local:

/etc/rc.local

Я сделал его исполняемым. Однако он не запускается, когда я загружаю сервер. Я вижу его в каталоге, и когда пытаюсь запустить его вручную, получаю следующее сообщение:

root@:/etc# rc.local
rc.local: command not found

Мой файл rc.local выглядит следующим образом:

#!/bin/sh -e

# FUNCTIONS
function setup_logs
{
    exec > >(tee -a /var/log/deploy.log)
    exec 2> >(tee -a /var/log/error.log)
}

# COMMANDS
setup_logs
apt-get update                              # Update aptitude list
apt-get -y dist-upgrade                     # Upgrade aptitude programs
cd /etc/spider && git pull                  # Update deployment code
cd /etc/code && git pull                    # Update library code
cd /etc/code && deployment.sh               # Run deployment script
exit 0

Да хоть убей, я не понимаю, в чем я ошибаюсь, может ли кто-нибудь мне помочь?

Ubuntu по умолчанию использует тире в качестве оболочки, а тире не знает ключевое слово function.

Попробуй сменить шебанг на

#!/bin/bash

и выполнить снова.

В соответствии с https://wiki.ubuntu.com/DashAsBinSh/#function , также должно помочь, если вы просто удалите слово function и напишите круглые скобки за именем функции:

setup_logs()    {
    exec > >(tee -a /var/log/deploy.log)
    exec 2> >(tee -a /var/log/error.log)
}

Убедитесь, что сценарий запуска находится в папке уровня запуска rc.

/etc/rc2.d/S22rc.local или что-то подобное.

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

Для OP вы были в / etc, и это исполняемый файл. Чтобы запустить его прямо здесь, поставьте перед ним косую черту, чтобы сказать: «Запустите его отсюда СЕЙЧАС», а не просто введите имя файла - это было похоже на «ok run rc.local, если вы можете найти его в своем $ ДОРОЖКА'.

введите 'echo $ PATH' в терминале, и вы начнете понимать, особенно если вы хотите освоить CLI

Теперь не начинайте помещать / etc в PATH; Я хотел, чтобы вы увидели, почему после исправления разрешений ничего не изменилось.