1. 程式人生 > >Ubuntu中rc.local 中命令不執行

Ubuntu中rc.local 中命令不執行

這兩天需要在Ubuntu中配置開機啟動的命令,有很多方式,在rc.local中配置是比較簡單方便的一種,所以打算使用rc.local的方式進行配置。

我配置完後,卻發現配置的sh指令碼始終不執行,開始懷疑是rc.local沒執行,用echo列印了些資訊,發現都執行了。

這就造成了我的困惑,網上查了好多解決方案,試了好多種方法,最終發現是有shell的問題造成的。有些命令需要在bash shell中執行,而不能在dash中執行。

從Ubuntu 6.10開始,預設使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell). 但Login Shell還是bash。

使用命令查了下,看到/bin/sh連結到了/bin/dash(如下),而/etc/rc.local指令碼中用的正是/bin/sh,導致命令無法執行。

[email protected]:~$ echo $SHELL

/bin/dash

[email protected]:~$ ls -al /bin/sh

lrwxrwxrwx 1 root root 4 10月 10 10:51 /bin/sh ->dash

[email protected]:~$ ls -al /bin/dash

-rwxr-xr-x 1 root root 121272  2月 19  2014 /bin/dash

解決方案:

1.將/etc/rc.local的命令改成更加相容的模式,將"#!/bin/sh"改為"#!/bin/bash" 

2.將/bin/sh重新連結到/bin/bash,方法如下:

方法一:終端執行 sudo dpkg-reconfigure dash,然後選擇 no.

方法二:重新進行軟連結,執行以下命令:

sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh

這樣就將/bin/sh連結到了/bin/bash。reboot系統後,命令正常執行。

非常感謝這個文件給我解決了問題,網址:http://www.cnblogs.com/liulanghe/p/3376380.html

最後需要注意一點,如果你在rc.local 中執行指令碼的話,別忘了使用sudo chmod +x 給指令碼增加執行許可權。有很多人可能會忽略這個問題。

相關推薦

Ubunturc.local 命令執行

這兩天需要在Ubuntu中配置開機啟動的命令,有很多方式,在rc.local中配置是比較簡單方便的一種,所以打算使用rc.local的方式進行配置。 我配置完後,卻發現配置的sh指令碼始終不執行,開始懷疑是rc.local沒執行,用echo列印了些資訊,發現都執行了。 這就

CentOS7rc.local的指令能生效問題。

問題:在系統中/etc/rc.local設定自啟動命令的時候,重啟計算機,檔案中的指令無法生效。 我這裡編譯安裝了一個mongodb資料庫的服務,然後修改了環境變數。寫入到了.bash_profile 檔案中,在shell中可以直接執行命令。 檢視檔案,檔案的命令也是正確的重啟後指令無法生效 一、在總結

解決linux下/etc/rc.local開機器執行的原因

啟動程序 排除 程序 配置 blog 解決 linux pos 執行 前不久因項目需要寫了開機啟動其他程序的shell腳本,因工作忙,調試完給了技術支持人員,也沒去註意過。 到後來,有幾臺服務器突然被重啟了,這時候領導問,怎麽開機啟動的腳本沒起作用,還被批了一頓,哎,做事虎

ubunturc.local執行問題

解決思路概括起來如下: 1.首先排除指令碼自身問題,可以手動點槓執行下試試, 2.指令碼確定沒問題後,放到開機啟動程式引用的路徑下,辦法如下 2.1.檢視系統的執行級別 2.2.到對應執行的rcX.d的目錄找到指向rc.local的軟連線,將rc.locad放到指向的地址,重啟後發現問題解決。

shell腳本判斷上一個命令是否執行成功

表示 tab 大於等於 fail code ucc 例如 p s 命令執行 2018-12-21 shell中使用符號“$?”來顯示上一條命令執行的返回值,如果為0則代表執行成功,其他表示失敗。結合if-else語句實現判斷上一個命令是否執行成功 示例如下: if

Ubuntu /etc/rc.local 存在

從Ubuntu16.10以後,這個檔案就不存在了 解決方案 新建這個檔案,加入以下程式碼,在exit 0 之前加入你想加(開機自啟)的東西 (注意不要包含有死迴圈的程式,否則會造成啟動失敗,請使用screen來讓他們在開機時執行) (如果已經發生了,使用可讀寫的單使用者模式修改這

Request 的回撥函式執行

在 scrapy 中, scrapy.Request(url, headers=self.header, callback=self.parse_detail) 除錯的時候,發現回撥函式 pa

容器rc.local,login shell, systemctl微妙關係

背景: 假設有這麼一個需求: 容器中能使用systemctl操作和檢視服務狀態 容器啟動時需獲取執行容器時傳入環境變數 實踐出真理 我們先寫一個獲取環境變數的簡單shell指令碼 # file name: env.sh #!/usr/bash

python模擬進行ssh命令執行

在進行socket程式設計的時候,可以實現遠端執行命令,然後返回相關的結果,但是這種。。。很容易就把伺服器搞掛了。 在這裡需要用到commands模組,commands模組中有一個方法為getstatusoutput,主要就是返回執行的返回碼和結果,如下所示: >&

crontab命令執行的問題排查

我們經常會遇到在crontab中建立了計劃任務,但是命令卻不執行的情況,遇到這種情況,可以按照如下思路進行排查: 1. 檢視crond服務是否開啟 service crond status 如果服務未開啟使用 service crond start命令啟用該服務 2. 檢

ubuntu新建組合用戶命令管用

inf upa groupadd alt .com 新用戶 什麽 通過 只有一個 當我們新建了組和用戶的時候發現一些命令不管用了,這是什麽問題呢。 一、解決方案。 通過以下命令添加組和用戶,切換到新用戶,發現命令不管用,只有一個$符號。 groupadd

Appium環境搭建時在cmd輸入appium-doctor命令,提示'appium-doctor' 是內部或外部命令,也是可執行的程式

Appium環境搭建時在cmd中輸入appium-doctor命令,提示’appium-doctor’ 不是內部或外部命令,也不是可執行的程式,如下圖所示:  解決方法: 將Appium安裝目錄中的.bin新增到環境變數Path中,例如: C:\Progr

spf13-vim 解決.vimrc.local某些命令無法執行(例如TAB設定)

     spf13-vim是一個方便進行VIM IDE開發環境配置的非常優秀的開源工具,根據github上的說明可以方便的進行一鍵安裝點選開啟連結。本人也是在同事的推薦下進行了安裝。 ———————————————————————————分割線———

cmd 連線mysql時報'mysql'是內部或外部命令,也是可執行的程式或批處理檔案,該怎麼辦?

假設安裝的mysql目錄是D:\MySQL\MySQL_Server_5.5\ 第一種方法:如果你開啟cmd後直接輸入mysql是不行的,需要配置mysql的環境變數,那麼就在環境變數中增加D:\MySQL\MySQL_Server_5.5\bin變數名稱可以隨便起, 操作

Appium環境搭建時在cmd輸入appium-doctor命令,提示'appium-doctor' 是內部或外部命令,也是可執行的程式

Appium環境搭建時在cmd中輸入appium-doctor命令,提示’appium-doctor’ 不是內部或外部命令,也不是可執行的程式,如下圖所示:  解決方法: 將Appium安裝目錄中的.b

init.rc的mount等命令執行時呼叫的原始碼位置

以mount命令為例 在Android啟動時,init程序會解析init.rc檔案,對於init.rc中定義的mount這個command,如 on fs     mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=200

關於cmd出現無法識別命令的問題(xx執行的程式是內部或外部命令,也是可執行的程式)

問題描述 最近發現在cmd上執行某指令的時候出現瞭如下描述的問題 ‘fsutil’ 不是內部或外部命令,也不是可執行的程式(當然其他形式也類似) 解決方法 這裡先說一下這個具體問題的解決方法 首先看到這個提示的第一反應就是環境變數是不是配置

【鋒利的jQuery】全局事件ajaxStart、ajaxStop執行

doc dem del loading hide 案例 var .ajax round 最近一直都在研究【鋒利的jQuery】,確實是一本好書,受益匪淺。但由於技術發展及版本更新等原因,裏面還是有些坑需要踩的。 比如:第六章七節中提到的全局事件ajaxStart、ajax

Ubuntusublime和Foxit Reader能使用中文輸入法解決方案

you ldconfig details com shu sudo directory upgrade 不能 雖然Ubuntu下面很多軟件同windows下一樣,但是經常會出現各種各樣的小問題,其中最讓人頭疼的是軟件中的輸入法問題。 sublime作為一個跨平臺的編輯軟件,

bash命令執行關系

bash多命令執行關系bash的多命令執行的邏輯關系; 1.命令替換 COMMAND1 $(COMMAND2)[root@localhost ~]# cp -a /etc /tmp/etc-$(date +‘%F-%T‘) [root@localhost ~]# ls /tmp etc-2