Ubuntu

無法手動執行 rc.local 並且不會在 ubuntu 上自動執行

  • March 30, 2013

這是一個非常簡單的。我在這裡創建了一個 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 預設使用 dash 作為 Shell,而 dash 不知道關鍵字function.

嘗試將 shebang 更改為

#!/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 或類似的東西。

引用自:https://serverfault.com/questions/491092